WebAssembly 【WASM】

概要

WebAssembly(WASM)とは、Webブラウザなどを主な実行環境として利用できるプログラミング言語の一つで、仮想的なCPUの命令セットのような構造を持つもの。ネイティブコードのように高速に実行できる。

実在しない架空のマイクロプロセッサ(CPU/MPU)が持つ機械語(風の言語)として定義されており、標準の記述形式も16進数バイナリコードとなっている。機械語に一対一に対応するテキスト形式アセンブリ言語(風の言語)も定義されており、これを使って直にプログラムを記述することもできる。

これらの言語仕様を用いて人間がプログラムを記述するよりも、C言語やC++言語のようなネイティブコードコンパイルしてから実行するプログラミング言語のコンパイル先としての利用を想定している。こうした言語は実行速度が高速な反面、Webブラウザなどには実行環境が存在せず利用できなかったが、WebAssembly形式にすることでブラウザ上で高速に実行することができるようになる。

WebAssembly自体は特定の実在のCPUのコードではないため、実行時には仮想マシンVM)がコードを解釈して実行環境のCPUの命令に変換しながら実行していく形となる。スクリプト言語の実行に近い方式だが、一般的なCPUの命令セットに似た構造となっているため、構文の解釈や変換は極めて高速に行うことができる。

一方、独立した仕様になっていることで仮想マシンを用意すれば様々な機種やOSに対応することができる利点もある。仮想マシンを経由して実行するためネイティブコードより安全性が高い。特定の環境や用途で必要になるDOM操作やシステムコールといった機能は実行環境側に用意してAPIを介して利用する形をとっている。ブラウザ上ではJavaScriptプログラムと連携することも可能となっている。

コンパイラを用意すれば様々なプログラミング言語からコードを生成することができ、C/C++の他にRustやGo言語Kotlin/Nativeなどに対応するコンパイラが公開されている。Javaや.NET言語(C#など)のような独自の仮想マシンを持つ言語は非対応となっている。

WebAssemblyの開発はWebブラウザFirefox」開発元であるMozilla Foundationの技術者らが主導し、Firefoxスクリプト実行を高速化する「asm.js」から発展した。2015年に最初の仕様が公開され、2017年までにFirefoxGoogle ChromeMicrosoft EdgeApple Safariなど主要なブラウザへの実装が完了した。2019年にはW3Cが標準規格を発行した。ポータブルで高速なプログラム実行環境としてブラウザ以外への実装や応用も進んでいる。

(2021.9.3更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。