
222
多様な言語で書かれたコードをネイティブコード並みの実行速度で動作
させることができ、安全性と可搬性を兼ね備えたWasmの登場により、ブ
ラウザ以外のさまざまな場所での活用が期待されるようになりました。し
かし、Wasmで実装されたアプリケーションはファイルやネットワークに
アクセスできません。Wasmアプリから OSのシステムコールを呼び出し、
ファイルへのアクセスを可能にする方法が必要ですが、システムコールは
OSごとに異なるため、実装しようとするとOSごとに異なるWasm アプリ
が必要になってしまいます。この問題を解消するために生まれた仕様が
「WebAssembly System Interface(WASI)」 です(図 12-9)。
WASIはWasmのバイナリからのOSのシステムコールを業界標準仕様
APIとして定義したものです。WASIに対応するWasmランタイムさえあ
れば、OSを問わずWasmアプリを動作させることができます。ディレク
トリなどのOSが管理するリソースへのアクセスをWASIが引き受けるこ
とで、OSの違いを吸収しています。
WasmアプリはWasmランタイムが提供されている主要なブラウザで動
作させることができますが、PCやサーバーで Wasmアプリのバイナリをそ
のまま実行させることはできません。動作させるためには、Wasmtimeや
Wasmerなどの Wasm ランタイムが必要です(図 12-10)。
両ランタイムはWASIをサポートしており、OS リソースにアクセス可能 ...