WASMとは何か
- Webブラウザで動作するプログラミング言語
- HTML、CSS、JSに続く4つ目の言語
- 実行前にコンパイルが必要なバイナリフォーマット
- さまざまな言語のソースコードを.wasmフォーマットにコンパイル可能
- C、C++、Rust、PHP、Ruby、Pythonなど
- これによりバックエンド言語のコードをブラウザで実行可能になる
- W3Cによって標準化された(2019)
WASMバイナリ
- Ruby言語単体がコンパイルされたruby.wasmはCDNで提供されている
WASMのメリット
- ネイティブ水準の高速でコードを実行できる
- 普通の機械語よりも安全
- 多くの言語を活用できる
- ブラウザで動作するため環境やOSを選ばず、ポータブル
- Openである
- OS上でも実行できる(WASI)
- ホスト上で実行するWASMランタイム:Wasmtimeもリリースされている(2022)
WASMのユースケース
- Google Meetのボカシ
- Figma
- ゲーム(Unity)
- Showcase
- Pydodide(PythonのREPL)
- Postgres WASM(PostgreSQLのREPL)
- Krustlet(KubernetesでWASMコンテナ)
- 既存アプリの移植
- Adobe Photoshop
- Google Earth
- AutoCAD
WASMの問題点
- JSからWASMの呼び出しにかかるオーバーヘッド
- ファイルサイズの肥大化(ライブラリ・ランタイムが必要なため)
WASM開発の背景
- AIやデータ分析などのトレンドによってブラウザ上でより高速な処理を必要とした
- asm.jsをさらに進化させた仕組みとしてWASMが出てきて、W3Cで標準化された