10月10日、Denoは「Deno 2」を正式に発表した。Denoは、JavaScriptおよびTypeScriptをサポートする現代的なツールチェーンとして、すでに数多くの開発者に愛用されているが、新バージョンのDeno 2はさらに多くの機能と強化を備え、特にNode.jsおよびnpmとの互換性を大幅に改善している。
Deno 2の主要機能
Deno 2では、多くの新機能が導入されている。以下は主な機能である。
Node.jsおよびnpmとの互換性:Deno 2は、既存のNode.jsプロジェクトやnpmパッケージをシームレスにサポートしており、
package.json
やnode_modules
を直接利用可能である。これにより、既存のNodeプロジェクトにDenoのツールを導入することができる。Denoでは、npm:
という形式でnpmパッケージをインポートすることも可能で、node_modules
を作成せずにパッケージを直接利用することができる。import chalk from "npm:chalk@5.3.0"; console.log(chalk.blue("Hello, world!"));
Denoはさらに、npmの高度な機能であるNode-APIのネイティブアドオンもサポートしており、より複雑なパッケージの利用も可能だ。
パッケージ管理の強化:
deno install
、deno add
、deno remove
という新しいコマンドが導入されており、パッケージの管理がより簡便になった。これらのコマンドは、npmに慣れた開発者にも直感的に使えるものである。deno install
は、依存パッケージを高速でインストールでき、package.json
が存在する場合にはnode_modules
フォルダを作成し、依存関係を自動で解決する。Denoは冷キャッシュ時でもnpmより15%速く、ホットキャッシュでは90%速い。deno add
とdeno remove
は、依存関係の追加と削除を行うコマンドであり、npmと同様の操作感を提供している。
ワークスペースとモノレポサポート:Deno 2は、複数のプロジェクトを一括で管理するためのワークスペース機能を導入している。
deno.json
でメンバーを指定することで、異なる依存関係や設定を持つ複数のプロジェクトを一元管理できる。{ "workspace": ["./add", "./subtract"] }
さらに、npmワークスペースとの互換性もあり、Denoとnpmを混在させたモノレポ構成もサポートしている。これにより、Node.jsとDenoのツールを併用することが可能だ。
長期サポート(LTS)リリース:Deno 2.1からは、安定した環境を提供するためのLTSリリースが導入される。LTSリリースでは、重要なバグ修正が6ヶ月間にわたってバックポートされ、企業などの大規模なプロジェクトにも対応する。
プライベートnpmレジストリのサポート:Deno 2では、プライベートnpmレジストリをサポートしている。
.npmrc
ファイルを使用することで、企業内で使用されるプライベートパッケージを簡単に取り込むことが可能だ。@mycompany:registry=http://mycompany.com:8111/
Deno標準ライブラリが安定版に
Deno 2では、Deno標準ライブラリ(Standard Library)が安定版としてリリースされた。標準ライブラリは、データ操作、ウェブ関連のロジック、JavaScript特有の機能など、さまざまなユーティリティモジュールを提供している。これにより、開発者はnpmモジュールを探して評価する時間を大幅に削減できる。
Deno標準ライブラリは、数年にわたり厳密に監査され、安定した品質を維持してきた。これらのモジュールはJSR上で提供されており、他のランタイムや環境でも使用可能だ。
標準ライブラリに含まれるモジュールの一部は以下の通りである:
- データ操作
- ウェブ関連ロジック
- JavaScript特有のユーティリティ
npmにおけるこれらのモジュールの対応物については、完全なリストがこちらで確認できる。
Deno 2の既存機能の改良
Deno 2では、以下の既存機能が大幅に強化された。
- deno fmt:HTML、CSS、YAMLのフォーマットに対応し、ウェブ開発者にとっての利便性が向上した。
- deno lint:Node.jsに特化したルールとクイックフィックスが追加され、より効率的なコードチェックが可能になった。
- deno test:
node:test
を使用したテストの実行をサポートし、Node.jsとDenoの相互運用性がさらに向上した。 - deno task:
package.json
スクリプトの実行が可能になり、Node.jsとDenoの統合が進んでいる。 - deno serve:複数コアにわたる並行HTTPサーバーの実行が可能になり、スケーラビリティが向上した。
- deno compile:Windowsでのコード署名とアイコンのサポートが追加され、デスクトップアプリケーションの作成が容易になった。
- deno jupyter:画像やグラフ、HTMLの出力をサポートし、データの可視化が強化された。
- deno bench:クリティカルセクションのサポートにより、ベンチマークの精度が向上した。
- deno coverage:HTML形式でのレポート出力が可能になり、カバレッジ分析が強化された。
JavaScript Registry (JSR)
Deno 2には、JavaScriptライブラリを共有するためのモダンなレジストリ「JSR」も含まれている。JSRはTypeScriptをネイティブでサポートしており、モジュールのロードをランタイム間でシームレスに行うことができる。また、JSDocスタイルのコメントからドキュメントを自動生成する機能も備えている。
JSRは、npmやnpxのように使用できるため、既存のプロジェクトでも簡単に利用することができる。また、JSRを使用してTypeScriptソースコードをアップロードし、JavaScriptや型定義ファイルとして公開することも可能だ。
Deno 2のパフォーマンス
Deno 2は、さまざまな実際のシナリオにおいてパフォーマンスが向上している。起動時間やリクエストの処理速度、全体的な効率性が強化されており、開発者の作業を大幅に効率化する。特にDenoは、Cold CacheとHot Cacheのシナリオにおいてnpmを凌駕する速度を誇る。
FAQ
DenoはNode.jsと互換性があるが、Denoを使うメリットは何か?
DenoはNode.jsプログラムを実行できるが、ネイティブなTypeScriptサポートやWeb標準API、セキュアな実行モデルを持つことから、よりモダンで効率的なJavaScript開発を提供する。Denoを使用することで、セットアップや設定にかかる時間を大幅に削減できる。Denoのセキュリティモデルは、Node.jsプログラムでも適用されるのか?
はい。Denoのセキュリティモデルは、Node.jsプログラムやnpmモジュールの実行時にも適用される。Deno 2で導入された新しいロゴは、なぜ変更されたのか?
Denoのロゴはより洗練され、プロフェッショナルな印象を与えるものに刷新された。これにより、Denoのプロダクションレベルのツールチェーンとしての地位を強調している。
詳細は[Announcing Deno 2]を参照していただきたい。