最終更新:
【2026年版】Denoの始め方 — セキュアなJavaScript/TypeScriptランタイムの完全ガイド
🎚 難易度 ★★☆ 中級者向け
⏱ 学習時間の目安 読むだけ10分、動かすまで20分
📚 前提知識 javascript-getting-started の基礎知識・typescript-getting-started の基礎知識
✅ このガイドで学べること
- インストールと実行方法
- Node.jsとの主な違い(セキュリティモデル・TypeScript標準サポート)
- 標準ライブラリとJSRの使い方
- Deno Deployへの簡単なデプロイ
実はDenoはNode.jsを作ったライアン・ダール(Ryan Dahl)が「Node.jsの反省点」を踏まえてゼロから設計し直したJavaScript/TypeScriptランタイムなんだ。Node.jsで後悔していたセキュリティやモジュール設計の問題を根本から解決しているんだよ。
作った人が自分でやり直したってこと?すごいね!インストールは難しいのかな?
TypeScriptがそのまま動くって本当なの?
本当だよ。Node.jsだとTypeScriptを使うにはts-nodeやビルド設定が必要だけど、Denoは最初からTypeScriptコンパイラを内蔵しているから、.tsファイルをそのまま「deno run main.ts」で実行できる。tsconfig.jsonすら不要で、すぐに型の恩恵を受けられるんだ。
パーミッションシステムっていうのが特徴的らしいけど、どういう仕組みなの?
それは安心だね!でもnpmのパッケージが使えないと困らないのかな?
標準ライブラリっていうのもあるんだね?
デプロイする方法はどうなっているの?
「Deno Deploy」という公式のサーバーレス基盤があって、GitHubリポジトリを接続するだけで自動デプロイできるよ。無料プランは月100万リクエスト・転送20GiB・アプリ10個までだから、個人の小さなアプリなら十分に収まる。ただし旧版の「Deploy Classic」は公式ドキュメントで2026年7月20日に終了すると案内されていて、今から始めるなら console.deno.com の新しいDeployを使ってね。Webフレームワークなら「Fresh」が有名で、Islands Architectureで対話が必要な部分だけをブラウザ側で動かす設計だよ。ただしFreshはDeno社のリポジトリを離れてfreshframeworkという独立した組織で開発されているから、「Deno公式推奨」と書いてある古い記事は鵜呑みにしないでね。
deno.jsonっていう設定ファイルがあるみたいだけど、どういうものなの?
全部入りって感じだね!でもNode.jsからの乗り換えって実際どうなのかな?
なるほど、まずは新しいプロジェクトで試してみるのが良さそうだね!
その通り。「deno init」でプロジェクトのひな形が一発で作れるから、まずは小さなAPIサーバーやCLIツールから始めてみるといいよ。パーミッションの仕組みを体験すると、セキュリティに対する意識も自然と高まるし、TypeScriptの快適さにも感動すると思うよ。
インストール手順
# 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が有利です。新規プロジェクトで試してみる価値はあります。
参考資料
確認日:2026年9月23日。インストール方法・料金・提供状況は更新されるため、利用時は各公式ページも確認してください。
- Deno公式ドキュメント:Installation — シェル/PowerShellのインストールコマンドと各パッケージマネージャー
- Deno公式ドキュメント:First project —
deno --versionとdeno initから始める公式の手順 - Deno公式ドキュメント:Security and permissions — 既定で全アクセスを拒否し、フラグで明示的に許可する設計
- Deno公式ドキュメント:Standard Library — 標準ライブラリはJSRの
@stdスコープで配布 - Deno Deploy 料金 — 無料プランの上限(月100万リクエスト/20GiB転送/アプリ10個)
- Deno公式ドキュメント:Deploy Classic — Deploy Classicの終了日(2026年7月20日)と新Deployへの移行案内
- Fresh 公式サイト — Islands Architectureの説明(2026年9月時点の最新はFresh 2.3)
- freshframework/fresh(GitHub) — Freshの開発元はfreshframework組織