Cloudflare WorkersがNode.js API互換の提供を発表。Bun、Denoなどに続く対応により、Node.js APIはサーバサイドJavaScriptの事実上の標準になるか
Cloudflareは、エッジでJavaScriptを実行できるサービス「Cloudflare Workers」において、Node.jsのAPI互換機能を提供すると発表しました。
node.js APIs have officially landed in Cloudflare Workers — no polyfills required.
— Cloudflare Developers (@CloudflareDev) March 23, 2023
We've added AsyncLocalstorage, EventEmitter, Buffer, assert and util, with more on the way soon.https://t.co/8CkPZkS3Yb
Cloudflare Workersは、同社が提供するグローバルなコンテンツデリバリーネットワーク(CDN)のエッジにJavaScriptのコードを配置し実行できる機能を提供するサービスです。Python、Scala、Kotlin、Dartなどのプログラミング言語やWebAssemblyの実行にも対応します。
参考:JavaScript/WebAssemblyをCDNエッジで実行するCloudflare Workersが、Python、Scala、Kotlin、Dart、Reasonへの対応を発表
JavaScriptの実行環境としてはChromeブラウザやNode.jsのJavaScriptエンジンとして用いられている「V8」を採用し、Web標準であるService WorkerのAPIに発表当初から対応しています。
そして今回、Node.jsのコアAPIに対応することが発表され、その第一弾としてNode.jsのAsyncLocalStorage、EventEmitter、Buffer、assert、そしてutilの一部の機能が互換性フラグをセットすることで利用可能になりました。
それ以外のAPIについても間もなく提供が発表されると説明しています。
Node.js APIが事実上の業界標準になるのか
前述のようにCloudflare WorkersはWeb標準であるService WorkerのAPIを提供していました。今回なぜNode.jsのコアAPIも提供することにしたのでしょうか。
それはおそらく、Cloudflare Workersの競合であるDenoやBunがNode.js互換APIの提供を行っているためだと考えられます。
サーバサイドJavaScriptはNode.jsが切り開いてきた分野ですが、Node.jsの開発者であったライアン・ダール氏が、Node.jsよりも優れたJavaScript実行環境としてNode.jsの次に取り組んだDenoでは、あえてNode.jsとの互換性を持たずに開発されました。
しかし2022年8月、Denoは突然にNode.js互換へと方針変更を発表します。
参考:Denoが大幅な方針変更を発表。3カ月以内にnpmパッケージへの対応を実現、最速のJavaScriptランタイムを目指しHTTPサーバを刷新
これは2022年7月に登場するやいなや、Node.js、Denoに続くサーバサイドのJavaScript実行環境として注目されるようになったBunが、Node.js互換を備えていたことに大きく影響されたためだと推察されます。
参考:JavaScriptランタイム「Bun」が約9億円を調達、「Oven」社を設立。ホスティングやCIサービスなど計画
BunはNode.js互換であるため、登場当初からNode.jsの大きな資産である大量のnpmモジュールが使えたのです。DenoはこのBunの登場により、Node.jsの資産を活用できる利点にあらためて気づかされ、Node.js互換へと方針を変更したのでしょう。
そしてNode.js本家に加えてDeno、BunがNode.js API互換で足並みを揃えたことが、Cloudflare Workersの今回のNode.js API互換提供という方向性にも影響を与えたのではないかと想像されます。
これでNode.js APIはサーバサイドJavaScriptにおける事実上の標準へと近づいたように見えます。
他のサーバサイドJavaScript環境を提供するFastlyやAWSなどのベンダや、非WebブラウザにおけるJavaScript実行環境の相互運用性を実現するW3Cの「Web-interoperable Runtimes Community Group」(WinterCG)などはこうした動きにどう反応していくのか、注目したいと思います。
あわせて読みたい
Cloudflare Pages FunctionsがWebAssemblyに対応。WebAssemblyでサーバレスの関数を登録可能に
≪前の記事
サーバサイドWebAssemblyに、かつてのCGIの仕組みを取り込んだ「WCGI」をWasmerが発表。すぐ起動し安全に分離されるWebAssemblyの特長が活きる