Cloudflare WorkersがWebAssemblyでWASIをサポート。WebAssemblyはクロスプラットフォーム対応が当前の世界に

Cloudflareは、同社のCDNエッジでWebAssemblyが実行できるサービス「Cloudflare Workers」のWebAssemblyランタイムでWASI(WebAssembly System Interface)をサポートしたと発表しました

Cloudflare Workersは、同社が提供するグローバルなコンテンツデリバリーネットワーク(CDN)のエッジにおいて、開発者がJavaScriptのコードを配置し実行できる機能を提供するサービスです。WebAssemblyランタイムも用意されているため、WebAssemblyの実行にも対応します。

参考:CDNのエッジでJavaScriptとServiceWorkerを実行できる「Cloudflare Workers」がWebAssemblyに対応

今回はこのCloudflare WorkersのWebAssemblyランタイムにおいてWASIと呼ばれるAPIのサポートが発表されました。

システムコールを抽象化してWebAssemblyをポータブルにするWASI

WASIとは、OSのシステムコールを抽象化することでOS依存をなくし、ポータブルなWebAssemblyアプリケーションを実現する業界標準仕様のAPIです。

もともとWebAssemblyはWebブラウザ上で高速に実行できるバイナリフォーマットとして開発されましたが、Cloudflare WorkersのようにWebブラウザ以外の場所でも実行可能なランタイムが登場したことで、WebブラウザだけでなくWindowsやmacOS、LinuxなどのOS上や、CDNエッジなどさまざまな場所で実行されるようになりました。

これらさまざまなプラットフォーム上でWebAssemblyを実行しようとすると、WebAssemblyから、例えばファイルの読み込みや標準入出力などに関するシステムコールを呼び出すことになります。

このときプラットフォームごとにシステムコールのAPIが異なっていると、WebAssemblyのアプリケーションは各プラットフォームに依存したもの、例えばLinux専用のWebAssemblyアプリケーション、Cloudflare Workers専用のアプリケーションを開発しなければなりません。

そこでこうしたプラットフォームごとのシステムコールを抽象化することで、どのプラットフォームでも同一のWebAssemblyアプリケーションで実行可能にするのがWASIなのです。

WASIに則って開発されたWebAssemblyアプリケーションはどのWASI対応WebAssembly対応ランタイムでも同じように実行可能になる、クロスプラットフォーム対応となります。

WASIの普及でWebAssemblyはクロスプラットフォーム対応が当然に

Cloudflare WorkersのWebAssemblyランタイムがWASIに対応したことで、WASIを用いたクロスプラットフォーム対応のWebAssemblyアプリケーションがそのままCloudflare Workersで実行可能になります。

例えば、macOSやLinuxで利用できるWASI対応のスタンドアロンWebAssemblyランタイムであるWasmtimeでも、Cloudflare Workersでも、全く同一のWebAssemblyアプリケーションが実行可能です。

WASIは前述のように事実上の業界標準としてほとんどのWebAssemblyランタイムで実装が進んでいます。Cloudflare WorkersのWASI対応もそうした業界標準対応へのトレンドを象徴するできごとの1つです。

今後WebAssemblyアプリケーションはWASIによってクロスプラットフォームで実行できることが当たり前になっていくと見られます。