WebAssemblyはブラウザ以外でも実用可能か?

F5エコシステム | 2024年11月26日

端的に言えば、はい。

WebAssembly(Wasm)は、Web開発に旋風を巻き起こす主要技術として台頭しています。人気ゲームDoomをブラウザだけで完全に実行する初期の技術デモから、通常のWebページ上でデスクトップ版のような完全な操作性を提供するPhotoshopのような大規模なレガシーアプリまで、WebAssemblyは、世界中のあらゆるパソコンにすでにインストールされている使い慣れたプログラム上で、まったく新しい体験を実現します。

Wasmは、ユーザーのコンピューターに搭載されているプロセッサーの種類を問わず、ほぼすべてのプログラミング言語で利用できるように設計されています。また、ブラウザーがユーザーのデータやシステムリソースへの不正アクセスを防ぐために活用する、セキュリティ上の優れた特性もいくつか備えています。こうした特性はブラウザー以外でも非常に有用であり、特にコードを分離して実行する場合や、移植性の極めて高いコードを実行する場合に役立ちます。

UnixにおけるPOSIXの歩み

デフォルトでは、WebAssemblyは実行先システムのリソースに一切アクセスできません。できるのは0と1の純粋な操作だけです。そのため、Wasmは本格的なアプリ開発よりも、動画のデコードや画像処理など、主に計算負荷の高いタスクに使用されてきました。WebAssemblyサンドボックスから、現在時刻の情報やファイルに保存されたデータなどの外部機能にアクセスできるようにするのは比較的簡単ですが、具体的にどのAPIを使用するかはアプリによって異なる傾向があります。

Unixシステムでも、ブラウザ外のWebAssemblyで現在起きていることと似た状況がありました。多くのアプリは、ネットワークやファイルシステムなどの共通システムリソースへのアクセスを必要としていましたが、その方法はオペレーティングシステムごとに少しずつ異なっていました。そこで、移植可能な標準オペレーティングシステムインターフェースとしてPOSIXが登場しました。すべてのUnix系システムがこのインターフェースを採用することで、プログラムとオペレーティングシステム間のやり取りを標準化できるようになりました。これにより、あるUnix系システム向けに設計されたプログラムを、別のUnix系システムでも動作するよう容易に移植できるようになりました。

WebAssembly System Interface「WASI」の登場

WebAssemblyプログラムがオペレーティングシステムとやり取りするための標準的な方法として、WebAssembly System Interface(WASI)が誕生しました。WASIは、POSIXに着想を得たCloudABIというプロジェクトから大きな影響を受けています。これにより、WebAssemblyがブラウザの外でも活躍できる可能性が大きく広がりました。WebAssemblyが備えるセキュリティとサンドボックスの特性を維持しながら、慎重に設計されたAPIを通じて一般的なシステムリソースにアクセスできるようになったのです。当然、これに似たテクノロジーとしてコンテナが思い浮かびます。このトピックを語るうえで欠かせないのが、Dockerの共同創業者Solomon Hykes氏がWASIについて投稿し、広く共有された、非常に示唆に富む次の言葉です。

Solomon Hykes氏のツイート

実に大胆な発言です。WebAssemblyを使用すると、あらゆるプラットフォーム上でネイティブに近い速度で安全かつセキュアに実行できるコードを、ポータブルな形式でパッケージ化できます。さらに、コンテナとは異なり、オペレーティングシステムを一切必要としないという利点もあります。開発者が作成するコンテナの多くには、プログラムの実行環境となる何らかのLinuxオペレーティングシステムが含まれているため、コンテナのサイズは数百MBから数GBに及ぶことも珍しくありません。一方、WebAssemblyバイナリは純粋なコードであり、多くの場合、サイズは数KBから1桁台のMBに収まります。あらゆる場所にコンテナをデプロイする代わりに、開発者がWebAssemblyをデプロイする世界を想像するのは突飛に思えるかもしれません。しかし、その未来はすでに現実になりつつあり、Kubernetes上でWasmを実行するための複数のプロジェクトが活発に開発されています。

本番環境におけるサーバーサイドWebAssembly

