一言で言えば、そうです。
WebAssembly (Wasm) は、Web 開発に旋風を巻き起こした主要なテクノロジーとして登場しました。 完全にブラウザ内で実行される人気ゲーム Doom などの初期の技術デモから、通常の Web ページで完全なデスクトップのようなエクスペリエンスを提供する Photoshop などの大規模なレガシー アプリまで、WebAssembly は、世界中のすべてのパーソナル コンピューターにすでにインストールされている使い慣れたプログラムでまったく新しいエクスペリエンスを提供します。
Wasm は、ユーザーのコンピューターに搭載されているプロセッサの種類に関係なく、ほぼすべてのプログラミング言語でサポートできるように設計されており、ブラウザーがユーザーのデータやシステム リソースへの不正アクセスを防ぐために使用するいくつかの有利なセキュリティ プロパティを備えています。 これらのプロパティは、特にコードを分離して実行したい場合や、超ポータブルな場合に、ブラウザーの外部で非常に便利であることがわかります。
デフォルトでは、WebAssembly は実行されているシステムのリソースにアクセスできません。 これらはすべて、ゼロと 1 の純粋な操作に過ぎません。そのため、Wasm は本格的なアプリ開発ではなく、ビデオのデコードや画像の操作など、計算量の多いタスクに主に使用されています。 WebAssembly サンドボックスに、現在の時刻に関する情報やファイルに保存されているデータなどの外部機能へのアクセスを許可するのは比較的簡単ですが、実際にどの API が使用されるかはアプリごとに異なる傾向があります。
Unix システムでは、ブラウザ外で WebAssembly に起こっていることと同様のことが起こりました。 多くのアプリは、ネットワークやファイル システムなどの共通のシステム リソースへのアクセスを必要としていましたが、各オペレーティング システムでその方法が若干異なっていました。 このため、POSIX は標準の移植可能なオペレーティング システム インターフェイスとして初登場しました。すべての Unix 系システムは、このインターフェイスを採用して、プログラムがオペレーティング システムと通信する方法を標準化できます。 これにより、ある Unix 系システムで動作するように設計されたプログラムを、別のシステムで動作するように簡単に移植できるようになりました。
WebAssembly プログラムがオペレーティング システムと通信するための標準的な方法を提供するために、WASI (WebAssembly System Interface) が誕生しました。 WASI は主に CloudABI というプロジェクトからインスピレーションを得ており、CloudABI は POSIX からインスピレーションを得ています。これにより、WebAssembly がブラウザーの外で活躍できるチャンスが広がりました。ユーザーは、WebAssembly のセキュリティとサンドボックスのすべてのプロパティと、サンドボックスを完全に失うことなく一般的なシステム リソースにアクセスするための配慮された API を利用できるようになりました。 当然、同様の技術としてコンテナが思い浮かびます。 このトピックに関する議論は、Docker の共同設立者である Solomon Hykes による WASI に関する最も意義深い共有投稿の 1 つを参照しなければ完結しません。
それはかなりすごい発言ですね。 WebAssembly は、あらゆるプラットフォームでネイティブに近い速度で安全かつ確実に実行できるコードをパッケージ化するポータブルな方法を提供します。また、コンテナーに比べて、オペレーティング システムがまったく必要ないという利点もあります。 開発者が作成するコンテナのほとんどは、プログラムが実行される何らかの Linux オペレーティング システムを備えており、コンテナのサイズは数百メガバイトまたは数ギガバイトになることがよくあります。 WebAssembly バイナリは純粋なコードであり、サイズはキロバイトまたは 1 桁のメガバイト単位であることが多いです。 あらゆる場所にコンテナをデプロイするのではなく、開発者が WebAssembly をデプロイする世界を想像するのは狂気のようですが、この現実はすでに実現しつつあり、Kubernetes 上で Wasm を実行するためのいくつかのプロジェクトが積極的に開発されています。
すでに多くの企業が、本番環境でサーバーサイド Wasm のメリットを享受しています。 Cloudflare と Fastly はどちらも、顧客が世界中のユーザーにできるだけ近い場所にコードを展開できる大規模なエッジ コンピューティング ネットワークを備えています。 どちらも、起動時間が短く、マルチテナント性が堅牢な、小型で超ポータブルなバイナリを実現するために、戦略的に WebAssembly を選択しました。 新興企業である Cosmonic は、巧妙なネットワークを使用して、WebAssembly コンポーネントが、手のひらサイズの小さなデバイスであろうと、地球の反対側で実行されているマシンであろうと、どこで実行されていても、シームレスに相互通信できるようにしています。 もう一つの新興企業である Fermyon は、WebAssembly を使用してサーバーのワークロード密度を大幅に向上させています。 その結果、サーバーコストが大幅に削減され、地球に優しいコンピューティングが実現します。
要約すると、WebAssembly は当初ブラウザ内コンピューティング用に開発されましたが、ブラウザ外でも高い実行可能性を示し続けています。 さまざまなプログラミング言語をサポートし、セキュリティを重視した設計により、コードを分離して実行し、移植性を実現するのに最適です。 WASI の導入により、サーバー側の WebAssembly が普及し、組織は Wasm を活用して、コスト効率を大幅に向上させながら、より優れた製品を提供できるようになりました。 WebAssembly のブラウザ外における可能性は単なるアイデアではなく、業界にとって現実となりつつあります。
詳細については、以前のブログ投稿「 WebAssembly を気にする必要がある理由」をご覧ください。
また、弊社の「WebAssembly Unleashed」ポッドキャストを視聴してください。