KubeCon Europe 2025、CosmonicとMicrosoftによるWASMの事例解説セッションを紹介

KubeCon+CloudNativeCon Europe 2025から、WebAssemblyの概要と事例紹介、そしてコントリビュータに助けを求めたセッションを紹介する。プレゼンテーションを行ったのはCosmonicのTylor Thomas氏とMicrosoftのDavid Justice氏だ。それぞれWasm Working GroupのCo-chairとして登壇した。
セッションは以下の公式URLから可能となっている。
●動画:Wasm I Right or Wasm I Wrong? a Review of the Wasm Ecosystem
最初にThomas氏がWebAssemblyの歴史を簡単に振り返り、Mozillaのエンジニアによってasm.jsと言う名称で2014年にドラフトが作成されたことを説明。その後、W3Cのドラフトとして2018年にコアとなる仕様が作成され提案されたこと、2019年にW3Cのリコメンデーションとしての仕様が作成されたことを説明した。
そしてブラウザーで稼働するプラットフォームを選ばない実行形式からクラウド、つまりサーバー側で実行される互換性が高く安全な実行形式に進化したことを、それぞれブラウザーとサーバー側の特徴を比較して説明した。ここではほぼ同じ特徴を持っていることが強調された形になっている。
ここでは高い互換性、ファイルサイズが小さく高速、サンドボックスによって安全であること、複数のプログラミング言語から生成可能であることなどが挙げられている。
WebAssemblyのコンポーネントモデルは2024年にWASI(WebAssembly System Interface)の一部として公開された、複数のWebAssemblyで書かれたモジュールのインターフェースを統一するための仕組みだ。
これによって異なるプログラミング言語で書かれたモジュールを連携させることが容易になる。この例ではRustで書かれたファイルとGoで書かれたファイル同士で、データの交換や関数の呼び出しが可能になる。
具体的なプログラムコードを見せてインポートとエクスポートの例を解説。ここではコアな機能に加えて、ロギングや外部プログラムの実行が例として挙げられている。
ここからはWebAssemblyに関連したソフトウェアを列挙して説明する内容となった。
このスライドで解説されているSpinは、WebAssemblyの特徴を活かしたサーバーレスのアプリを実行するためのプラットフォームだ。興味深いのはCosmonicもwasmCloudというプラットフォームを提供しているベンチャーだが、wasmCloudはジェネリックなPaaS的な立ち位置、Spinはよりサーバーレスに特化したプラットフォームということで競合しないという発想だろうか。
●Spin:https://www.fermyon.com/spin
次に紹介されたのは、3Dグラフィックスを素早く生成するためのツールRenderletだ。デスクトップ(WindowsやmacOS)での3Dモデルを生成するためのツールだが、ブラウザーの部分にWebAssemblyが使われているようだ。具体的にはWanderという名称のWebAssemblyで書かれたレンダリングモジュールが存在している。
●Renderlet:https://www.renderlet.com/
次に紹介されたのはZedというエディターだ。
ZedはRustで書かれたエディターとして公開されている。その拡張の部分がコンポーネントモデルということになる。
次に紹介されたのはKube-scheduler-wasm-extensionと呼ばれるプロジェクトで、KubernetesのSIGで議論され開発されているという。これはeBPFがLinuxのカーネルで実行したいモジュールを安全に組み込むために利用されていることと同様の発想だ。本来、Kubernetesに独自のスケジューリングアルゴリズムを組み込むためには、Goでアルゴリズムを開発し、スケジューラーをビルドすることで組み込む必要があるが、アルゴリズムをWebAssemblyで実装し外部のモジュールとして組み込むことで、スケジューラーをビルドする手間をなくすという発想だ。
詳細は以下のスケジューラーのSIGのGitHubページを参照して欲しい。
●WASMベースのスケジューラー:https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension
事例の最初にFermyonのSpinがWebAssemblyの利用例として紹介されたが、HyperlightはMicrosoftのパブリッククラウドであるAzureチームが開発し、CNCFにサンドボックスとして寄贈したプロジェクトになる。Spinも2024年3月にサンドボックスとして寄贈されているのでほぼ競合するソフトウェアということになる。
GoogleもGoogle Cloudのサービスを拡張する機能の部分をWebAssemblyで実装している。
Inspektor GadgetはKubernetesクラスターの監視のためのデータ収集ツールとして開発され、これもCNCFのサンドボックスとして採用されている。Inspektor Gadgetは検証のためのプログラムをeBPFで開発し、OCIの形でパッケージ化し利用するというもので、その中にWasmのレイヤーを実装可能ということになる。
次はNGINXのUnitだ。Unitのバージョン1.34.2ではWebAssemblyのランタイム、wasmtimeを使ってアプリケーションを実装できると説明されている。
●nginx unit:https://unit.nginx.org/
次に紹介されたのはKubernetesのポリシーエンジンであるKubewardenだ。セキュリティの観点からKubernetes上で実行されるアプリケーションの行いを制御するAdmission Controlの実装例としてKeyvernoやOPAなどが知られているが、KubewardenもポリシーエンジンとしてRANCHERを手掛けるSUSEによって開発され公開されている。これもCNCFのサンドボックスプロジェクトだ。
ここまでWebAssemblyが広く採用されていることを紹介したが、プラグインという発想で機能を拡張するということはセキュリティの意味からは危険であり、コンポーネントモデルによって権限を制限したうえで安全に実行する形式に変わって欲しいと訴えた。
ここで例として挙げられているBuildpackは、Herokuによるコンテナイメージ生成ツールである。PaaSの実行形式として公開され、Dockerを使わずにコンテナイメージを生成できることが主な利点として紹介されている。
Buildpackについては以下の公式サイトを参照されたい。
ここではデベロッパーがコンテナイメージ生成のために面倒なDockerfileを作成しなくても、適切な依存関係を理解してイメージを生成できるという開発現場のユーザー体験を再現したいという意味が込められていると思われる。
最後にGo言語からコンポーネントモデルをサポートするランタイムが必要であり、その開発に協力してくれるエンジニアを募っていることを強く訴えてセッションを終えた。このスライドではStar Warsのマンダロリアンの決めセリフ「This is the way」を使って「Go言語でもコンポーネントモデルサポートが存在するべきだ」という意味を伝えようとしていた。
このセッションの本当の目的はGoのコンポーネントモデル開発のエンジニア募集ではなかったかと思わせる切実な声で、他のWebAssembly関連のセッションでも最後の部分では同じ訴求内容となっていたことからも、Go言語のコンポーネントモデルサポートを実装するエンジニアが足りていないことを感じさせる内容となった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- Cloud Native Wasm DayからWebAssemblyのスケジューラーWADMを解説するセッションを紹介
- 「KubeCon NA 2022」のプレカンファレンスからCloudNative Wasm DAYを紹介
- ヨーロッパ最大のテックカンファレンスKubeCon Europe 2023の共催イベントのWASM Dayを紹介
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介
- WebAssemblyを取り巻く最新情報をMeetupから紹介(後半)
- WasmCon 2023でFermyonのCTO、Radu Matei氏に訊いた。WASI進化の注目ポイントとは