すでに多くの企業が、本番環境でサーバーサイドWasmのメリットを享受しています。CloudflareとFastlyはいずれも大規模なエッジコンピューティングネットワークを運用しており、ユーザーのできるだけ近くにコードを世界規模でデプロイできます。両社は、起動が速く、堅牢なマルチテナンシーを備えた小型で極めて移植性の高いバイナリを実現するため、戦略的にWebAssemblyを採用しました。新興企業のCosmonicは、巧みなネットワーク技術を活用し、手のひらに収まる小型デバイスでも、地球の反対側で稼働するマシンでも、実行場所を問わずWebAssemblyコンポーネント同士がシームレスに通信できるようにしています。もう1つの新興企業であるFermyonは、WebAssemblyを活用してサーバーワークロードの集約密度を大幅に高めています。その結果、サーバーコストを大幅に削減し、地球環境に配慮したコンピューティングを実現しています。

ブラウザ外での成長

まとめると、WebAssemblyは当初ブラウザ内でのコンピューティング向けに開発されましたが、ブラウザ外でも高い実用性を示し続けています。さまざまなプログラミング言語をサポートし、セキュリティを重視した設計により、コードを分離して実行し、可搬性を確保するための優れた選択肢となっています。WASIの登場によってサーバーサイドWebAssemblyの活用が広がり、組織はWasmを活用して、コスト効率を大幅に高めながら、より優れた製品を提供できるようになりました。ブラウザ外におけるWebAssemblyの可能性は、単なる構想ではなく、業界で拡大しつつある現実です。

詳しくは、以前のブログ記事「WebAssemblyに注目すべき理由」をご覧ください。

また、ポッドキャスト「WebAssembly Unleashed」を動画または音声でお楽しみください。

共有

関連するブログ記事

SOAS 2025:足並みの乱れが凡庸さを招く
F5エコシステム | 2025/05/13

SOAS 2025:足並みの乱れが凡庸さを招く

AI導入における方針の不一致は、非効率を招きます。セキュリティ、自動化、導入の各戦略を整合させ、AIの可能性を最大限に引き出す方法をご紹介します。

WebAssemblyが重要な理由
F5エコシステム | 2024/10/02

WebAssemblyが重要な理由

WebAssembly(Wasm)は、あらゆるプラットフォームで高性能なアプリケーションを実現する、ポータブルで高速かつセキュアなバイナリ命令セットです。

クラウドのコモディティ化
F5エコシステム | 2022/07/19

クラウドのコモディティ化

パブリッククラウドはもはや目新しい存在ではありませんが、XaaSやエッジ、そして新たなイノベーションサイクルへの道を切り開きました。

インフラストラクチャは依然として格好の攻撃経路
F5エコシステム | 2021/05/17

インフラストラクチャは依然として格好の攻撃経路

クラウドコンピューティングでは、APIやドラッグ&ドロップ式の設定ツールを活用し、ネットワークやインフラストラクチャを敬遠する人がそれらを直接扱わずに済むようにすることで、インフラストラクチャへの対応を不要にすることが長年追求されてきました。しかし、インフラストラクチャを無視することも、攻撃の主要な標的であるという事実を見過ごすこともできません。

堅牢なデータアーキテクチャがもたらす戦略的メリット
F5エコシステム | 2021/01/25

堅牢なデータアーキテクチャがもたらす戦略的メリット

適切に構築されたデータアーキテクチャがもたらす効果は、業務プロセスの改善にとどまりません。戦略的な業務効率の向上、より深いビジネスインサイトの獲得、隣接するビジネス機会への展開にもつながり、これらすべてをより俊敏に実行できるようになります。

デジタルワークフローにおける不正検知には、データだけでは不十分
F5エコシステム | 2020/09/21

デジタルワークフローにおける不正検知には、データだけでは不十分

2019年には、業界全体でクレジットカード詐欺の試みが約25万件確認されました。これは約2分に1件の割合です。今日、不正を検知するには、デジタルワークフロー上のできるだけ多くのポイントから収集したデータを相互に関連付け、手作業によるデータ処理をはるかに上回る速度で分析する能力が求められます。