初めてのWasmCon開催。キーノートからコンポーネントモデルを解説するFastlyのセッションを紹介
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氏はコンポーネントモデルについて解説する前に、前提としてWebAssemblyの基本についての説明を行った。
そしてユースケースについてはブラウザーでの実行だけではなく、Windowsで動くAutoCADやPhotoshopなどのデスクトップアプリから演算主体のタスク、プラグインで実行されるサーバーサイドからエッジまで多くの用途が想定できると説明した。この時点ですでにブラウザーのJavaScriptの代替という位置付けからは遠く離れていることを示している。
この後、WebAssemblyとこれまでの言語やツールとの違いを解説することで、最終的にコンポーネントモデルについての解説が後半に繋がる流れとなっている。4つのポイントで解説された最初の一つが「SDK for free」というタイトルのスライドだが、このタイトルでは少しわかりづらいだろう。
ここでは従来のコンピューティング環境をインフラとデベロッパーに分け、インフラストラクチャー側が多くの準備をしなければいけないこと、デベロッパー側に選択の自由が少ないことを示した。それに対してWasmを使った環境であれば、デベロッパー側に多くの自由があり、Wasmで実装された他のアプリケーションとの連携についてもネットワーク経由で連携する必要がないことを解説した。
次のポイント「Secure polyglot packages」というタイトルのスライドでは、さまざまなライブラリーを使って機能を実装する際に同じ開発言語に限定され、また不要な機能が含まれたライブラリーによって脆弱性が侵入する可能性が高まるという状況に対して、Wasmはさまざまな言語から生成でき、脆弱性が侵入する危険性が低くなることを解説。
次のポイント「Modularity without microservices」でモノリシックなアプリケーションが肥大化することを防ぐためにマイクロサービスが提示されているが、そもそも個々のサービスをスケールさせなくても良いアプリケーションであれば、無理にマイクロサービス化する必要はないと説明。ここではさまざまな開発言語間で外部呼出しができることを強調している。
このスライドでは最後までタイトルが表示されていないが「Virtual platform layering」がタイトルで、ポイントはアプリケーションから共通の機能を呼び出す際に現状では共有のライブラリーをアプリケーションに組み込むこととサイドカーのProxyを通じてライブラリー機能を呼び出すことが紹介されている。その状況についてWasmはサンドボックスと外部呼出しを使えると解説しているが、このスライドだけではその利点は伝わらないということで用意されたのが次のスライドだ。
Wasmで記述されたビジネスロジックに対して下位のレイヤーは機能を提供、それを順にインフラストラクチャー側に落とし込んでいくという階層化を説明している。
そしてコンテナによる開発から実装までの例を示して、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を生成する新しいプログラミング言語の開発者としても知られている。
また複数の言語で書かれたモジュールが呼び出される際の順序やデータの受け渡しについて解説したこのスライドでは、セキュアにデータの受け渡しが行われていることを説明している。プログラミングの経験がないと理解しづらい内容だが、順を追って説明するスタイルは動画として良くできている。
そしてWasm Preview 2の内容を解説するスライドでは、コンポーネントモデルとWASIのサブセットが導入されると説明。他にも言語対応、Wargなどの多くの進歩が読み取れる。Wasm自体はBytecode Allianceがホストするソフトウェアだが、それをLFやCloud Native Computing Foundation(CNCF)がホストするイベントで積極的に訴求する理由は、エコシステム拡大には外部のデベロッパー、プラットフォームベンダーの理解と協力が必須だと思っている証拠だろう。
来年以降に予定されているPreview 3では非同期処理が大きなターゲットとなっていることを説明し、他にもストリーミング処理も大きな目標として掲げられていることを示した。
最後にまとめとしてコンポーネントモデルによって実現される4つのポイントを再度強調し、Preview 2そしてPreview 3への理解と協力を求めてセッションを終えた。
地味で詳細な内容ながらコンポーネントモデルの利点を中心に解説したセッションとなった。今後のWebAssemblyが進む方向を指し示す重要な内容が多く含まれていたと言える。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- KubeCon Europe 2023共催のWasm Dayから、AdobeのWASMユースケースを紹介
- wasmCloudのCosmonicのCEOが新しいデモを紹介
- KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- WasmCon 2023からLLMをWASMで実装するセッションを紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- CloudNativeSecurityConから、WebAssemblyのパッケージレジストリプロトコルWargのセッションを紹介
- WasmCon 2023でFermyonのCTO、Radu Matei氏に訊いた。WASI進化の注目ポイントとは
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介