WebAssemblyの「WASI Preview 2」で、WebAssemblyコンポーネントの組み合わせによるアプリケーション開発を実現へ

今回は「WebAssemblyの「WASI Preview 2」で、WebAssemblyコンポーネントの組み合わせによるアプリケーション開発を実現へ」についてご紹介します。

関連ワード (安定化、構築、部分等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


Webブラウザ上で高速に実行可能なバイナリフォーマットとして開発されたWebAssemblyは、その後Webブラウザ以外の環境でも実行可能にするため、ファイルシステムなどOSごとに異なるAPIを抽象化するための業界標準仕様「WebAssembly System Interface」(WASI)が策定されました。

WASIの登場により、WebAssemblyはWebブラウザでもWindowsやMacでも、Dockerコンテナでも共通のバイナリで実行可能なバイナリフォーマットへと進化したのです。

参考:WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。Mozillaが呼びかけNode.jsらが賛同

WASI Preview 2が開発中

そして現在、WASIのバージョンアップ版となる「WASI Prevew 2」の開発と実装が進められています。WASI Prevew 2は、WebAssemblyのコンポーネントモデルを活用することが大きな目標の1つです。

WebAssemblyのコンポーネントモデルとは、WebAssemblyで作られたさまざまなコンポーネントを組み合わせてアプリケーションを構築するための仕組みです。

WASI Preview 2はこのコンポーネントモデルを活用し、WebAssemblyで作られたさまざまなコンポーネント、例えばC言語とRustとGoで開発されたそれぞれのWebAssemblyコンポーネントや、WebAssemblyアプリケーションの実行をホストするプラットフォームの機能を組み合わせてアプリケーションを構築できるようになると期待されています。

WASIの実装と普及を推進する団体であるBytecode Allianceが2月1日に公開した動画「Bytecode Alliance Community Meeting」で、WASI Prevew 2の概要と現状が説明されています。その内容をまとめてみました。

WASI Preview 1から多くを学んだ

まずはWASIの振り返りから。

WASIはW3CのWebAssembly Community Groupによって標準化が進められており、WebAssemblyのポータビリティ、セキュリティ、多言語対応、仮想化能力といった強みをAPIにも拡張していくもの。

fig

現時点でのWASI Preview 1は、すでに本番環境に対応し、さまざまな言語やランタイム使えるようになった。

一方で、C指向のAPIで多言語対応に向いておらず、ソケットは十分にサポートできておらず、インターフェイスの仮想化も困難でコンポーネントの組み合わせに用いるのも困難であった。

このWASI Preview 1から我々は多くのことを学んだ。

fig

そこで現在WASI Preview 2を開発中である。

WASI Preview 2はコンポーネントモデルがさらに強化される

WASI Preview 2はWebAssemblyのコンポーネントモデルの機能の上に構築されていることから、型システムなどインターフェイスを記述するための言語が豊富になり、多くの言語とのバインドをよりよく実現できるようになる。ソケットにも対応する。

また、インターフェイスの仮想化、コンポーネントの組み立て、Worlds(注:Worldsについては後述)などのコンポーネントモデルの能力を活用する。

これにより、WASI Preview 1で実装されたファイルシステムのようなPOSIX的なAPIの実装を超えて、キーバリューやHTTP、メッセージングなどのさまざまなインターフェイスの実装と利用が期待できる。

fig

WASI Preview 2の進捗について。

WASI Preview 1対応のWebAssemblyバイナリをWASI Preview 2対応に変換するツール、WASI Preview 2を実装したランタイムであるWasmtime、いくつかの言語対応のツールチェーンなどを開発中で、クールなデモも開発しているところ。

さらにAPIを安定化させ、将来のWASI Preview 3のセッティングもしている。

fig

WebAssemblyのコンポーネントモデルと「Worlds」

WASI Preview 2で出てきた「Worlds」については、別のプレゼンテーションで説明があったので、その部分のスライドを引用しつつ、現時点での筆者(新野)の理解している範囲でWorldsについて説明したいと思います。

WebAssemblyで作られたコンポーネントを組み合わせてアプリケーションを構築するための仕様であるWebAssembly Component Modelには、コンポーネント同士がやり取りするためのインターフェイスを定義するIDL(Interface Definition Language)として「WIT」(WebAssembly Interface Type)と呼ばれるフォーマットがあります。

このWITは、例えばソケット、ファイスシステム、Logging、HTTP、Blob、キュー、SQLなどのさまざまなインターフェイスを記述し定義できます。

WASI Preview 2では、このWITが使われます。

そして、このWITで定義されたインターフェイスを複数束ねて名前を付けたのが「World」です。

例えばソケットとファイルシステムとロギングのインターフェイスをまとめたコマンドラインの機能を提供する「CLI World」、SQLとロギングのインターフェイスをまとめた「DB World」など、さまざまなWITの組み合わせのWorldが考えられます。

これにより、WebAssemblyアプリケーションのホスト環境を提供するプラットフォーム側は、自分がどのようなインターフェイスを提供できるのかをWorldで示すことができます。

一方、WebAssemblyでコンポーネントを記述する開発者も、このコンポーネントがどのようなインターフェイスを持つかをWorldで記述できる、というわけです。

fig

このWITとWorldが示すように、WebAssemblyのコンポーネントモデルでは、さまざまなインターフェイスを柔軟に定義し、それらの機能を備えたコンポーネントやプラットフォームの機能を組み合わせてアプリケーションを構築することができるようになると期待されています。

「Bytecode Alliance Community Meeting」の動画ではWebAssembly Micro Runtime(WAMR)など他の話題も紹介されているため、興味のある方はぜひ動画をご覧ください。またスライドはGitHubの「bytecodealliance/meetings」で公開されています。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
マイクロソフト、国内初のAI/IoT共創ラボ「AI Co-Innovation Lab」を神戸に開設
IT関連
2023-10-13 01:21
“アフターコロナ”の国際交流教育 オンラインで繋がり強化
IT関連
2021-08-12 18:09
ゼロトラストでセキュリティ損害の削減効果は26億円–イルミオ調べ
IT関連
2022-06-03 18:00
ITエンジニアが投票した「ITエンジニア本大賞2022」ベスト10発表。「シェル・ワンライナー160本ノック」「モノリスからマイクロサービスへ」「恐れのない組織」など
働き方 / 給与 / 学び
2022-01-20 10:23
セキュリティ強化のために「Linux」初心者が知っておくべきコマンド6選
IT関連
2024-09-13 13:10
クラウドゲームShadow運営のBladeを仏クラウドホスティングOVHcloud創業者が買収
ゲーム / eSports
2021-05-04 15:02
「ID」と「アイデンティティー」は違う? セキュリティ対策の視点から
IT関連
2023-08-03 08:04
AI PCの普及でコンピューティング形態は「分散型」に変わっていくのか
IT関連
2024-09-14 20:54
[速報]マイクロソフト「Windows 365 Cloud PC」正式発表。Windowsをクラウドサービスとして月額定額料金で提供、デスクトップ仮想化をベースに
Microsoft
2021-07-15 19:04
NTTデータ、銀行生保向け初の保険料振込手続きペーパーレス化サービスを提供
IT関連
2023-04-26 07:33
富士通、新卒採用にジョブ型人材マネジメントを本格導入
IT関連
2024-06-29 03:02
アバナード、山形県酒田市と連携–DX人材育成による産業振興目指す
IT関連
2024-07-24 23:47
ANAが仮想旅行アプリ 2022年に世界提供、需要喚起へ
IT関連
2021-05-22 15:36
外科手術とフードデリバリー、海図作成そして帰ってきた愛すべき友、ロボティクスの近況
ロボティクス
2021-03-16 12:42