
218
JavaScriptはバイトコードを機械語に変換しながら実行するしくみのた
め、画像処理などの大量の計算を必要とする処理は苦手です。この問題を
解決するために、Web ブラウザ上でネイティブコード相当の高速処理を可
能にするしくみとして登場したのがWebAssembly(以下、Wasm)です。
Wasmは、ブラウザ内でC/C++で記載された高速で効率的なプログラム
を実行するために設計されました。従来のJavaScript と比べて優れたパフ
ォーマンスを出すことができ、Webアプリケーションの処理速度を向上さ
せることができます。
Wasmは、複数のプログラミング言語(C/C++の他 Rust、Go、Python、
Kotlinなど)に対応したコンパイラが生成する Wasm バイナリ形式(.wasm)
をブラウザ内で実行します(図12-5)。これにより、C/C++ などの言語で
書かれた高度なアルゴリズムや計算処理も高速に実行できる利点がありま
す。Wasmの実行環境であるWasmランタイムの種別によっても実行速度
が異なりますが、JavaScriptと比べてはるかに高速で、ネイティブコード
相当の高速実行を実現しています。
Wasmはサンドボックス環境を提供し、Webブラウザ内でコードの安全
な実行を確保します。このサンドボックスは、Wasmコードが外部のリソ
ースやシステムにアクセスすることを制限し、悪意のあるコードがWeb
アプリケーションやデバイスに悪影響を与えるのを防ぎます(図12-