全1795文字
PR

 WebAssembly(Wasm)はWebブラウザー上で実行できるバイナリー形式のファイルフォーマットだ。Webブラウザーが搭載するスタックベースの仮想マシン上で動く。Web技術の標準化団体であるWorld Wide Web Consortium(W3C)が2019年に標準化して仕様を勧告している。

 Wasmは米Unity Softwareが開発するゲームエンジン・開発環境「Unity」や、米Microsoft(マイクロソフト)が開発するWebアプリケーションフレームワーク「Blazor」に採用されるなど、徐々に利用機会が増えている。ただし、その利用価値はあまり知られていない。Wasmの仕組みやメリットから利点をひも解き、実装時の注意点なども解説する。

主要なWebブラウザーはWasmに対応済み

 Wasmが動く仕組みを見ていく。WebサイトやWebアプリケーション開発では、主にプログラミング言語のJavaScriptを使って計算処理やロジックを記述する。こうしたJavaScriptのプログラムはWebブラウザーが搭載するJavaScript処理エンジンがパース(構文解析)処理などを施してバイトコードに変換後、インタープリターによって逐次処理される。

WebAssemblyとJavaScriptの処理の違い
WebAssemblyとJavaScriptの処理の違い
[画像のクリックで拡大表示]

 一方、WasmはWebブラウザーが搭載するWasmの仮想マシンで実行する。主要なWebブラウザーであるChromeやEdge、FirefoxなどはWasmの仮想マシンを搭載済みだ。ただしWasmのプログラムはバイナリー形式であり、いちから人間が記述するのは難しい。そこでC++やRustといったプログラミング言語で処理を記述した後に、それをコンパイルしてWasmに変換する。

 一般にWasmはJavaScriptよりも高速に動作するといわれている。JavaScriptのプログラムはWebブラウザーが読み込んだ後、コンパイルしてインタープリターで実行する。一方、WasmはバイナリーファイルをWebブラウザーが読み込んで実行する。このバイナリーファイルはあらかじめコンパイラーによってパース処理や最適化処理が施された状態の中間言語である。JavaScriptに比べて、より高速に動作するネーティブコードに変換しやすくなる。