Deno 2.0リリース - Node.js互換性の大幅強化

2025.12.18

Deno 2.0がついにリリース

2024年10月、Deno 2.0が正式リリースされました。Node.jsとの互換性を大幅に強化し、実用性が飛躍的に向上しています。Ryan Dahl氏が「Node.jsの反省点を活かして作った」Denoが、ついに本格的な選択肢になりました。

Denoとは: Node.jsの作者Ryan Dahl氏が開発したJavaScript/TypeScriptランタイム。セキュリティ、TypeScriptネイティブサポート、モダンなWeb標準APIが特徴です。

主要な新機能

1. npm完全互換

npmパッケージをそのまま使用できるようになりました。npm:スキーマを使って直接インポートできます。

// npmパッケージを直接インポート
import express from "npm:express@4";
import { z } from "npm:zod";

const app = express();
app.get("/", (req, res) => {
    res.json({ message: "Hello from Deno!" });
});

app.listen(3000);

ほとんどのnpmパッケージが動作し、Node.jsからの移行が容易になりました。

2. package.jsonサポート

package.jsonがあれば、従来通りのnpm installnode_modulesも使用可能に。

# 既存のNode.jsプロジェクトをDenoで実行
deno run --allow-net --allow-read app.js

# package.jsonのscriptsも実行可能
deno task start

3. LTS(Long Term Support)の導入

企業での採用を見据えて、LTSバージョンが導入されました。安定版の長期サポートにより、本番環境での利用が現実的になりました。

4. ワークスペースと複数プロジェクト管理

モノレポ構成をサポート。deno.jsonでワークスペースを定義できます。

// deno.json
{
  "workspace": ["./packages/api", "./packages/web", "./packages/shared"]
}

5. JSRによるパッケージ公開

JSR(JavaScript Registry)が登場。TypeScriptをそのまま公開でき、npmとDenoの両方で使えるパッケージを配布できます。

// JSRからのインポート
import { assertEquals } from "jsr:@std/assert";

// 公開は簡単
// deno publish

セキュリティモデル

Denoの大きな特徴であるセキュリティモデルも進化しています。

# 必要な権限のみを明示的に許可
deno run --allow-net=api.example.com --allow-read=./data app.ts

# 全権限を許可(開発時のみ推奨)
deno run -A app.ts
権限フラグ説明
--allow-netネットワークアクセス
--allow-readファイル読み取り
--allow-writeファイル書き込み
--allow-env環境変数アクセス
--allow-runサブプロセス実行

開発ツールの充実

Deno 2.0では開発体験も大幅に改善されています。

組み込みツール

# フォーマッター
deno fmt

# リンター
deno lint

# テストランナー
deno test

# ベンチマーク
deno bench

# ドキュメント生成
deno doc

# バンドラー
deno compile  # 単一実行ファイルを生成

TypeScriptネイティブ

設定不要でTypeScriptがそのまま動作。tsconfig.jsonの設定に悩む必要がありません。

// app.ts - そのまま実行可能
interface User {
    id: number;
    name: string;
}

const user: User = { id: 1, name: "田中" };
console.log(user);

Node.jsとの比較

機能Deno 2.0Node.js
TypeScriptネイティブサポート要トランスパイラ
セキュリティ明示的な権限制御全権限デフォルト
パッケージ管理URL/npm/jsrnpm
設定ファイル最小限多数必要
Web標準APIfetch等標準サポートv18以降で追加
エコシステム急成長中巨大・成熟

フレームワーク対応状況

主要なフレームワークのDeno対応状況です。

  • Fresh: Deno公式のフルスタックフレームワーク(Islands Architecture)
  • Hono: 高速なWebフレームワーク(Deno完全対応)
  • Oak: Express風のミドルウェアフレームワーク
  • Express: npm互換で動作
  • Next.js: 部分的にサポート
// Honoの例
import { Hono } from "npm:hono";

const app = new Hono();

app.get("/", (c) => c.json({ message: "Hello Hono!" }));

Deno.serve(app.fetch);

まとめ

Deno 2.0は、Node.js互換性の大幅強化により実用的な選択肢になりました。セキュリティ、TypeScriptネイティブ、モダンなAPIなど、多くの利点を持っています。新規プロジェクトや、セキュリティを重視する案件では、積極的に検討する価値があります。

← 一覧に戻る