10月9日、Simon Willison氏が「Deno is joining Cloudflare」と題した記事を公開した。CloudflareによるDenoの買収と、Denoランタイムが発表から1年後に開発終了となることを詳しく紹介している。
Node.jsおよびDenoの生みの親であるRyan Dahl氏が「自分が作ったプロジェクトは大きな問題を解決できなかった」と公言する事態は異例だ。2018年の講演「Node.jsに後悔していること(10 Things I Regret About Node.js)」でNodeの設計ミスを認め、その反省を元に2018年に立ち上げたDenoについても、今回は「Node互換性の重力井戸に引き込まれた」と評した。JS/TSエコシステムで有力なNode.js代替候補とされてきたDenoが事実上フェードアウトに向かう。
買収の本命は「celld」——Denoランタイムではない
今回の買収の核心は、Denoランタイムそのものではなく、celldというプロジェクトにある。
celldは、DenoチームがDenoとは別に今年8月に公開したオープンソースプロジェクトだ。Cloudflare WorkersのDurable Objectsパターン——サーバーレス環境で状態を持つオブジェクトを扱い、分散システムにおける調整(coordination)と永続化を実現する仕組み——をオープンソースで実装したものである。従来、Durable ObjectsはCloudflareのマネージドサービスとしてのみ利用可能だったが、celldはそのプログラミングモデルをセルフホストで実現することを目指している。
Cloudflareは今回の買収を通じて、このcelldをベースに「workerd(CloudflareのWorkersランタイム)のセルフホスティングを、Workersプログラミングモデルでアプリを構築・実行するための第一級のサポート手段にする」ことを目標に掲げている。
一方、Denoランタイム(TypeScript/JavaScriptのランタイム環境)については、以下の方針が発表されている。
バグ修正とセキュリティアップデートを含む月次リリースで、あと1年間Denoランタイムをサポートする。その1年が経過した後、Denoランタイムの開発は終了する。Denoはオープンソースのままであり、開発を継続したい人々を歓迎する。
Denoがオープンソースとして残ることは保証されるが、Cloudflareは積極的な開発を継続しない、という宣言だ。
Ryan Dahlが語る「なぜDenoをやめるのか」
Ryan Dahl氏は、この判断についてHacker Newsで自らコメントしている。
共同での決断であり、私も同意している。私はDenoの成功に最も投資し、最も多く取り組んできた。しかし、もはや自分が最も重要な仕事をできる場所ではないと感じている。Denoには良いアイデアがあり、よく設計されている。しかし結局のところ、大きな問題を解決できていない。Node互換性の重力井戸に引き込まれ、Nodeとまったく同じように振る舞うことを強いられてしまった。なぜNodeを再実装するのか?Nodeは動く。わずかなパフォーマンスやUX、セキュリティ上の利点では不十分だ。
私は強力な新しい抽象を構築することに興味がある。
celldは驚くほどうまく動作しており、調整と永続化のためにオブジェクトストレージだけに依存している。ファイルシステムやネットワークと少し異なるAPIというわけではなく、サーバー開発のまったく新しいモデルだ。
「Node互換性の重力井戸」という表現が指すのは、Denoが当初掲げていた「Nodeとの互換性は持たない」という姿勢が現実には後退を余儀なくされてきた経緯だ。Denoは途中からnpmパッケージのサポートやnode:プレフィックスによるNode.js組み込みモジュールへのアクセスを追加しており、差別化の軸だったはずの「Nodeではない」という特性が薄れていた。Ryan Dahl氏は渋々認めたのではなく、自分自身がその判断を下した当事者として語っている点が重要だ。
DenoのPermissions機能はどうなるか
Simon Willison氏が「Denoのお気に入りの機能」として挙げているのが、パーミッションシステムだ。Denoスクリプトを実行する際に、読み書きできるファイル・フォルダや、アクセスできるネットワークホストを明示的に指定できる仕組みで、セキュリティ意識の高い開発者から評価されてきた。
Node.jsにも同様のパーミッションモデルが存在する。2023年4月リリースのNode v20.0.0で追加され、2025年1月のNode v22.13.0で安定版として宣言された。ただし、現時点ではネットワークホストの許可リスト(allow-list)には対応しておらず、ネットワークアクセスはオン・オフの二択にとどまる。この点ではまだDenoの方が細かい制御が可能であり、Denoランタイムのサポート終了後にこのギャップが埋まるかどうかは不透明だ。
Hacker Newsの反応
Hacker Newsのスレッドには多くのエンジニアが反応を寄せている。Ryan Dahl氏のコメント自体がスレッドで最も注目を集めており、「Denoを作った本人が『大きな問題を解決できていない』と語るのは正直すぎる」という声がある一方、「celldのアーキテクチャへの期待」を表明するコメントも多い。
Node.js代替という文脈では、Bunがパフォーマンス面での存在感を高めており、「Denoが担っていたポジションはすでに変化していた」という見方もある。Denoのフェードアウトが業界に与える実質的な影響は限定的という意見がある一方、TypeScript-firstな開発体験やセキュリティモデルを評価していた層からは惜しむ声も上がっている。
詳細はDeno is joining Cloudflareを参照していただきたい。