イベント・セミナー 2023 10

Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介

Wasmの将来計画をCosmonicのBailey Hayes氏によるブログと動画から解説。

松下 康之 - Yasuyuki Matsushita

2023年9月15日 6:00

Bytecode AllianceがホストするWebAssembly(Wasm)について、CosmonicのBailey Hayes氏が執筆したロードマップに関するブログと動画を紹介する。CNCFが主催するカンファレンスKubeConでも何度も取り上げられており、すでに業界の話題となっているWebAssemblyだが、団体的にはBytecode Allianceがホストするプロジェクトだ。Bytecode AllianceはAmazon、Arm、Intel、Microsoftというメジャーなベンダーから、Fermyon、Cosmonicといったベンチャーも所属する非営利団体で、主なプロジェクトとして挙げられているのがWebAssemblyとWebAssembly System Interface(WASI)であることから、Bytecode AllianceにとってはWasmが目下の最重要プロジェクトであることがわかる。他のプロジェクトもランタイムのWasmtime、RustコンパイラーのバックエンドでもあるCranelift、軽量のランタイムWAMRというWasm関連のソフトウェアで占められている。

●CosmonicのBailey Hayes氏による解説動画:July 2023 Bytecode Alliance Roadmap

Bytecode AllianceのHPから引用

Bytecode AllianceのHPから引用

CosmonicのBailey Hayes氏が書いたブログ記事そして動画は、WASI Preview 2というWASIの最新のプレビュー版の概要についてその背景やサブプロジェクトの動向、そして将来構想について解説する内容となっている。

Bailey Hayes氏が解説するWebAssemblyのロードマップ

Bailey Hayes氏が解説するWebAssemblyのロードマップ

ここでHeyes氏はPreview 2を構成する3つのレイヤーについて説明を行っている。その3つとはWebAssemblyのコアの仕様、コンポーネントモデルとWebAssembly Interface Type、WebAssembly System Interface(WASI)であり、それぞれについて解説を行っている。

他にもプログラミング言語ごとのツールとWebAssemblyモジュールが利用するレジストリについて説明を行っている。

言語ごとのツールとレジストリについても解説

言語ごとのツールとレジストリについても解説

コアの仕様の部分ではメモリーアクセスやスレッドの生成、ガベージコレクションに関する新しい仕様が提案されている。レジストリについてはWargがターゲットとして設定されているようだ。Wargについては、2023年2月にシアトルで開催されたCloudNativeSecutiryConの記事で紹介しているので参照して欲しい。

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

異なるプログラミング言語から呼ばれるライブラリーにおけるインターフェースを共通化する部分は、コンポーネントモデル、WebAssembly Interface Type(WIT)と呼ばれるレイヤーで開発が進んでいる。これは例えばRustで書かれたモジュールがGoやJavaScriptで書かれたライブラリーを呼ぶ場合も問題なく実行できることを目指している。その中で命名規則やバージョニング、リソースやハンドルの形式などについて開発が行われていることを説明した。

Modular WASI Interfacesによってデータベースやメッセージングなどを可能に

Modular WASI Interfacesによってデータベースやメッセージングなどを可能に

Modular WASI InterfacesはWASIの先に存在すべきサービスを定義し、予め用意された機能として提供することを目指しているようだ。それが結果としてWASI Cloudという形で実現を目指しているようだ。これはWasmのプラットフォームとしてFermyonが開発するSpinにおいてSQLiteが使えるように機能強化を行い、かつてのPaaS的な領域をカバーしようとしているのと同じ方向性だろう。Spinについては以下の記事を参照して欲しい。

●Spinの解説:All Things OpenからFermyonTechのMatt Butcher氏のセッションを紹介

FermyonはSpinをベースにクラウドサービスとして提供して、キーバリューストアやDNSなどの機能拡充を行っている。Kubernetes以外の選択肢としてのコンテンダーに名乗りを挙げたということだろう。そしてWasmにおいてもwasmCloudとして裾野を拡げようとしているのは興味深い動きだ。

プログラミング言語サポートで真っ先に挙がるのはRustとJavaScript

プログラミング言語サポートで真っ先に挙がるのはRustとJavaScript

プログラミング言語としては、Wasmと最も親和性が高いRustに加えてJavaScriptが挙げられている。Rustについては学習コストが高いことが問題視されているが、JavaScriptのサポートはそのような批判を避けながらサーバーサイドで多くのエンジニアがコミットしている状況への対応だろう。またComponetize-pyはPythonで書かれたモジュールをWebAssemblyの中で実行させるための仕組みだ。

WASI Preview 2の先には3が存在し、その先にWASI 1.0が存在するというのが段階的に進化していくWebAssemblyの未来だ。1.0の前にPreview 3では非同期処理が大きなターゲットとなっていることが説明されている。

非同期処理のサポートがWASIの次のターゲット

非同期処理のサポートがWASIの次のターゲット

このようにさまざまなマイルストーンを経て、コミュニティの同意とともにWASIが進化していく姿を間近に見られるのもオープンソースコミュニティの特性だろう。さまざまなベンダーの思惑が交差しながら着実に進化しているWebAssemblyの姿は、2023年9月にシアトルで開催される予定のWasmConで確認できるだろう。筆者も参加する予定なので期待して欲しい。

●Wasmのロードマップ:WebAssembly: An Updated Roadmap for Developers

この記事のキーワード

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

人気記事トップ10

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