「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
ホットクック「まぜ技」回転速度が2倍に “自動ポテサラ”やホイップクリーム泡立ても
くらテク
2021-08-19 00:40
「Teams」の新機能「Excel Live」、会議での共同編集を可能に–8月末プレビューへ
IT関連
2022-07-22 05:35
広島大とNEC、COVID-19患者の情報を自動連携する仕組み構築
IT関連
2023-12-26 06:36
「Microsoft Teams」に外線電話を統合して真の“どこでもオフィス”を整備
IT関連
2021-01-24 22:12
Sailfish OSを開発するフィンランドのJollaはロシアとの関係を断ち切ろうとしている
IT関連
2022-03-03 01:19
Z世代の約7割がアプリでの個人情報登録に抵抗感–ラック調査
IT関連
2022-04-08 01:36
Hosted Control PlaneをAWS上で一般提供–レッドハット
IT関連
2024-02-01 12:11
DXのゴールは“実装”–ITとデジタルを部門統合した三井物産の組織運営(前編)
IT関連
2022-10-06 08:07
「Elasticsearch」のライセンス変更でAWSが示した対応方針
IT関連
2021-01-28 01:37
上海モーターショーで注目を集めていたEVたち
モビリティ
2021-05-02 22:47
「Red Hat OpenShift 4.7」正式リリース。既存の仮想マシンをKubernetes管理下へ移行するツール提供、vSphere上のWinowsコンテナをサポート
Docker / コンテナ / 仮想化
2021-03-02 12:42
Coral Capitalが投資先スタートアップ向けに新型コロナワクチン合同職域接種の開始を発表
VC / エンジェル
2021-06-09 05:47
地方行政デジタル化の大きな一歩は業務フローの可視化・標準化から
IT関連
2022-06-25 12:21
Apple ID残高に定期的にチャージする「オートチャージ」が利用可能に
IT関連
2021-05-11 02:40