「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
ビックカメラ、抽選で全額還元 コロナ禍での家電製品のニーズ変化に対応
-
2021-01-17 02:24
B2B営業のためのプラットフォームAccordがシードで約6億円調達
ネットサービス
2021-02-15 13:00
SAP、2022年の事業戦略を発表–クラウド、サステナビリティーで選ばれる会社に
IT関連
2022-02-18 02:24
マイクロソフトが無償でJavaの長期サポートを提供へ、「Microsoft Build of OpenJDK」をリリース
Java
2021-04-07 00:25
給料日を待たずに給与の一部が引き出せる新機能をRevolutが英国で導入
IT関連
2021-08-21 04:28
新規の酵素遺伝子や反応経路を探索可能なプラットフォームを手がけるdigzymeが約1.5億円のプレシリーズA調達
バイオテック
2021-08-11 08:15
「信頼される製品ベンダー」から「戦略的ビジネスパートナー」へ–シスコ・中川社長
IT関連
2023-01-06 12:45
GoogleがSonosの特許5件を侵害したと予備裁定が認定
IT関連
2021-08-16 16:57
MS、「Maia 100」AIアクセラレーターと「Cobalt 100」プロセッサーを発表
IT関連
2023-11-17 18:10
Pelotonはトレッドミルのリコールで収益への影響を約180億円と予測
ハードウェア
2021-05-08 15:55
heyが実店舗とネットショップの商品・在庫・売上データを自動で同期・一元管理できるPOSレジアプリ「STORES レジ」公開
ネットサービス
2021-06-16 03:06
MosaicがGCからシリーズAで1850万ドルを調達、CFOソフトウェアスタックの再構築を目指す
IT関連
2021-02-27 23:22
運用して分かるEDR効果の限界とXDRが出現している理由
IT関連
2023-06-02 02:29
中京大、職員の業務に生成AI活用–学生の面接対策などで改善確認
IT関連
2024-06-22 21:09