WASM JS
ファイル変換

WASM から JS への変換

クイック回答
WASM を JS に変換することは可能ですか?
はい - WASM は JS に変換可能です。

バイナリを JavaScript として書き換えるのではなく、モジュールの取得、インスタンス化、およびエクスポートの公開を行う .js グルー(接着剤)コードを生成します。Emscripten や wasm-pack はこのファイルを自動的に出力します。または、WebAssembly.instantiateStreaming を中心とした数行のコードを記述することもできます。.wasm はそのまま残り、.js がそのエントリポイントになります。

JS への他の変換: MJS · AXD · FBA

このページの内容

macOS、Windows、Linux でテスト済み
最終検証日:Sep 2026

その他の無料コンバーター

HEIC、PNG、WEBP、MP3 など、すべてのツールが無料です。

ツールボックスを開く

なぜ WASM を JS に変換するのですか?

.wasm バイナリは単独でページ内で実行することはできません。ブラウザは JavaScript を介してそれをロードします。モジュールをインポートし、インポートを渡し、エクスポートされた関数を通常の関数のように呼び出せるように、人々は .js ファイルを必要とします。ツールチェーンがこのグルーコードを生成するため、生のロード用コードを直接触ることは稀です。

WASM から JS への変換方法

Emscripten のグルー出力 OPEN-SOURCE

C/C++ をコンパイルする際、emcc app.c -o app.js を実行すると、Emscripten は app.wasm とそれをインスタンス化する app.js ローダーの両方を出力します。インポート可能なモジュールにするには -s MODULARIZE=1 を追加します。

Rust 用の wasm-pack OPEN-SOURCE

Rust + wasm-bindgen の場合、wasm-pack build --target web を実行します。これにより、.wasm とすべての関数を再エクスポートする .js バインディングファイルが生成されます。アプリからは init() を使用してインポートします。

これらの形式について

品質と注意点

  • .js ファイルにはモジュールのロジックは含まれていません。.wasm をロードして橋渡しをするだけであり、.wasm も一緒に配布する必要があります。
  • 手書きのローダーは、モジュールが期待する正確なインポートオブジェクトを提供する必要があります。そうしないと、インスタンス化時に LinkError が発生します。
  • Emscripten や wasm-bindgen のグルーコードは、その .wasm を生成した特定のビルドと紐付いています。バージョンを混ぜるとバインディングが壊れます。

よくある質問

WASM を完全に読み取り可能な JavaScript に戻せますか?
実用的ではありません。WASM はコンパイルされたバイナリです。得られるのは JS ローダーとオプションの逆コンパイル結果であり、元のソースではありません。
.js を生成した後も .wasm ファイルは必要ですか?
はい。.js は実行時に .wasm を取得してインスタンス化するため、両方を一緒にデプロイする必要があります。
wasm-pack ではどの target フラグを使うべきですか?
ネイティブ ES モジュールには --target web、webpack/Vite には --target bundler、Node.js には --target nodejs を使用します。
なぜ instantiate が LinkError で失敗するのですか?
渡したインポートオブジェクトが、モジュールがインポートしている関数やメモリと一致していないためです。