MENU

WebAssembly — ブラウザで高速にネイティブ言語を動かす標準バイナリ

WebAssembly アイキャッチ
WebAssembly

WebAssembly(Wasm)は2017年にW3C標準として公開された、Web向けの低レベルバイナリ命令フォーマットです。C/C++/Rust/Go等で書いたコードを Wasm に変換すれば、ブラウザ上で JavaScript と協調しながらネイティブに近い速度で動作。「ブラウザを真の汎用実行プラットフォームにする」というビジョンで、Google・Mozilla・Apple・Microsoftが共同で策定しました。

目次

この記事の目次

  1. Wasmの基本
  2. Wasmの典型的なユースケース
  3. ブラウザ外でも動くWasm
  4. WasmとJavaScriptの関係
  5. まとめ

Wasmの基本

Wasmの基本

WebAssemblyは「ブラウザ用の仮想CPU命令セット」と考えると分かりやすいです。コンパイル済みの .wasm ファイルをブラウザがロードし、内蔵VMで実行します。JavaScriptと相互呼び出しでき、DOM操作はJavaScript側から行うのが基本構成です。

サポート言語は当初C/C++が中心でしたが、現在はRust、Go、AssemblyScript(TypeScript似)、C#(Blazor)、Pythonなど多岐に及びます。「ブラウザでネイティブ言語を動かす」夢が現実のものになりました。

Wasmの典型的なユースケース

Wasmの典型的なユースケース

Wasmが最初に大きく注目されたのはゲーム用途で、UnityやUnrealのWeb出力ターゲットになりました。Figma、Photoshop Web版、Google Earthなどクリエイティブ系の大型アプリも内部でWasmを多用しています。

JavaScriptでは遅すぎる重い計算(暗号、画像処理、物理シミュレーション)をWasmに逃がし、UIはJavaScriptで作る、というハイブリッドが現代的なWebアプリ最適化の定石です。

ブラウザ外でも動くWasm

ブラウザ外でも動くWasm

Wasmは本来Web向けですが、近年は「ブラウザ外でも動くサンドボックス実行環境」として注目されています。WASI(WebAssembly System Interface)標準化により、ファイルI/Oなどの低レベルAPIが整備され、サーバサイドWasmランタイム(Wasmtime、Wasmer、WasmEdge等)が登場しました。

Cloudflare Workers、Fastly Compute@Edge、Fermyon Spinなどがエッジ実行環境としてWasmを採用。起動が極めて速く、サンドボックスで安全に動かせる特性から、「Dockerより軽い」次世代実行環境として期待されています。

WasmとJavaScriptの関係

WasmとJavaScriptの関係

WasmはJavaScriptを置き換えるものではなく、補完するものです。UI構築・イベント処理はJavaScript、計算量の多い部分やネイティブ資産の再利用はWasmが担う、という分業が現代的。

「JavaScriptが要らなくなる」という極端な予測は外れましたが、「ブラウザで動く言語の選択肢が広がった」という意味では、WasmはWebの歴史に確実な転換点をもたらしました。

まとめ

WebAssemblyはWebの限界を押し広げ、エッジコンピューティング・プラグイン基盤へと用途を広げる新しい実行環境です。Web開発者にとっては「ブラウザでネイティブ性能を引き出す」道具、インフラ側にとっては「軽量サンドボックスの未来」として、これからますます重要になります。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次