WebAssemblyをコンテナイメージとし、コンテナレジストリなどで配布可能にする「Wasm OCI Artifact layout」仕様が登場
今回は「WebAssemblyをコンテナイメージとし、コンテナレジストリなどで配布可能にする「Wasm OCI Artifact layout」仕様が登場」についてご紹介します。
関連ワード (今後、実用化、抽象化等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
WebAssemblyコンポーネントをコンテナイメージとしてDockerレジストリなどで配布可能にする「Wasm OCI Artifact layout」が、「WASI 0.2.1」仕様の一部として公開されました。WASIを推進するBytecode Allianceが発表しました。
WASI(WebAssembly System Interface)は、WebAssemblyをWebブラウザだけでなくサーバサイド上のランタイムなどでも実行可能にする仕様で、W3CのWASIサブグループ(WASISG)が策定しています。
コンポーネントモデルを備えたWASI 0.2が登場
WebAssemblyはもともとWebブラウザ上で高速に実行可能なバイナリフォーマットとして登場しました。
そしてWebAssemblyをサーバサイドのWebAssemblyランタイムでも実行可能にするため、POSIXを参考にファイルシステムAPIなどを抽象化してWebAssemblyからアクセスできる仕様として2019年に登場したのが「WASI」(WASI 0.1)です。
その後このWASIを見直し、WebAssemblyバイナリを部品のように自由に組み合わせてアプリケーションを構築できるコンポーネントモデルを採用した新たなWASI仕様のWASI Preview 2(WASI P2もしくはWASI 0.2)が2024年1月に安定版として公開されました。
参考:WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現
今後はこのWASI 0.2をベースに互換性を保ちつつWASIのバージョンアップが予定されています。
その最初のバージョンアップであるWASI 0.2.1が今年(2024年)8月に発表されました。
WASMコンポーネントがDockerレジストリで配布可能に
WASI 0.2.1では2つの新機能が追加されています。
1つはWebAssemblyコンポーネントのインターフェイスを定義する「WIT」(Wasm Interface Types)の「@since」ノーテーションが追加され、そのインターフェイスが設定されたコンポーネントのバージョンが記述できるようになりました。
そしてもう1つが、WebAssemblyモジュールやコンポーネントをOCI(Open Container Initiative)仕様に準拠したコンテナイメージとして定義し、Dockerレジストリなどで配布可能にする「Wasm OCI Artifact layout」です。
これにより、いわゆるDockerコンテナがコンテナレジストリに保存されているさまざまなコンテナイメージをロードして簡単に実行できるのと同じように、WebAssemblyモジュールをコンテナレジストリに登録して共有し、それをWebAssemblyランタイムやWebAssemblyの実行機能を備えたコンテナランタイムにロードして手軽に実行できるようになります。
WebAssemblyはクラウドネイティブの文脈でも注目されてきた技術です。Wasm OCI Artifact layoutの登場はクラウドネイティブにおけるWebAssemblyアプリケーションの実用化を加速することが期待されます。