WasmCon 2023レポート 1

初めてのWasmCon開催。キーノートからコンポーネントモデルを解説するFastlyのセッションを紹介

WebAssemblyに特化したWasmMConが開催された。キーノートからコンポーネントモデルを解説するFastlyのセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2023年11月22日 6:00

2023年9月6日、7日の両日、ワシントン州ベルビューにおいて、WebAssemblyに特化したカンファレンスWasmConが開催された。WasmConはThe Linux Foundation(LF)が主催したWebAssemblyに関する初めてのカンファレンスで、2日間の日程で約350名の参加者を集めた。今回はそのキーノートからFastlyのLuke Wagner氏によるコンポーネントモデルに関するセッションを紹介する。

「コンポーネントとは何か? なぜか?」というタイトル

「コンポーネントとは何か? なぜか?」というタイトル

●動画:What is a Component (and Why)?

「What is a Component (and Why)?」というタイトルが示すように、WebAssemblyにおけるコンポーネントモデルを解説するセッションだ。今回のカンファレンスではFermyonがServerless AIを持ち上げ、Second StateもCEOのMichael Yuan氏がLarge Language Model(LLM)をWasmで実装するセッションを行っているように、流行りの機械学習をいかにWasmで実行するか? という応用に論点が移動しているように見える。しかし、今後のエコシステムの拡大を目指すのであれば、コンポーネントモデルについて理解しておくことは重要だ。

プレゼンテーションを行うWagner氏

プレゼンテーションを行うWagner氏

Wagner氏はコンポーネントモデルについて解説する前に、前提としてWebAssemblyの基本についての説明を行った。

WebAssemblyとは? を確認するスライド

WebAssemblyとは? を確認するスライド

そしてユースケースについてはブラウザーでの実行だけではなく、Windowsで動くAutoCADやPhotoshopなどのデスクトップアプリから演算主体のタスク、プラグインで実行されるサーバーサイドからエッジまで多くの用途が想定できると説明した。この時点ですでにブラウザーのJavaScriptの代替という位置付けからは遠く離れていることを示している。

WebAssemblyのユースケースを概観

WebAssemblyのユースケースを概観

この後、WebAssemblyとこれまでの言語やツールとの違いを解説することで、最終的にコンポーネントモデルについての解説が後半に繋がる流れとなっている。4つのポイントで解説された最初の一つが「SDK for free」というタイトルのスライドだが、このタイトルでは少しわかりづらいだろう。

SDK for freeというタイトルでプラットフォーム側の責任が少なくなることを解説

SDK for freeというタイトルでプラットフォーム側の責任が少なくなることを解説

ここでは従来のコンピューティング環境をインフラとデベロッパーに分け、インフラストラクチャー側が多くの準備をしなければいけないこと、デベロッパー側に選択の自由が少ないことを示した。それに対してWasmを使った環境であれば、デベロッパー側に多くの自由があり、Wasmで実装された他のアプリケーションとの連携についてもネットワーク経由で連携する必要がないことを解説した。

さまざまな言語で開発でき、サンドボックスで安全なWasmを強調

さまざまな言語で開発でき、サンドボックスで安全なWasmを強調

次のポイント「Secure polyglot packages」というタイトルのスライドでは、さまざまなライブラリーを使って機能を実装する際に同じ開発言語に限定され、また不要な機能が含まれたライブラリーによって脆弱性が侵入する可能性が高まるという状況に対して、Wasmはさまざまな言語から生成でき、脆弱性が侵入する危険性が低くなることを解説。

マイクロサービス化せずにモジュラー的に組み合わせることが可能

マイクロサービス化せずにモジュラー的に組み合わせることが可能

次のポイント「Modularity without microservices」でモノリシックなアプリケーションが肥大化することを防ぐためにマイクロサービスが提示されているが、そもそも個々のサービスをスケールさせなくても良いアプリケーションであれば、無理にマイクロサービス化する必要はないと説明。ここではさまざまな開発言語間で外部呼出しができることを強調している。

複数の開発チームで機能を共有するような状況におけるWasmの利点を解説

複数の開発チームで機能を共有するような状況におけるWasmの利点を解説

