Cloudflare WorkersがWebAssemblyでWASIをサポート。WebAssemblyはクロスプラットフォーム対応が当前の世界に
今回は「Cloudflare WorkersがWebAssemblyでWASIをサポート。WebAssemblyはクロスプラットフォーム対応が当前の世界に」についてご紹介します。
関連ワード (以外、機能、高速等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Cloudflareは、同社のCDNエッジでWebAssemblyが実行できるサービス「Cloudflare Workers」のWebAssemblyランタイムでWASI(WebAssembly System Interface)をサポートしたと発表しました。
Cloudflare Workers now supports WASI! https://t.co/IxFn3IAeZT
— Cloudflare (@Cloudflare) July 7, 2022
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によってクロスプラットフォームで実行できることが当たり前になっていくと見られます。