wasm について
コンパイル、WASI、Component Model、ランタイムを扱うWebAssembly開発リファレンスです。ブラウザー、エッジ、サーバー、組み込み向けWASMアプリを検討・開発するエンジニアを対象としています。
主な機能
- 01Rust、Go、C/C++、AssemblyScriptのコンパイル
- 02WASIのコマンドとランタイム例
- 03型付きComponent Modelの合成
- 04ブラウザー、エッジ、サーバー、組み込みの用途
活用シーン
- 01ブラウザー向けRustコードのコンパイル
- 02WasmtimeによるWASIアプリの実行
- 03言語をまたいだ型付きモジュールの合成
- 04エッジや組み込み環境でのWASM活用の検討
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill wasmインストール後、Claude Code で/wasmを入力して読み込まれたか確認します。
詳細
WebAssembly(WASM)— コンポーネントモデル、WASI
高いパフォーマンスが求められる用途、ポリグロットランタイム、エッジコンピューティング向けの WASM。
ユースケース
ブラウザー — 暗号処理、画像(Figma、Google Earth)
エッジ — Cloudflare Workers、Fastly
サーバー — サンドボックス化されたプラグイン(Envoy)
組み込み — IoT、自動車
コンパイル
Rust — wasm-pack(約50KB、高パフォーマンス)
Go — GOOS=js GOARCH=wasm(約2MB)
C/C++ — Emscripten(レガシー)
AssemblyScript — TypeScript に似た言語
Rust から WASM へ
use wasm_bindgen::prelude::*;
#[wasm_bindgen] pub fn add(a: i32, b: i32) -> i32 { a + b }
wasm-pack build --target web
import init, { add } from './pkg/wasm.js';
await init(); add(2, 3);
WASI(システムインターフェース)
rustc --target wasm32-wasi main.rs -o app.wasm
wasmtime app.wasm
コンポーネントモデル
interface math { add: func(a: s32, b: s32) -> s32 }
型付けされた Rust/Go/C++ モジュールを組み合わせます。
エッジ(Cloudflare)
import wasm from './processor.wasm';
export default {
async fetch(req) {
const inst = await WebAssembly.instantiate(wasm);
return new Response(inst.exports.process(req.body));
}
};
ランタイム
Wasmtime — 高速、WASI
Wasmer — 汎用
WasmEdge — エッジ、K8s
@.claude/skills/edge-computing/SKILL.md を参照してください
コメント
Markdown 対応