このスライドでは最後までタイトルが表示されていないが「Virtual platform layering」がタイトルで、ポイントはアプリケーションから共通の機能を呼び出す際に現状では共有のライブラリーをアプリケーションに組み込むこととサイドカーのProxyを通じてライブラリー機能を呼び出すことが紹介されている。その状況についてWasmはサンドボックスと外部呼出しを使えると解説しているが、このスライドだけではその利点は伝わらないということで用意されたのが次のスライドだ。

Virtual platform layeringとして複数レイヤーの抽象化が行われる

Virtual platform layeringとして複数レイヤーの抽象化が行われる

Wasmで記述されたビジネスロジックに対して下位のレイヤーは機能を提供、それを順にインフラストラクチャー側に落とし込んでいくという階層化を説明している。

そしてコンテナによる開発から実装までの例を示して、Wasmに移行した場合にどうなるのかをエコシステムとして解説。ここではPOSIXによる機能の標準化を使っているが、より新しい手法が必要だとして紹介されているのが、コンポーネントモデルだ。

Wasm+POSIXの先にあるコンポーネントモデル

Wasm+POSIXの先にあるコンポーネントモデル

ここからはコンポーネントについてその特徴を説明するという内容となっている。

コンポーネントの説明文から特徴をひとつずつ解説

コンポーネントの説明文から特徴をひとつずつ解説

最初のポイントは外部呼び出しの部分でImport/Exportという外部とのやり取りを固定されたアーギュメントで行うのではなく、Interface Typeと呼ばれるインターフェースを定義する機能によって行うという点だ。Worldという概念でインターフェースが記述されるというのも大きなポイントだが、WasmConの参加者に対しては細かい説明は不要だとして省いているのだろう。

アプリケーション内の構成についての解説

アプリケーション内の構成についての解説

このスライドではアプリケーションが呼び出す機能(サムネイル、キャッシュ、ファイルシステム)などがどのように使われるのか? を説明し、レジストリーであるWargについても簡単に触れている。Wargについては以下の記事を参照して欲しい。

●参考:CloudNativeSecurityConから、WebAssemblyのパッケージレジストリプロトコルWargのセッションを紹介

CやJavaScriptで書かれた機能がWasmのアプリケーションの中でどのように作られていくのかを紹介しているが、非常にビジーなスライドであることは間違いない。スライドの右上に「WebAssembly System Interface」を訂正して「WebAssembly Standard Interfaces」と直しているのはOscar Spencer氏のものと注釈が行われているが、Oscar Spencer氏はGrainというWebAssemblyを生成する新しいプログラミング言語の開発者としても知られている。

JavaScriptからRustを呼び出す手順を解説

JavaScriptからRustを呼び出す手順を解説

また複数の言語で書かれたモジュールが呼び出される際の順序やデータの受け渡しについて解説したこのスライドでは、セキュアにデータの受け渡しが行われていることを説明している。プログラミングの経験がないと理解しづらい内容だが、順を追って説明するスタイルは動画として良くできている。

Wasmの将来計画を紹介。Preview 2が次のマイルストーン

Wasmの将来計画を紹介。Preview 2が次のマイルストーン

そしてWasm Preview 2の内容を解説するスライドでは、コンポーネントモデルとWASIのサブセットが導入されると説明。他にも言語対応、Wargなどの多くの進歩が読み取れる。Wasm自体はBytecode Allianceがホストするソフトウェアだが、それをLFやCloud Native Computing Foundation(CNCF)がホストするイベントで積極的に訴求する理由は、エコシステム拡大には外部のデベロッパー、プラットフォームベンダーの理解と協力が必須だと思っている証拠だろう。

来年はPreview 3が予定されている

来年はPreview 3が予定されている

来年以降に予定されているPreview 3では非同期処理が大きなターゲットとなっていることを説明し、他にもストリーミング処理も大きな目標として掲げられていることを示した。

最後にまとめとしてコンポーネントモデルによって実現される4つのポイントを再度強調し、Preview 2そしてPreview 3への理解と協力を求めてセッションを終えた。

セッションのまとめ。4つのポイントがコンポーネントモデルの利点

セッションのまとめ。4つのポイントがコンポーネントモデルの利点

地味で詳細な内容ながらコンポーネントモデルの利点を中心に解説したセッションとなった。今後のWebAssemblyが進む方向を指し示す重要な内容が多く含まれていたと言える。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る