
Denoを使えばTypeScriptを簡単に実行することができます。 Denoでは、以下のようなTypeScriptスクリプトを直接実行できます。
例: 「Ethereum鍵ペアを生成するTypeScriptスクリプト」
| |
実行
| |
とても楽です
Denoとは?
Deno は、Node.jsの作者Ryan Dahl氏が開発した新しいランタイムです。TypeScriptをそのまま実行でき、シングルバイナリで動作し、セキュリティもデフォルトで強化されています。
- TypeScript/JavaScriptをそのまま実行
- シングルバイナリでインストールが簡単
- 権限管理がデフォルトで有効(安全)
- npmパッケージやURLから直接import可能
インストール方法
公式サイトのInstallページ を参考に、以下のコマンドでインストールできます。
macOS/Linux (Homebrew)
| |
Windows (PowerShell)
| |
Node.jsでTypeScriptを実行する具体的な手順例
たとえば、先ほどの「Ethereum鍵ペアを生成するTypeScriptスクリプト」をNode.jsで実行する場合、以下のような手順が必要です。
- Node.js本体のインストール
- プロジェクトディレクトリの作成と初期化
| |
- TypeScriptとts-node、型定義のインストール
| |
- tsconfig.jsonの作成(最低限の設定)
| |
- TypeScriptファイルの作成(例: generate-wallet.ts)
| |
- スクリプトの実行
| |
以上のように、たった1ファイルのTypeScriptを動かすだけでも、複数のnpmパッケージのインストールや設定ファイルの作成が必要です。 Denoなら「インストールして即実行」ですが、Node.jsではセットアップの手間が大きく異なります。
CDNからのモジュールインポート
Denoの大きな特徴の一つは、URLから直接モジュールをインポートできることです。サンプルコードでは以下のようにインポートしています:
| |
CDNインポートのメリット
package.jsonやnode_modulesが不要- バージョンをURLに直接指定できる
- 依存関係を明示的に表現できる
- キャッシュされるため2回目以降は高速
主なCDNサービス
- esm.sh - npmパッケージをESMに変換して提供
- deno.land/x - Deno用モジュールのレジストリ
- skypack.dev - npmパッケージをESM形式で提供
- jspm.io - npmパッケージをESMに変換
型定義の利用
CDNインポートでも型定義を使用できます:
| |
// @deno-types コメントを使用することで、npmから型定義をダウンロードし、エディタの自動補完やコンパイル時の型チェックが機能します。
Denoの権限モデル: -A オプションの意味
サンプルコードの冒頭のシェバン(shebang)で使ってるDenoの起動オプションについて説明します。
#!/usr/bin/env deno run -A
この部分です。
Denoでは、セキュリティを重視するため「権限モデル」を採用しています。 -A (または --allow-all )オプションは、すべての権限をスクリプトに付与するフラグです。
主な権限フラグ
--allow-net=<domains>- 特定ドメインへのネットワークアクセスを許可(例:--allow-net=api.example.com)--allow-read=<paths>- 特定パスからのファイル読み取りを許可(例:--allow-read=./data)--allow-write=<paths>- 特定パスへのファイル書き込みを許可(例:--allow-write=./output)--allow-env- 環境変数へのアクセスを許可--allow-run- 外部プログラムの実行を許可-Aまたは--allow-all- すべての権限を許可(開発時のみ推奨)
権限の組み合わせ例
| |
-A は --allow-all の略で、ネットワークやファイルアクセスなど、すべての権限をスクリプトに与えます。
Denoはデフォルトで非常にセキュアですが、外部APIやファイル操作が必要な場合は明示的に権限を付与する必要があります。
--allow-netネットワークアクセス許可--allow-readファイル読み取り許可--allow-writeファイル書き込み許可-Aすべて許可(開発時や信頼できるスクリプトのみ推奨)