WebAssemblyを取り巻く最新情報をMeetupから紹介(後半)
WebAssemblyの最新情報を紹介する記事の後半をお届けする。これは技術書籍の出版社として著名なオライリーから発売された「WebAssembly: The Definitive Guide」という書籍を書いたBrian Sletten氏が、2022年2月22日にシカゴで開催されたオンラインセミナー、Wasm Chicago Meetupで公開した動画をベースにしている。Sletten氏はWebAssemblyの最新情報を紹介するために以下の14のユースケースをベースに解説を行っている。この記事では後半部分から7.Notebook Environment、9.Strategy for Development、11.Emulation Environment、13.Cloud/Edge Computing Environmentの項を紹介する。
前回の記事:WebAssemblyを取り巻く最新情報をMeetupから紹介(前半)
動画:Brian Sletten: The Whole WebAssembly Enchilada
Sletten氏が挙げたユースケースは以下の通りだ。
- Mechanism for Code Reuse:コード再利用のためのメカニズムとしてのWASM
- Extend the Universal Client:クライアント用モジュールとしてのWASM
TensorFlowとRustで書かれたSudoku Solverを例に解説 - Extend the Server:サーバー自体を拡張するためのWASM
DenoにおけるWASMの利用を例に説明。 - Sandboxed Environment:実行環境をセキュアなサンドボックス化するための仕組みとしてのWASM
対象となるWASI、Wasmer、WAPMなどを紹介 - Optimizing Engine:高速化のためのWASM
JavaScriptに比べて高速なことを説明 - Plugin Engine:プラグインとして拡張するためのWASM
MS Flight Simulatorを例に挙げて説明 - Notebook Environment:科学演算のためのWASM
IodideというJupyter NotebookのJavaScript版のWASMによる実装を紹介 - Embedded Systems:エッジやエンベデッド向けシステムのためのWASM
- Strategy for Development:開発ツールの充実を紹介
eguiというRustで書かれたGUIモジュールを紹介 - Implementation Details:WASMが使われる実装例
Unoを例に挙げてマルチプラットフォームでの実装を紹介 - Emulation Environment:WASMを使ったエミュレーションの実装
WebAssembly.shとWebVMの紹介 - Decentralized Systems:分散システムのプラットフォームとしてのWASM
IPFSを例に挙げて分散型システムを解説 - Cloud/Edge Computing Environment:エッジのためのWASM
WasmEdge、wasmCloudを例に挙げてエッジでの実装を説明 - Mediating Hardware Differences:ハードウェアの違いを吸収するためのWASM
AppleシリコンやRISC-Vでの実装を解説。
Notebook Environment
Notebook Environmentという項では機械学習で利用されるJupyter NotebookのWebAssembly版であるIodideを紹介している。しかしIodideはMozillaの事情で開発への投資は終了したためすでに更新が止まっており、今後開発は行われないと告知されている。実際にはIodideのプラグインだったPyodide(Python on WebAssembly)が後継ということらしい。Pyodideについては以下の公式サイトを参照されたい。ベースとなっているのはWebAssemblyとEmscriptenというコンパイラーで、Pythonをクライアントにインストールしなくてもブラウザーだけで実行できるという点がJupyter Notebookとは異なっている。
Pyodide:What is Pyodide?
Strategy for Developmentという項ではRustで書かれたGUIのライブラリーであるeguiを紹介している。
eguiはWeb用のグラフィカルなパーツだけではなくネイティブアプリケーション用のパーツとしても利用でき、将来的にはゲームエンジンからも利用できることを目指しているという。メモリーセーフなRustでCやC++のコードを書き直す場合、GUIについてはeguiを使えばWebブラウザーでもネイティブアプリケーションとしてビルドする時も同じコードで実行できるというのは大きな利点だろう。
eguiのゴールとして「最も簡単なRust用のGUIライブラリーとなること」「ポータブルであること」などが挙げられている。フォトリアリスティックなCGを作ることを目指さずに2Dベースで簡単に使えてバグが起こりにくいコードを目指すというのは、Rustのメモリーセーフな特徴と同じ方向を向いていると言える。
eguiのGitHubページ:https://github.com/emilk/egui
またGUIのライブラリーとしても有名なQtもターゲットプラットフォームとしてWebAssemblyをサポートしている。ここではeguiと同様にWeb、ネイティブアプリケーションのどちらでも実行できるベースとして紹介されている。
QtのWebAssemblyに関するぺージ:Qt on the Web
Emulation Environment
Emulation Environmentという項ではWebAssemblyのランタイムであるWasmerとWAPMを使ってシェルをエミュレーションしたwebassembly.shと、ブラウザー上にLinuxの仮想マシンを実装したWebVMを紹介している。
どちらもWebAssemblyを使ってブラウザー上でエミュレーションを行っている点が似ている。あるシステムに必要なライブラリーやモジュールをコンテナでひとつのパッケージに閉じ込める発想をよりシンプルに実現したとも考えることができるという点で、元DockerのSolomon Hykes氏がサーバー側のWebAssemblyの重要性についてツイートしたこととも関連するだろう。
If WASM+WASI existed in 2008, we wouldn't have needed to created Docker. That's how important it is. Webassembly on the server is the future of computing. A standardized system interface was the missing link. Let's hope WASI is up to the task! https://t.co/wnXQg4kwa4
— Solomon Hykes (@solomonstre) March 27, 2019
Cloud/Edge Computing Environment
最後のユースケースであるCloud/Edge Computing Environmentについては、Fastlyのラボで開発されているWebAssembly関連のプロジェクト、エッジでWebAssemblyを実装するWasmEdge.orgを紹介した後に、WebAssemblyに特化したベンチャー企業であるFermyon、Suborbital、Cosmonicが開発するWasmCloudを紹介した。
Fastly Lab:https://www.fastlylabs.com/
WasmEdge:https://wasmedge.org/
この中でも注目すべきはFermyonだろう。FermyonのThe Teamというページを見れば、HelmやKrustletなどのオープンソースプロジェクトをリードしたMatt Butcher氏や、KubeConのキーノートでもお馴染みのMichelle Noorali氏(現姓はDhanani氏)などが創業者として名を連ねていることがわかる。
Fermyon:https://www.fermyon.com/about
Kubernetesの隆盛を支えたエンジニアがWebAssemblyのエコシステムをリードしていることを考えれば、モメンタムが明らかにWebAssemblyに来ていることがわかるだろう。ちなみにFermyonのホームページはRustで書かれたWebAssemblyとWAGIベースのCMSであるBartholomewで実装されており、実際に自分たちで開発したソフトウェアを使っている点にも注目したい。
Hykes氏のツイートに呼応するように、Kubernetesのプロジェクトの中でノードのコントローラーであるKubeletをRustで書き換えたKrustletによって、WebAssemblyもコードをKubernetesの上で実行できるようにしたのはDeisLabsのエンジニアが中心となって行ったと言われている。この関係性もFermyonの創業に繋がる線と思われる。オーケストレーターとしてのKubernetesはすでに退屈なプロジェクトであるが、その上でWebAssemblyが動くことでさらにその可能性が拡がると言えるだろう。
wasmCloudについてはKubeCon NA 2021のプレカンファレンスとして行われたWASM Dayの記事を参照されたい。
参考:KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
SuborbitalはサーバーレスのワークロードとしてWebAssemblyを使うということを訴求している。
Suborbital公式サイト:https://suborbital.dev/
全体を通して駆け足でありつつ、2022年2月時点での注目すべきソフトウェアやベンチャー企業、組織などを紹介したセッションとなった。スライドには最低限のリンクだけが記述されているのが残念だが、そのエッセンスをこの記事で読み取ってもらえたら幸いだ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- WebAssemblyを取り巻く最新情報をMeetupから紹介(前半)
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- 「KubeCon NA 2022」のプレカンファレンスからCloudNative Wasm DAYを紹介
- 「KubeCon NA 2022」から、WasmEdgeを開発するSecond StateのMichael Yuanのインタビュー
- WebAssemblyとRustが作るサーバーレスの未来
- KubeCon NA 2021プレカンファレンスのWASM Dayの後半を紹介
- Cloud Native Wasm Dayから大規模言語モデルをWasmで実行するデモを解説するセッションを紹介
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- KubeCon Europe 2024からWASMとeBPFを使ってストリーム処理を解説するセッションを紹介