【ウェブアセンブリランタイム】

WebAssemblyランタイム とは?

最終更新:
💡 Wasmのコードを動かす、実行エンジン

WebAssemblyランタイムは、Wasm形式のコードを実行する環境です。ブラウザ内のエンジンと単独の実行環境、外部機能へのアクセス、対応と性能の確認点を説明します。

📌 このページのポイント
Wasmを動かす側が、ランタイム.wasm読込みランタイムコードを実行メモリを隔離ホストが用意した窓口を使うブラウザの例JavaScriptとの連携WASIの例許可されたファイル等対応する機能・権限・資源制限を確認
実行環境ごとに利用できる外部機能は違います。サンドボックスだけで、あらゆる安全性や性能が保証されるわけではありません。
ひよこ ひよこ
Wasmのファイルだけで、プログラムが動く?
ペンギン先生 ペンギン先生
実行する環境が必要だよ。ブラウザにはWasmの実行エンジンがあり、ブラウザの外で使うWasmtimeなどのランタイムもある。Wasmはコードの形式、ランタイムはそれを読み込んで実行する側、と分けると分かりやすいね。
ひよこ ひよこ
どこへ持っていっても、同じように動く?
ペンギン先生 ペンギン先生
必要なWasmの機能や、外部のインターフェースに対応している必要があるよ。たとえばブラウザの機能を使うコードと、WASIのファイル操作を使うコードでは実行環境の条件が違う。対応する形式やバージョンも確認しよう。
ひよこ ひよこ
WASIって、何をするもの?
ペンギン先生 ペンギン先生
ファイルやネットワーク、時計などの機能を使うためのインターフェースだよ。Wasm自体が自由にOSを操作するわけではなく、実行する側が提供した機能を通して利用する。ランタイムや設定によって、使える機能と範囲が違うんだ。
ひよこ ひよこ
サンドボックスだから、何を動かしても安全?
ペンギン先生 ペンギン先生
Wasmにはメモリなどを隔離する仕組みがあるけれど、安全性の保証とは違うよ。外部への機能を広く与えれば、その範囲で操作できる。CPUやメモリの使いすぎ、実装の不具合にも備え、必要な権限と資源制限、更新を考えよう。
ひよこ ひよこ
コンテナより、必ず速くて軽い?
ペンギン先生 ペンギン先生
起動の速さや使用メモリは、コード、コンパイル方法、設定などで変わるよ。コンテナはアプリとその環境をまとめる仕組みで、Wasmの実行エンジンとは役割も違う。必要な機能と、同じ条件で測った結果から選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「WebAssemblyランタイム」って出てきたら「Wasmのコードを動かす実行環境」と思えばだいたいOK!
📖 おまけ:英語の意味
「WebAssembly Runtime」 = WebAssembly実行環境
💬 Runtimeは「実行時」という意味で、Wasmコードを実際に動かすエンジンのことを指すよ

参考資料

← 用語集にもどる