【わし】
WASI とは?
最終更新:
💡 WebAssemblyと、外の機能をつなぐ共通の窓口
WebAssemblyのプログラムがファイルやネットワークなどを利用するための標準API群。実行環境が提供する機能との接点をそろえ、移植しやすくする。
📌 このページのポイント
- WebAssembly System Interfaceの略で、ファイル・時計・通信などのAPIを定める
- ブラウザ外のサーバーやCLIだけでなく、ブラウザ内での利用も想定する
- 実行環境が渡した機能や資源を使う、権限を限定する設計を採る
- 規格の版と、実行環境・開発ツールの対応を合わせて確認する
WASIって何をつなぐの?
WebAssemblyのプログラムと、ファイルの読み書きや通信などの機能をつなぐAPIの規格だよ。WebAssembly本体だけで、どの環境でも使える共通のファイルAPIが決まっているわけではない。そこで、実行環境が提供する機能への接点をそろえるんだ。
ブラウザの外でしか使わないの?
サーバーやコマンドラインの道具などでも役立つけれど、ブラウザ内での利用も想定されているよ。ブラウザのWebAssemblyが外の機能を一切使えない、という意味でもないんだ。JavaScriptなどを通じた橋渡しと、WASIの標準APIを使う方法を分けて考えよう。
パソコンのファイルを勝手に読める?
Preview 1やPreview 2って何?
同じファイルなら、どこでもそのまま動く?
移植しやすくするための規格だけれど、対応するAPIや版、渡される権限が違えば、そのまま動くとは限らないよ。たとえばWebAssemblyの実行環境であるWasmtimeなどで利用できる。まずは実行環境が何を提供するかを確かめると、規格と実際の動作の違いが分かりやすいね。
まとめ:ざっくりこれだけ覚えればOK!
「WASI」って出てきたら「WebAssemblyが外の機能を使うための共通の窓口」と思えばだいたいOK!
📖 おまけ:英語の意味
「WebAssembly System Interface」 = WebAssemblyシステムインターフェース
💬 WebAssemblyにSystem Interface(システムとの接点)を提供する規格だよ