「Deno 2」が間もなく登場。Denoにとって初めてのメジャーバージョンアップに

今回は「「Deno 2」が間もなく登場。Denoにとって初めてのメジャーバージョンアップに」についてご紹介します。

関連ワード (分散型、機能、開発推進等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


Node.jsの登場は、それまで比較的面倒だったノンブロッキングな非同期のネットワークプログラミングを容易にするAPIと、それをJavaScriptという非常に広く使われているプログラミング言語で利用可能にしたことで、サーバサイドにおけるJavaScriptランタイムという分野を新たに切り開くだけでなく、当時課題となっていたC10K問題の解決など、サーバアプリケーションの開発に大きな影響を与えました。

参考:Node.jsのコンセプトとは? ライアン・ダール氏による東京Node学園祭 基調講演(前編)

その上で、Node.jsはAWS Lambdaに代表されるサーバレスコンピューティング環境の基盤として採用され、新たな分散コンピューティング環境の革新にも寄与してきたと言えます。

ライアン・ダール氏の反省:NodeからDenoへ、

しかしNode.jsの開発者であるライアン・ダール氏は2012年にNode.jsの開発を実質的に離れ、その後に「Node.jsに関する10の反省点」を明らかにし、反省点を元にした新たなJavaScriptランタイムである「Deno」の開発を開始します。

参考:Denoの作者ライアン・ダール氏らが「Deno Company」を立ち上げ。Denoの開発推進と商用サービスの実現へ

DenoはあえてNode.jsとの互換性を捨て、Node.jsよりも優れたサーバサイドのJavaScript/TypeScriptランタイムを実現するという方針で開発されてきましたが、2022年に大幅な方針変更を発表し、Node.js互換機能とNode Package Manager(NPM)に対応するとしました。

参考:Denoが大幅な方針変更を発表。3カ月以内にnpmパッケージへの対応を実現、最速のJavaScriptランタイムを目指しHTTPサーバを刷新

「Deno 2」が間もなく登場、Deno初のメジャーバージョンアップ

そのDenoにとって初めてのメジャーバージョンアップとなる「Deno 2」が間もなく登場する見通しです。

Deno 1.xの最後のリリースとなる「Deno 1.46」が8月22日に公開されました。

Deno 1.46 is not only the last 1.x release, but also one of the biggest:
– Simpler CLI
– Multi-threaded web servers
– HTML, CSS, YAML support in `deno fmt`
– Better Node/npm compat (support for playwright, google-cloud, etc.)
and much more https://t.co/BtV7NyXBm5 pic.twitter.com/9ylvlZGGMy

— Deno (@deno_land) August 22, 2024

そして、そこから数日以内に「Deno 2」のリリース候補版が公開される見通しであることが発表されています。

Deno 2について作者のライアン・ダール氏は、昨年(2023年)4月にベルリンで行われた「Node Congres」の「Forced Optimization」という講演で説明し、また最近では今月(2024年8月)のStackOverflow Podcastのエピソード「Ryan Dahl explains why Deno had to evolve with version 2.0」でもその方向性を語っています。

特に後者はDeno 2のリリースが近いこともあって、より詳しく内容が語られています。同氏の発言から、Deno 2がどのような方向性を持つバージョンアップなのかを見ていきましょう。

モジュールシステムの拡大

ライアン・ダール氏はまず、そもそもDenoの大きなコンセプトの1つが、モジュールシステムにURLを採用したことだと説明しました。

We started Deno written in Rust. I think one of the major changes is that it uses HTTP specifiers, or let’s say URLs, for a module system. You did not import from NPM. You can host files anywhere on the web, kind of a decentralized module registry, and the idea was to vastly simplify what was going on in the Node ecosystem by just running JavaScript. And we’ve kind of taken this to the limit in some sense. We’ve built all sorts of tooling around this. Deno has been worked on for years now under this idea. It’s a nice idea because it’s really simple. Everything gets very simple when all you have is URLs for modules, and it works really great for small scripts.

私たちはRustでDenoの開発を始めました。Node.jsからの大きな変更点の1つは、モジュールシステムにHTTP指定子、つまりURLを使用するようにしたことです。NPMからインポートすることはしません。Web上のどこにでもファイルをホストできるので、一種の分散型モジュールレジストリなのです。Nodeのエコシステムで起きていることを、JavaScriptを実行するだけで大​​幅に簡素化できてしまうというアイデアです。私たちは、ある意味でこれを極限まで追求しました。これを中心にあらゆる種類のツールを構築しました。Denoはこのアイデアのもとで何年も開発されてきたのです。とてもシンプルで良いアイデアでした。

しかしこのアイデアは小さなスクリプトでは上手く機能したとしても、大規模なプロジェクトでは不十分だったことが分かりました。そのためDeno 2ではモジュールシステムの拡大を進めるとしています。

But what we found is that as you kind of scale up your projects, and this is going to be unsurprising to many people, it becomes difficult to manage a bunch of URLs kind of scattered around your code base, and so the impetus behind Deno 2 is kind of scaling up the module system.

しかし、多くの人にとって驚くことではないかもしれませんが、プロジェクトを拡大していくと、コードベースに散在する多数のURLを管理するのが難しくなることが分かりました。そのため、Deno 2ではモジュールシステムの拡大を進めています。

モジュールシステムの拡大には、すでに実装されているNPM対応に加え、モノレポのサポートなども含まれます。

So Deno 2 will have workspace support that is monorepo support, the ability to have multiple packages inside of it, and also, although we’ve kind of walked back from this, HTTP specifiers as kind of the central module system. We are still fairly unhappy with the NPM ecosystem. So you can still still import NPM modules and the compatibility is pretty great, but we’ve also introduced JSR, which is a very simple way to publish some JavaScript or TypeScript code and share it with people without a build setup and without too much rigmarole.

Deno 2ではモノレポをサポートするワークスペース、複数のパッケージを内部に保持する機能、などをサポートし、そして少し後退はしましたがHTTP指定子を一種の中央モジュールシステムとして使用します。私たちはまだNPMエコシステムに満足していません。そのため、NPMモジュールをインポートすることはできますし互換性もかなり優れたものにしましたが、JSRも導入しました。これはビルドの設定などの面倒な手間をかけずに、JavaScriptまたはTypeScriptのコードを簡単に公開して他のユーザーと共有できます。

ここで説明されている機能、ワークスペースによるモノレポのサポートJSRなどはどれも、すでにDeno 1.xで実装が進んでいます。

参考:Deno、モダンなJavaScript/TypeScriptに最適化したパッケージレジストリ「JSR」パブリックベータ公開。Node.js、Bun、Cloudflareなどにも対応

つまりDeno 2はメジャーバージョンアップではありますが、Deno 1.xとの互換性を保ちつつ、漸進的なバージョンアップになると見られます。このことはライアン・ダール氏も次のように説明しています。

And I should say that in Deno 2, all your Deno programs will continue to work. It’s not like this is kind of a radical change. This is an additive change.

Deno 2では、すべてのDenoプログラムは引き続き動作することをここで明言します。これは、劇的な変更ではなく、追加的な変更なのです。

またDeno 2では長期サポート(LTS:Long Term Support)版も予定されていると説明されており、Denoの開発を主導するDeno Landにとって、今後はビジネス面での展開も今以上に積極的に行っていくことが検討されているようです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
NTT Comと千葉大病院、秘密計算ディープラーニングなどによる臨床データ分析を研究
IT関連
2021-02-10 01:07
どうなる日経平均? 米国株最高値でも消えない米景気過熱、テーパリングへの不安
IT関連
2021-07-05 23:56
LegalForce、契約管理システム「LegalForceキャビネ」に担当者向け期限通知機能
IT関連
2022-12-01 10:14
凸版印刷、ゴルフトレーニングシステムを開発–アスリートの動作解析を活用
IT関連
2022-07-06 21:17
ランナーの走法に合わせてシューズを設計–アシックスの考えるモノづくりと“パーソナライズ”
IT関連
2021-07-12 05:17
アドビ共同創業者のジョン・ワーノック氏、82歳で死去
IT関連
2023-08-22 15:24
変化を味方につけた企業が勝者になる–日本リミニストリート・脇阪社長
IT関連
2024-01-06 15:53
良質な情報のひと口サイズの「知識ハック」をそろえるUptime
EdTech
2021-02-14 00:32
ギャルゲーのルーツ「夢幻戦士ヴァリス」、Switchで12月復活
くらテク
2021-08-20 12:59
農林水産省、ガバメントクラウドの先行事例を発表–府省におけるクラウドCoEの役務とは
IT関連
2023-05-16 02:33
デジタルを活用したGX/SXで経済社会の変革を進めよ
IT関連
2023-01-06 18:06
Linux界のリーダーらが「Flathub」のアプリストア構築に乗り出した理由
IT関連
2023-03-15 16:27
Niantic、世界の3Dマップ構築目指し、LiDARスキャンのScaniverse買収
企業・業界動向
2021-08-12 13:41
EdTechが勢いを拡大したY Combinatorの最新バッチ
EdTech
2021-04-06 11:43