Communityコーディング&開発github.com

andreaTP/skill-compile-to-wasm

CおよびRustを最適化されたWebAssemblyモジュールにコンパイルするためのClaude Codeスキル。ライブラリのラッピング(リアクターモード)、CLIツール(コマンドモード)、およびWasmtimeとChicoryを介したホスト消費をカバーします。

skill-compile-to-wasm とは?

このスキルは、開発者がCおよびRustのコードをWebAssembly(Wasm)にコンパイルするための包括的なガイドを提供します。リアクターモード(ライブラリのラッピング)とコマンドモード(CLIツールのビルド)の両方をサポートし、Wasmtime(Rustベースのランタイム)やChicory(Javaベースのランタイム)などの主要なWasmランタイムでの消費に対応します。スキルは、最適化されたモジュールの生成、WASI(WebAssembly System Interface)の活用、およびランタイム固有の統合に関する実践的な手順を提供します。これにより、クロスプラットフォームでパフォーマンスの高いアプリケーションを構築したい開発者にとって貴重なリソースとなります。主にClaude Code環境で使用されることを想定しています。

対応✓Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add andreaTP/skill-compile-to-wasm

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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サポートを含むランタイムを使用してください。
  • モジュールのサイズとパフォーマンスのトレードオフを考慮してください。

参考リンク

関連スキル