【2026年版】Denoの始め方 — セキュアなJavaScript/TypeScriptランタイムの完全ガイド
- インストールと実行方法
- Node.jsとの主な違い(セキュリティモデル・TypeScript標準サポート)
- 標準ライブラリとJSRの使い方
- Deno Deployへの簡単なデプロイ
インストール手順
# macOS/Linux
curl -fsSL https://deno.land/install.sh | sh
# Windows (PowerShell)
irm https://deno.land/install.ps1 | iex
# バージョン確認
deno --version
Denoコマンド早見表
deno run ファイル名.ts # TypeScriptをそのまま実行
deno run --allow-net server.ts # ネットワーク権限を付与して実行
deno run --allow-all app.ts # 全権限を付与(開発時のみ)
deno check ファイル名.ts # 型チェック
deno test # テスト実行
deno fmt # フォーマット
deno lint # リント
deno compile main.ts # 実行バイナリ生成
はじめてのコード
// server.ts - Denoで簡単なHTTPサーバー
Deno.serve({ port: 8000 }, (req) => {
const url = new URL(req.url);
if (url.pathname === "/") {
return new Response("Hello from Deno!", {
headers: { "Content-Type": "text/plain" },
});
}
return new Response("Not Found", { status: 404 });
});
console.log("サーバー起動: http://localhost:8000");
実行:
deno run --allow-net server.ts
よくある詰まりポイント
Q: Node.jsのライブラリが使えない
→ npm: プレフィックスを使えばnpmパッケージも使えます(例:import express from "npm:express")。ただし一部のNode.js固有APIは動作しない場合があります。
Q: --allow-net などの権限フラグが必要なのはなぜ?
→ Denoはデフォルトでファイル・ネットワーク・環境変数へのアクセスが制限されています。本番用途では必要な権限だけを明示的に許可するのがセキュリティ上の推奨です。
Q: Node.jsと使い分けはどうする? → エコシステムの成熟度ではNode.jsが勝りますが、TypeScriptの標準サポートや厳格なパーミッションモデルを活かしたい場合はDenoが有利です。新規プロジェクトで試してみる価値はあります。
実はDenoはNode.jsを作ったライアン・ダール(Ryan Dahl)が「Node.jsの反省点」を踏まえてゼロから設計し直したJavaScript/TypeScriptランタイムなんだ。Node.jsで後悔していたセキュリティやモジュール設計の問題を根本から解決しているんだよ。
作った人が自分でやり直したってこと?すごいね!インストールは難しいのかな?
ここで「deno --version」と打ってみてね。バージョンが表示されれば準備OK!次に「deno run https://deno.land/std/examples/welcome.ts」と打ってみよう。URLから直接TypeScriptファイルを実行するDenoの特徴を体験できるよ。
TypeScriptがそのまま動くって本当なの?
本当だよ。Node.jsだとTypeScriptを使うにはts-nodeやビルド設定が必要だけど、Denoは最初からTypeScriptコンパイラを内蔵しているから、.tsファイルをそのまま「deno run main.ts」で実行できる。tsconfig.jsonすら不要で、すぐに型の恩恵を受けられるんだ。
パーミッションシステムっていうのが特徴的らしいけど、どういう仕組みなの?
それは安心だね!でもnpmのパッケージが使えないと困らないのかな?
標準ライブラリっていうのもあるんだね?
デプロイする方法はどうなっているの?
deno.jsonっていう設定ファイルがあるみたいだけど、どういうものなの?
全部入りって感じだね!でもNode.jsからの乗り換えって実際どうなのかな?
なるほど、まずは新しいプロジェクトで試してみるのが良さそうだね!
その通り。「deno init」でプロジェクトのひな形が一発で作れるから、まずは小さなAPIサーバーやCLIツールから始めてみるといいよ。パーミッションの仕組みを体験すると、セキュリティに対する意識も自然と高まるし、TypeScriptの快適さにも感動すると思うよ。