【ディーノ】

Deno(ディーノ) とは?

💡 Node.jsの生みの親が「もう一度やり直すなら」と作り直したランタイム
📌 このページのポイント
Node.js vs Deno 比較 Node.js V8エンジン(C++製) npm でパッケージ管理 TS は ts-node / tsc が必要 デフォルト→全権限アクセス可 CommonJS + ESModules Deno V8エンジン(Rust製) URL / npm→ でインポート TypeScript ネイティブ対応 デフォルト→全権限ブロック🔒 ESModules + Web標準API
Node.js と Deno の主な違い
ひよこ ひよこ

Deno って Node.js と何が違うの?同じ JavaScript が動くんだよね?

ペンギン先生 ペンギン先生

そうだね、どちらも JavaScriptTypeScript を動かせるランタイムだよ。でも Deno は Node.js を作った Ryan Dahl さん自身が「Node.js で後悔した10のこと」という講演で発表した反省点を全部やり直したものなんだ

ひよこ ひよこ

自分で作ったものをダメ出しするってすごいね…具体的にどこが変わったの?

ペンギン先生 ペンギン先生

一番大きいのはセキュリティだよ。Node.jsスクリプトを実行するとファイルもネットワークも自由にアクセスできちゃうけど、Deno はデフォルトで全部ブロックされてるんだ。明示的に --allow-read や --allow-net のようにフラグを付けないとアクセスできない仕組みだよ

ひよこ ひよこ

TypeScript がそのまま動くっていうのも便利そう!

ペンギン先生 ペンギン先生

Node.js だと TypeScript を使うのに ts-node や tsc でのビルドが必要だったけど、Deno は内蔵の TypeScript コンパイラでそのまま実行できるんだ。しかもモジュールURL で直接インポートするから、npm install のような事前準備も基本不要だよ

ひよこ ひよこ

じゃあ npm のパッケージは使えないの?

ペンギン先生 ペンギン先生

最近のバージョンでは npm 互換レイヤーが追加されて、npm→ のプレフィックスで npm パッケージも使えるようになったよ。Node.js との互換性はどんどん改善されてるんだ

ひよこ ひよこ

Node.js からの移行って大変なのかな?

ペンギン先生 ペンギン先生

完全互換ではないけど、Deno は std ライブラリ(標準ライブラリ)が充実してるし、最近は package.json もサポートし始めたから移行のハードルは下がってきてるよ。新規プロジェクトで試してみるのがオススメだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Deno」って出てきたら「Node.jsの反省を活かしたセキュアな次世代JSランタイム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Deno」 = Node のアナグラム
💬 Node を並べ替えると Deno になるんだよ。恐竜のマスコットがトレードマークで、公式サイトにもかわいい恐竜がいるよ
← 用語集にもどる