KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介

2024年5月13日(月)
松下 康之 - Yasuyuki Matsushita
KubeCon Europe 2024の共催イベントCloud Native Wasm Dayから、Cosmonicが行ったセッションを紹介する。

KubeCon+CloudNativeCon Europe 2024から、2024年3月19日に行われた共催イベントのCloud Native Wasm Dayのセッションを紹介する。これは当日午後から開催されたCloud Native Wasm Dayの最初の2つのセッションで、プレゼンターはいずれもCosmonic所属で、Cosmonicと言えばCNCFにホストされているプロジェクトであるwasmCloudの開発をリードしていることで知られている。

Wasm Dayの企画と運営は事実上Cosmonicが担当していたと想定される。実際、このセッションの後に行われた2つのユースケースのセッションはいずれもwasmCloudの導入事例であり、全体としてCosmonicのプロモーションのために上手く構成されたカンファレンスという印象を残すイベントとなった。

WebAssemblyはDockerと同じように流行るか? という問いかけ

前半はCosmonicのCTOであるBailey Hayes氏による「Components, WebAssembly's Docker's Moment」というタイトルのセッションだ。

●Bailey Hayes氏の動画:Components, WebAssembly's Docker's Moment

ここではDockerが2013年3月に登場しIT業界の新星としてもてはやされた状況を振り返り、「DockerのようなモメンタムがWebAssemblyにも起こるのだろうか?」という問いかけについて解説する内容となった。

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

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

Hayes氏は2024年3月というタイミングに、Dockerが登場した時のような状況になっているかどうかを検証してみようという問いかけからセッションを開始した。

「今がWasmにとってのDockerのモーメント?」という問いかけ

「今がWasmにとってのDockerのモーメント?」という問いかけ

ちなみにこのスライドでLiamと呼ばれているのは、CosmonicのCEOであるLiam Randall氏のことだ。Randall氏はCapital Oneの出身で、WebAssemblyの未来に賭けるためにCosmonicの創業者兼CEOとなった人物である。頻繁にWebAssembly関連のカンファレンスで登壇するRandall氏が「Liamが前にDockerと同じモメンタムが来てるよね? と書いていたかもしれないけど」というのがスライドの意味するところだろう。

その上でHayes氏はDockerとKubernetesの歴史を振り返った。単にDockerの登場だけではなくネームスペースやcgroupsなどにも触れているところがエンジニアらしい。Dockerが発表された当時、すでに膨大な数のコンテナとオーケストレーターであるBorgを社内で使っていたGoogleが「Let me contain that for you」という論文を発表することで、「Dockerこそがコンテナのパイオニア」という認識に対して抗ったこと、そしてその翌年2014年にKubernetesが発表され、それをホストするためのニュートラルな組織としてのCNCFがThe Linux Foundation配下で創立されたことも、前提知識として覚えておく必要があるだろう。

●参考:https://github.com/google/lmctfy

DockerとKubernetesの過去を振り返る

DockerとKubernetesの過去を振り返る

そして走り高跳びの背面飛びを生み出したエピソードを添えて「歴史のどこかのタイミングで何かが突然進化することがある」と説明し、それがコンテナについて起こったと解説した。

さらにWebAssemblyにおいてその進化は、WASI(WebAssembly System Interface)0.2であると語った。

違う言語で書かれたコンポーネントもインターフェイスを通じてカップリングできる

違う言語で書かれたコンポーネントもインターフェイスを通じてカップリングできる

特に異なるプログラミング言語同士をカップリングできるという部分については、現状の言語ごとのパッケージマネージャーやフレームワーク、ライブラリー、プロトコルなどでサイロ化していることに言及し、システムが複雑、大規模になっていく現状の課題について解説した。

言語ごとにサイロ化されたシステムの課題を解説

言語ごとにサイロ化されたシステムの課題を解説

このスライドではUnixの哲学がWASIにおいて活かされているとして、そのUnixの哲学の特徴を3点挙げて説明している。

Unixの哲学を解説してWASIとの共通点を探る

Unixの哲学を解説してWASIとの共通点を探る

その3点とは、「ひとつだけの機能を実装すること」「他のプログラムと協調すること」そして「ユニバーサルなインターフェイスであるテキストストリームを処理できること」である。その上でWebAssemblyがその3つをどのように実現しているのかを解説した。

