WebAssemblyはWebブラウザーが実行できるバイナリー形式のアセンブリー言語。CやC++といった各種プログラミング言語で開発したプログラムをコンパイルして、ブラウザー上で実行できる。実行時にパースやバイナリーコードへの変換処理が不要なため、JavaScriptコードよりも高速に動作する。

 WebAssemblyを使えば、多様なアプリをWebアプリとして動かせる。主要なWebブラウザーであるChromeやFirefox、EdgeなどはWebAssemblyに対応済みなので、今後の普及が見込まれる。

 WebAssemblyを利用してWebアプリの処理を高速化する仕組みは以下のようになる。C/C++などで記述したプログラムをLLVMベースのコンパイラー基盤でコンパイルし、WebAssemblyバイトコード(WASMコード)を生成する。LLVMはコンパイラーを開発するためのオープンソースソフウエアである。WASMコードはブラウザー上で高速に動作するバイナリーコードのフォーマットで記述される。

WebAssemblyでWebアプリの処理を高速化する
[画像のクリックで拡大表示]

 生成したWASMコードをWebアプリとしてアップロードして実行する。JavaScriptコードと併用し、高速化したい部分をWebAssemblyコードで記述してJavaScriptコードから呼び出したり、WASMコードからJavaScriptコードを呼び出したりできる。

 WebAssemblyのコードは前述したC/C++のほか、Rust、TypeScriptといった主要な言語からコンパイルなどで生成できる。