「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
Datadog、クラウド費用を可視化・管理するツールなど発表
IT関連
2022-11-03 02:17
NTT Com、国内向けデータセキュリティソリューションにCohesity製品を採用
IT関連
2023-02-18 09:31
マネージャーとリーダーの違いとは?–実は異なる2つの役割
IT関連
2022-12-15 23:37
クッキーバナーに新たな選択肢–IIJ、サイト視認性とプライバシーを両立する新サービス
IT関連
2024-10-31 15:54
「予防ファースト」で既存のセキュリティをアップデート–Deep InstinctのベスCEO
IT関連
2022-12-10 06:30
NECとオーストリアのPQC、量子コンピューターの開発で協業– NEDOの委託事業に活用へ
IT関連
2021-02-15 10:27
マイクロソフト、日本での生成AI開発を推進するプログラムを発表
IT関連
2023-06-29 01:56
ロンドンのJiffyが3.9億円のシード投資を調達しダークストア競争に参入
シェアリングエコノミー
2021-03-18 15:41
アップル「Vision Pro」を見て感じたこと–無限の可能性といくつかの疑問点
IT関連
2023-06-13 12:29
シトリックス、SASEに向けた「Citrix Secure Internet Access」を発表
IT関連
2021-02-27 11:22
「こんなの俺らのAppleじゃない!」 M1 MacショックとWindowsの行方 小寺・西田の2021年新春対談(前編) (1/2 ページ)
トップニュース
2021-01-30 00:12
日立の「OT×IT」組織再編の狙い–生成AI需要を狙う現実的対応
IT関連
2023-11-02 08:04
「パートナー重視」を掲げるWasabiの脇本日本代表
IT関連
2022-10-12 00:38
サイボウズ、クラウドサービス料金を値上げ–大企業向けプラン新設も
IT関連
2024-06-01 16:03