ひとつだけの機能を実装し、他の機能とはインターフェイスを通じて通信を行う

ひとつだけの機能を実装し、他の機能とはインターフェイスを通じて通信を行う

複数のプログラムが協調して実行され通信を行うためのインターフェイスを定めたのがWIT(WebAssembly Interface Type)だ。

複数のプログラムが協調して実行される部分の解説

複数のプログラムが協調して実行される部分の解説

このスライドでは複数のプログラムがWITを通じて協調して実行されることが説明されているが、重要なのは2つのプログラムは協調しているが、プログラム間では何も共有されずにアイソレーションされていることだ。これによって不必要な特権や環境変数の共有は不要となる。

Unixの標準ストリームに相当するのがWIT

Unixの標準ストリームに相当するのがWIT

そしてUnixの標準ストリームに相当するのがWebAssembly Interface Typesだと説明。このスライドで使われているWITのチートシートはCosmonicが作成した簡易マニュアルと言えるもので、実際にイベントなどでラミネート加工されたうえで配布されている。ラミネート加工されているのは、マニュアルとして長く使って欲しいというCosmonicの配慮だろう。

ラミネート加工されたチートシート

ラミネート加工されたチートシート

Hayes氏は実際にWITの記述についても説明を行った。実際にチートシートの裏面にはソースコードについて個別に解説する内容が記載されており、マニュアルとして参照しやすい作りになっている。

ソースコードを使って中身を解説

ソースコードを使って中身を解説

チートシートの裏面はWITのソースコードの解説

チートシートの裏面はWITのソースコードの解説

そしてDockerが成功した要因についても解説し、WebAssemblyが同じ状況になっていると語った。WASIの進化についても0.2.0で安定版となり、worldと称されるコンポーネントの定義についてもCLIやキーバリューストアなどが用意されているが、それらに加えてWebGPUやエンベデッドなどの新しい環境についても追加されていくことが説明された。

WASIの進化を説明

WASIの進化を説明

最後に「DockerのモメンタムがWebAssemblyに起こっているのか?」という最初の質問については、すでにCNCFのエコシステムの中でWebAssemblyを活用しているプロジェクトが多数存在することを示して、セッションを終えた。

WebAssemblyのコンポーネントモデルを解説

次に行われたTaylor Thomas氏のセッションはデモを中心にしてWebAssemblyのコンポーネントモデルを解説したセッションだ。

CosmonicのDirector of Engineering、Taylor Thomas氏

CosmonicのDirector of Engineering、Taylor Thomas氏

ここではシンプルなWebサーバーを実装し、いわゆるHello World的なメッセージを表示させるデモアプリケーションを使ってWebAssemblyがWITの記述でさまざまな外部サービスを接続できることを見せる内容となっている。

●デモのGitHubページ:https://github.com/thomastaylor312/wasmdayeu2024-demo

●Taylor Thomas氏のデモセッション:Choosing Customizability and Distributing Dependencies with Wasm Components

単にメッセージを表示するだけではなく、Redisを使ってキーバリューストアにデータを保存するデモ、最後は独自のコンポーネントを組み込むところまでを見せることで、拡張できることを示した。

Hayes氏のプレゼンテーションとThomas氏のデモでWebAssemblyがコンポーネントモデルによって拡張できるだけではなく、import/exportによって外部に露出するインターフェイスを限定することでセキュアに実装できることを示した点は、セキュリティに敏感なエンジニアには朗報と感じられたことだろう。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

クラウドイベント
第13回

写真で見るKubeCon Europe 2024 ベンダーやコミュニティプロジェクトの展示を紹介

2024/6/20
KubeCon+CloudNativeCon Europe 2024の展示ブースをまとめて紹介する。
クラウドイベント
第12回

KubeCon Europe 2024に日本から参加したメンバーで座談会@桜の木の下

2024/6/17
KubeCon+CloudNativeCon Europe 2024に日本から参加したエンジニアに集まってもらい、座談会を実施した。
セキュリティイベント
第11回

KubeCon Europe 2024にて、グラフを用いてSBOMを可視化するGUACのコントリビューターにインタビュー

2024/6/13
KubeCon Europe 2024にて、SBOMを可視化するツールGUACのコントリビューターにインタビューを実施した。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています