最終更新:

【2026年版】Denoの始め方 — セキュアなJavaScript/TypeScriptランタイムの完全ガイド


Denoのセキュリティモデル — パーミッションゲート Denoアプリ .ts / .js コード実行 パーミッションゲート 🔒 --allow-net ネットワーク通信 🔒 --allow-read ファイル読み取り 🔒 --allow-write ファイル書き込み 🔒 --allow-env 環境変数アクセス インターネット ファイルシステム ディスク書込 環境変数 許可フラグなし = デフォルトで全てブロック(安全側に倒す設計)
Denoのパーミッションモデル — デフォルトですべてのリソースアクセスがブロックされる
ひよこ ひよこ

最近「Deno」ってよく聞くんだけど、Node.jsとは何が違うの?

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

実はDenoNode.jsを作ったライアン・ダール(Ryan Dahl)が「Node.jsの反省点」を踏まえてゼロから設計し直したJavaScript/TypeScriptランタイムなんだ。Node.jsで後悔していたセキュリティモジュール設計の問題を根本から解決しているんだよ。

ひよこ ひよこ

作った人が自分でやり直したってこと?すごいね!インストールは難しいのかな?

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

めちゃくちゃ簡単だよ。macOSやLinuxなら「curl -fsSL https://deno.land/install.sh | sh」、Windowsなら「irm https://deno.land/install.ps1 | iex」の一行で入る。brewやcargoでも入れられるし、バージョン管理ツールも不要で単一バイナリとして動くんだ。

ひよこ ひよこ

TypeScriptがそのまま動くって本当なの?

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

本当だよ。Node.jsだとTypeScriptを使うにはts-nodeやビルド設定が必要だけど、Denoは最初からTypeScriptコンパイラを内蔵しているから、.tsファイルをそのまま「deno run main.ts」で実行できる。tsconfig.jsonすら不要で、すぐに型の恩恵を受けられるんだ。

ひよこ ひよこ

パーミッションシステムっていうのが特徴的らしいけど、どういう仕組みなの?

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

Denoデフォルトでネットワークアクセスもファイル読み書きも環境変数の参照もすべてブロックされているんだ。実行時に「--allow-net」でネットワーク許可、「--allow-read」でファイル読み取り許可、「--allow-write」で書き込み許可、「--allow-env」で環境変数許可、というように明示的に権限を与える必要がある。悪意あるパッケージがこっそりファイルを読んだりネットワーク通信したりできない仕組みだよ。

ひよこ ひよこ

それは安心だね!でもnpmのパッケージが使えないと困らないのかな?

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

Deno 2.x以降はnpm互換が大幅に強化されていて、「npm:パッケージ名」という指定子を使えばほとんどのnpmパッケージがそのまま動くよ。package.jsonにも対応しているし、node_modulesディレクトリも使える。既存のNode.jsプロジェクトからの移行もかなり現実的になったんだ。

ひよこ ひよこ

標準ライブラリっていうのもあるんだね?

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

そうだよ。Deno標準ライブラリ(jsr:@std)には、ファイル操作、HTTPサーバー、テスト、暗号化、日付処理などがひと通り揃っている。Node.jsだとサードパーティに頼りがちな機能が公式で提供されているから、依存パッケージを減らせてセキュリティ面でも有利だね。

ひよこ ひよこ

デプロイする方法はどうなっているの?

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

Deno Deploy」というエッジコンピューティングプラットフォームが公式で用意されていて、GitHubリポジトリを接続するだけで自動デプロイできるよ。世界中のエッジロケーションで動くから低レイテンシだし、無料枠も十分ある。ちなみにWebフレームワークは「Fresh」が公式推奨で、Islands Architectureを採用していてパフォーマンスが優秀なんだ。

ひよこ ひよこ

deno.jsonっていう設定ファイルがあるみたいだけど、どういうものなの?

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

deno.jsonはDenoプロジェクトの設定ファイルで、タスク定義(npm scriptsに相当)、インポートマップ(パッケージのエイリアス)、コンパイラオプション、リンター・フォーマッターの設定をまとめて管理できるよ。「deno task dev」のようにタスク実行もできるし、「deno fmt」でコードフォーマット、「deno lint」でリントもビルトインで使えるんだ。

ひよこ ひよこ

全部入りって感じだね!でもNode.jsからの乗り換えって実際どうなのかな?

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

2026年時点だとnpm互換もかなり成熟しているから、新規プロジェクトならDenoを選ぶメリットは大きいよ。既存のNode.jsプロジェクトの移行も「deno lsp」がVSCodeで使えるから開発体験も良い。特にセキュリティを重視する場面や、TypeScriptをゼロ設定で使いたい場面ではDenoが光る。ただしまだ一部のnpmパッケージで互換性の問題があるから、プロジェクトの依存関係を事前にチェックするのがおすすめだね。

ひよこ ひよこ

なるほど、まずは新しいプロジェクトで試してみるのが良さそうだね!

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

その通り。「deno init」でプロジェクトのひな形が一発で作れるから、まずは小さなAPIサーバーやCLIツールから始めてみるといいよ。パーミッションの仕組みを体験すると、セキュリティに対する意識も自然と高まるし、TypeScriptの快適さにも感動すると思うよ。