サーバサイドのJavaScriptランタイム「WinterJS」登場。Rustで書かれ、WebAssembyにコンパイル可能なService Workerサーバ
今回は「サーバサイドのJavaScriptランタイム「WinterJS」登場。Rustで書かれ、WebAssembyにコンパイル可能なService Workerサーバ」についてご紹介します。
関連ワード (仕組、選択肢、重要等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
WebAssemblyランタイム「Wasmer」の開発元として知られているWasmer社は、新しいサーバサイドのJavaScriptランタイム「WinterJS」を発表しました。
Announcing WinterJS: a blazing-fast Javascript Service Workers server written in Rust powered by SpiderMonkey
❄️https://t.co/kX7jjJj6qv
— Wasmer (@wasmerio) October 27, 2023
WinterJSはRustで書かれた高速なService Workerサーバであり、オープンソースとして公開されています。
WinterCGとWASIXに対応
WinterJSの仕様は非Webブラウザ系JavaScriptランタイムのコード互換を目指す「Web-interoperable Runtimes Community Group」(WinterCG)に準拠しており、これを基にすることで同じくWinterCGに準拠したCloudflare WorkersやDeno Deployなどの他のJavaScriptランタイムとの互換性を実現するとしています。
参考:Deno、Node.js、Cloudflare Workersなど、非Webブラウザ系JavaScriptランタイムのコード互換を目指す「Web-interoperable Runtimes Community Group」(WinterCG)が発足
また、WinterJSはRustで書かれているため、このRustのコードからWinterJSのWebAssemblyバイナリを生成し、Wasmer社のWebAssemblyランタイムで実行することも可能。
このとき、「WASI」(WebAssembly System Interface)を拡張してPOSIX対応にするというWasmerが提唱する新技術「WASIX」にも対応します。
参考:WebAssemblyをPOSIX対応に拡張した「WASIX」登場、bashやcurl、WebサーバなどLinuxアプリが実装可能に。Wasmerが発表
WinterJSのJavaScriptエンジンには、FirefoxのSpiderMonkeyを採用。SpiderMonkeyはRust、C++、Rustで作られており、コンパイルによりWASI対応のWebAssemblyバイナリにコンパイル可能となっています。WinterJSでは、これを基にWASIX対応へと移植しました。
WinterJS発表の狙いは、Wasmer Edgeのターゲットを広げるため
Wasmer社は、エッジ環境でWebAssemblyランタイムを提供する分散プラットフォーム型のサービス「Wasmer Edge」を提供しています。
これは、Denoの開発元であるDeno LandがJavaScriptランタイムであるDenoをオープンソースで開発することで普及を目指し、それを背景に自社の商用サービスであるDeno Deployでマネタイズを図ろうとしているのと同様といえます。
つまりWasmer社はWebAssemblyランタイムのWasmerをオープンソースで開発し、さらにWebAssemblyでより高度なアプリケーションが開発できるようにWASIXのような仕組みを率先して開発、実装することでWasmerをより魅力的なWebAssemblyランタイムとした上で、自社の商用サービスであるWasmer Edgeでマネタイズする、というのがWasmer社のビジネスモデルだと言えるでしょう。
- WebAssemblyでBashのコマンドプロンプトを実装、Wasmer 4.0が正式リリース、POSIX対応の「WASIX」など安定版に
- 分散モノリスとWebAssemblyランタイムを用いた新しいアプリプラットフォーム「Wasmer Edge」登場。オーケストレーションもサービスメッシュも不要
今回、Wasmer社がWebAssemblyにコンパイル可能なJavaScriptランタイムとしてWinterJSを発表したのは、WinterJSをWasmer Edgeに展開することで、Wasmer EdgeをWebAssemblyのアプリケーションだけでなくJavaScriptアプリケーションのプラットフォームとしても提供可能にするためでしょう。
これによりWasmer Edgeのターゲットとなる市場が大きく広がるわけで、それはつまり同社にとってのビジネスチャンスが広がることを意味します。Wasmer社にとって、WinterJSの位置づけはおそらく非常に重要なものになるはずです。
と同時にこれは、JavaScriptランタイムとともにWebAssemblyランタイムもプラットフォームサービスとして提供しているDeno DeployやCloudflare Workersなど、多くの既存のJavaScriptランタイムのプラットフォームサービスと競合していくことを意味するわけです。
ただでさえ、現時点でサーバサイドのJavaScriptランタイムとそのプラットフォームには多くの選択肢があり、激しい競争が始まっている分野です。WinterJSの発表は、この競争をさらに厳しいものにしていくことになるのでしょう。