RustとWebAssembly

RustとWebAssembly

そして次のパートとしてRustとWebAssemblyに関して説明を行い、Mozillaの中ではRustとWebAssemblyのワーキンググループができていることを紹介した。そもそもCやC++といったLow Level Languageにおいて、いかにメモリー関連の安全性を高めるか? というゴールに向かって開発されたRustが、CやC++とともに1st class citizenとして扱われているのは当然のことだ。そして、冒頭で紹介した「WebAssembly on the server is the future of computing」につながる接点が、やっと見えてきたというのが次のトピックだ。

RustとWebAssemblyのコンビネーションでワーキンググループを結成

RustとWebAssemblyのコンビネーションでワーキンググループを結成

ここからサーバーレスにつながる内容に

ここからサーバーレスにつながる内容に

サーバーレス

ここからが、このセッションのタイトルであるサーバーレスにつながる重要なポイントであろう。Webブラウザーの上でさまざまな言語のプログラムが稼働することを目指したWebAssemblyは、必ずしもブラウザーだけで実行されるわけではない。そのためにwasmtimeというランタイムが存在する。これはブラウザーを介さなくてもWebAssemblyのバイナリーが実行されることで、さまざまなプログラミング言語で書かれたプログラムがx86サーバーやARMのプロセッサーが搭載されたIoTデバイスでも実行が可能になるという話につながる。

APIでインフラが抽象化されることによりプラットフォームの進化につながる

APIでインフラが抽象化されることによりプラットフォームの進化につながる

その説明として、クラウドがどのように進化してきたのかをスライドを使って説明した。ここではデータセンターからIaaS、PaaSそしてサーバーレスに進化した際に、APIに注目していることがポイントだ。

つまり自社のデータセンターで稼働する場合は、LinuxなどのOSのAPIを使ってファイルやネットワークなどを使ってアプリケーションが実行される、一方PaaSの場合は、OSではなくそのプラットフォームのAPIとなり、より抽象化が進んだことになる。ここでは、APIが徐々に上のアプリケーションに近いレイヤーに上がってきていることに注意して欲しい。

そしてサーバーレスになった場合には、もはやOSやアプリケーションという外形ではなく、関数や機能という小さなレベルのプロセスがその下のAPIを通じてインフラストラクチャーを利用する形になる。これがAPIに注目した場合のアプリケーションの進化だ。この見方は、少し前であればDockerによるコンテナ化、そして2020年初頭の時点であればKubernetesによる複数のプロセスをAPIから制御する形に相応している。

この図はさまざまな言語の実行形式がDockerで抽象化されていることを示す

この図はさまざまな言語の実行形式がDockerで抽象化されていることを示す

この図をよく見ると、先にKlabnik氏が使ったWebAssemblyの図と相似であることが分かる。

WebAssemblyによるプログラムの実装(再掲)

WebAssemblyによるプログラムの実装(再掲)

つまりDockerがプログラミング言語の違いをコンテナでラップしていることに対し、バイナリーに変換されたRustなどのコードがランタイムを使ってサーバーサイドで実行されることでポータビリティーを獲得することになる。これによって、冒頭で紹介したSolomon Hykes氏の「2008年にWebAssemblyとWASIがあればDockerは必要なかった」という論点が整理されたのではないだろうか。コンテナはLinuxやWindowsなどのOSを区別する必要があるが、WebAssemblyであればその必要はないというわけだ。

WebAssemblyがサーバー側で実行されることでグローバルな展開が可能

WebAssemblyがサーバー側で実行されることでグローバルな展開が可能

WebAssembly System Interface(WASI)

ちなみにWebAssembly System Interface(WASI)とは、ブラウザーレスで実行する際にブラウザーがOSのAPIなどにアクセスしていた部分とのインターフェイスを定義するものだ。WASIはモジュール構造をとっており、WASI-Coreと呼ばれるモジュールがファイルシステムやネットワークなどへのアクセスを受け持ち、その他の追加機能は別モジュールで実装するという形式をとっている。

前のスライドで「グローバルなネットワークを作ることは巨大なサーバーファームを作ることではない」ということを強調したのは、AWSなどの巨大なサーバーファームがなくてもCloudflareの拠点にこのWebAssemblyのサーバー型アプリケーションを実装すれば、グローバルな展開は可能であるということを伝えたかったという意図がある。ちなみにCloudflareのPoP(Point of Presence)は、AWSのリージョン数よりもはるかに多いというのが次のスライドだ。

CloudflareのPoPは世界中に展開されている

CloudflareのPoPは世界中に展開されている

充実するWebAssemblyの周辺環境

そしてブラウザーレスでWebAssemblyのバイナリーを実行するランタイムも、Mozillaが公開しているwasmtimeの他に、Fastlyが開発し、Bytecode Allianceに寄贈されたLucetが存在する。

ちなみにBytecode AllianceはWebAssemblyとWASIをガバナンスするための団体であり、Mozilla、Fastly、Intel、Red Hatなどが参加している。他にもKlabnik氏が所属するCloudflareは、世界中に展開するCloudflareのサーバーにWebAssemblyのアプリケーションを実装するためのツールWorkerや、CLIツールWranglerなどを公開している。

wasmtime以外にもツールは充実し始めている

wasmtime以外にもツールは充実し始めている

最後にまとめとして、RustとWebAssemblyの親和性、WebAssemblyがサーバーレスのプラットフォームになる可能性、さらにARMなどのプロセッサーを使ったエッジでの可能性などを語ってセッションを終えた。

このセッションは、後半のブラウザーを使わずにランタイムを使ってサーバーレスを構築可能であるという部分がかなり駆け足となってしまったのが残念だが、JavaScriptを補完する形でブラウザーでのコンピューティングを拡張したWebAssemblyが、開発環境とCI/CDのためのツールやエンタープライズが求めるセキュリティなどの部分を充実させることで、サーバーレスに向かうというのは可能性としてはありえると思う。

今後は「マイクロサービスなどのユースケースに向けてエコシステムが拡大できるか?」「wasmコンテナの可能性は?」「Rustのランタイムとして市場をリードできるか?」「モニタリングやトレーシングなどのニーズに対応できるか?」という部分に注目が集まるだろう。Rustはデベロッパーからの注目を集めていることもあり、今後の動きに期待したい。

なお、動画は以下から視聴することができる。

動画:Rust, WebAssembly, and the future of Serverless

なおWebAssemblyをブラウザー以外で使うという部分に関しては、以下の動画も参考になる。これは2019年11月にコペンハーゲンで行われたGOTOというカンファンレスで行われたセッションである。セッションを行ったのはMozillaのDan Callahan氏だ。

動画:WebAssembly beyond the Browser

人気記事トップ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