skill-compile-to-wasm は何をしますか?
Claude Codeスキル:CとRustを最適化されたWebAssemblyモジュールにコンパイルします。ライブラリのラッピング(リアクターモード)、CLIツール(コマンドモード)、およびWasmtimeとChicoryを介したホスト消費をカバーします。
概要
このスキルは、CおよびRustのコードをWebAssembly(Wasm)にコンパイルするプロセスをガイドします。以下を含みます:
- リアクターモード: ライブラリをWasmモジュールとしてラップし、ホストから関数を呼び出せるようにします。
- コマンドモード: CLIツールをWasmモジュールとしてビルドし、コマンドラインから直接実行できるようにします。
- ホスト消費: 生成されたWasmモジュールをWasmtime(Rust)およびChicory(Java)ランタイムで使用する方法。
前提条件
- Claude Codeがインストールされていること。
- Cコンパイラ(
clangなど)またはRustツールチェーン(rustc、cargo)がインストールされていること。 - ターゲットアーキテクチャ用のWasmコンパイルツール(
wasm-pack、emscriptenなど)。
使用方法
Cのコンパイル
# CソースコードをWasmにコンパイル
clang --target=wasm32 -O3 -o module.wasm source.c
Rustのコンパイル
# RustプロジェクトをWasmにコンパイル
cargo build --target wasm32-unknown-unknown --release
リアクターモード(ライブラリのラッピング)
- エクスポートしたい関数をCまたはRustで定義します。
- コンパイル時に、ホストから呼び出し可能な関数をエクスポートするよう指定します。
コマンドモード(CLIツールのビルド)
main関数を含むプログラムを作成します。- コンパイル後、Wasmランタイムで直接実行できます。
ホスト消費
Wasmtime(Rust)
use wasmtime::{Engine, Module, Store, Linker};
let engine = Engine::default();
let module = Module::from_file(&engine, "module.wasm")?;
// モジュールをインスタンス化して関数を呼び出す
Chicory(Java)
import com.dylibso.chicory.runtime.Module;
import com.dylibso.chicory.wasm.types.Value;
var module = Module.builder("module.wasm").build();
var instance = module.instantiate();
// エクスポートされた関数を呼び出す
注意事項
- 最適化フラグ(
-O3など)を使用して、パフォーマンスを向上させてください。 - WASI APIを利用する場合は、適切なWASIサポートを含むランタイムを使用してください。
- モジュールのサイズとパフォーマンスのトレードオフを考慮してください。