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

KubeCon Europe 2025で行われた、CosmonicとMicrosoftによるWASMの事例解説セッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2025年6月13日 6:00

KubeCon+CloudNativeCon Europe 2025から、WebAssemblyの概要と事例紹介、そしてコントリビュータに助けを求めたセッションを紹介する。プレゼンテーションを行ったのはCosmonicのTylor Thomas氏とMicrosoftのDavid Justice氏だ。それぞれWasm Working GroupのCo-chairとして登壇した。

コンビでセッションを行うお馴染みの野球帽姿のThomas氏(左)とJustice氏(右)

コンビでセッションを行うお馴染みの野球帽姿のThomas氏(左)とJustice氏(右)

セッションは以下の公式URLから可能となっている。

●動画:Wasm I Right or Wasm I Wrong? a Review of the Wasm Ecosystem

最初にThomas氏がWebAssemblyの歴史を簡単に振り返り、Mozillaのエンジニアによってasm.jsと言う名称で2014年にドラフトが作成されたことを説明。その後、W3Cのドラフトとして2018年にコアとなる仕様が作成され提案されたこと、2019年にW3Cのリコメンデーションとしての仕様が作成されたことを説明した。

asm.jsからWebAssemblyに至る簡単な歴史を振り返る

asm.jsからWebAssemblyに至る簡単な歴史を振り返る

そしてブラウザーで稼働するプラットフォームを選ばない実行形式からクラウド、つまりサーバー側で実行される互換性が高く安全な実行形式に進化したことを、それぞれブラウザーとサーバー側の特徴を比較して説明した。ここではほぼ同じ特徴を持っていることが強調された形になっている。

ブラウザーのWebAssemblyとサーバーやエッジで動くWebAssemblyの共通点を解説

ブラウザーのWebAssemblyとサーバーやエッジで動くWebAssemblyの共通点を解説

ここでは高い互換性、ファイルサイズが小さく高速、サンドボックスによって安全であること、複数のプログラミング言語から生成可能であることなどが挙げられている。

コンポーネントモデルを紹介

コンポーネントモデルを紹介

WebAssemblyのコンポーネントモデルは2024年にWASI(WebAssembly System Interface)の一部として公開された、複数のWebAssemblyで書かれたモジュールのインターフェースを統一するための仕組みだ。

複数のWasmモジュールのインターフェースを定めたコンポーネントモデル

複数のWasmモジュールのインターフェースを定めたコンポーネントモデル

これによって異なるプログラミング言語で書かれたモジュールを連携させることが容易になる。この例ではRustで書かれたファイルとGoで書かれたファイル同士で、データの交換や関数の呼び出しが可能になる。

コンポーネントモデルの記述例を見せて解説

コンポーネントモデルの記述例を見せて解説

具体的なプログラムコードを見せてインポートとエクスポートの例を解説。ここではコアな機能に加えて、ロギングや外部プログラムの実行が例として挙げられている。

WASIの進化を時系列で解説。2024年に始まったWASIは2026年に安定版として公開予定

WASIの進化を時系列で解説。2024年に始まったWASIは2026年に安定版として公開予定

ここからはWebAssemblyに関連したソフトウェアを列挙して説明する内容となった。

最初に挙げたのはMicrosoftのOBが起業したFermyonのSpin

最初に挙げたのはMicrosoftのOBが起業したFermyonのSpin

このスライドで解説されているSpinは、WebAssemblyの特徴を活かしたサーバーレスのアプリを実行するためのプラットフォームだ。興味深いのはCosmonicもwasmCloudというプラットフォームを提供しているベンチャーだが、wasmCloudはジェネリックなPaaS的な立ち位置、Spinはよりサーバーレスに特化したプラットフォームということで競合しないという発想だろうか。

●Spin:https://www.fermyon.com/spin

Renderletのサイトを紹介

Renderletのサイトを紹介

次に紹介されたのは、3Dグラフィックスを素早く生成するためのツールRenderletだ。デスクトップ(WindowsやmacOS)での3Dモデルを生成するためのツールだが、ブラウザーの部分にWebAssemblyが使われているようだ。具体的にはWanderという名称のWebAssemblyで書かれたレンダリングモジュールが存在している。

●Renderlet:https://www.renderlet.com/

次に紹介されたのはZedというエディターだ。

エディターを拡張する部分にWebAssemblyを使っているZed

エディターを拡張する部分にWebAssemblyを使っているZed

ZedはRustで書かれたエディターとして公開されている。その拡張の部分がコンポーネントモデルということになる。

KubernetesのスケジューラーをWASMで実装するフレームワーク

KubernetesのスケジューラーをWASMで実装するフレームワーク

次に紹介されたのはKube-scheduler-wasm-extensionと呼ばれるプロジェクトで、KubernetesのSIGで議論され開発されているという。これはeBPFがLinuxのカーネルで実行したいモジュールを安全に組み込むために利用されていることと同様の発想だ。本来、Kubernetesに独自のスケジューリングアルゴリズムを組み込むためには、Goでアルゴリズムを開発し、スケジューラーをビルドすることで組み込む必要があるが、アルゴリズムをWebAssemblyで実装し外部のモジュールとして組み込むことで、スケジューラーをビルドする手間をなくすという発想だ。

詳細は以下のスケジューラーのSIGのGitHubページを参照して欲しい。

●WASMベースのスケジューラー:https://github.com/kubernetes-sigs/kube-scheduler-wasm-extension

AzureのRustライブラリーHyperlightの紹介

AzureのRustライブラリーHyperlightの紹介

事例の最初にFermyonのSpinがWebAssemblyの利用例として紹介されたが、HyperlightはMicrosoftのパブリッククラウドであるAzureチームが開発し、CNCFにサンドボックスとして寄贈したプロジェクトになる。Spinも2024年3月にサンドボックスとして寄贈されているのでほぼ競合するソフトウェアということになる。

GoogleのService Extensionもプラグインの部分はWebAssemblyで実装

GoogleのService Extensionもプラグインの部分はWebAssemblyで実装

GoogleもGoogle Cloudのサービスを拡張する機能の部分をWebAssemblyで実装している。

Inspektor GadgetもeBPFとWasmで拡張可能なデータ検証用のツール

Inspektor GadgetもeBPFとWasmで拡張可能なデータ検証用のツール

Inspektor GadgetはKubernetesクラスターの監視のためのデータ収集ツールとして開発され、これもCNCFのサンドボックスとして採用されている。Inspektor Gadgetは検証のためのプログラムをeBPFで開発し、OCIの形でパッケージ化し利用するというもので、その中にWasmのレイヤーを実装可能ということになる。

次はNGINXのUnitだ。Unitのバージョン1.34.2ではWebAssemblyのランタイム、wasmtimeを使ってアプリケーションを実装できると説明されている。

NGINXの軽量なアプリケーションサーバーUnitでもWebAssemblyが実行可能

NGINXの軽量なアプリケーションサーバーUnitでもWebAssemblyが実行可能

●nginx unit:https://unit.nginx.org/

次に紹介されたのはKubernetesのポリシーエンジンであるKubewardenだ。セキュリティの観点からKubernetes上で実行されるアプリケーションの行いを制御するAdmission Controlの実装例としてKeyvernoやOPAなどが知られているが、KubewardenもポリシーエンジンとしてRANCHERを手掛けるSUSEによって開発され公開されている。これもCNCFのサンドボックスプロジェクトだ。

WebAssemblyでポリシーを実装するKubernetesのポリシーエンジン、Kubewarden

WebAssemblyでポリシーを実装するKubernetesのポリシーエンジン、Kubewarden

ここまでWebAssemblyが広く採用されていることを紹介したが、プラグインという発想で機能を拡張するということはセキュリティの意味からは危険であり、コンポーネントモデルによって権限を制限したうえで安全に実行する形式に変わって欲しいと訴えた。

コンポーネントモデルで危険なプラグインモデルを終わらせたい

コンポーネントモデルで危険なプラグインモデルを終わらせたい

ここで例として挙げられているBuildpackは、Herokuによるコンテナイメージ生成ツールである。PaaSの実行形式として公開され、Dockerを使わずにコンテナイメージを生成できることが主な利点として紹介されている。

Buildpackについては以下の公式サイトを参照されたい。

●参考:https://buildpacks.io/

ここではデベロッパーがコンテナイメージ生成のために面倒なDockerfileを作成しなくても、適切な依存関係を理解してイメージを生成できるという開発現場のユーザー体験を再現したいという意味が込められていると思われる。

マンダロリアンのセリフを使ってGoのコンポーネントモデルを実装するエンジニアを募集

マンダロリアンのセリフを使ってGoのコンポーネントモデルを実装するエンジニアを募集

最後にGo言語からコンポーネントモデルをサポートするランタイムが必要であり、その開発に協力してくれるエンジニアを募っていることを強く訴えてセッションを終えた。このスライドではStar Warsのマンダロリアンの決めセリフ「This is the way」を使って「Go言語でもコンポーネントモデルサポートが存在するべきだ」という意味を伝えようとしていた。

Go言語でコンポーネントモデルを実装して欲しいと強く訴えた

Go言語でコンポーネントモデルを実装して欲しいと強く訴えた

このセッションの本当の目的はGoのコンポーネントモデル開発のエンジニア募集ではなかったかと思わせる切実な声で、他のWebAssembly関連のセッションでも最後の部分では同じ訴求内容となっていたことからも、Go言語のコンポーネントモデルサポートを実装するエンジニアが足りていないことを感じさせる内容となった。

人気記事トップ10

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30