【Deno】v2にもなったので改めてDenoを使ってみた
なにかと話題に上がっているDenoですが、やっぱり使い慣れているNode.jsをずっと使い続けていました。
ですが、先日v2がリリースされたのをきっかけに色々見ていたらめちゃくちゃ進化していたので、現在は個人プロジェクトで試しています。
本日は改めて、Denoの概要とざっくりHello Worldを試してみたいと思います!
Denoとは?
Denoは、Node.jsの生みの親であるRyan Dahl氏が設計した次世代JavaScript/TypeScriptランタイムです。Denoの主な目的は、Node.jsの設計上の課題を克服することです。
特徴
セキュリティがデフォルトで有効
Denoでは、ファイルシステムやネットワークなどへのアクセスがデフォルトで制限されています。必要な権限をコマンドラインで指定することで、意図しない動作を防ぎます。
TypeScriptがネイティブサポート
TypeScriptのコードをそのまま実行できます。コンパイルの手間を軽減します。
モジュール管理の改善
npmを使用せず、URLベースのモジュール管理を採用しています。package.jsonの管理が不要になります。
シンプルな標準ライブラリ
Denoには標準で高品質なユーティリティが多数含まれています。
現代のフロントエンドでは当たり前のようにTypeScriptで書かれているのでデフォルトで対応しているのは良いですね。
標準ライブラリも便利な物が多いイメージです。
それでは次はインストールです。
インストール方法
以下のコマンドを使用してください。
macOS/Linux
homebrewでもインストールできます。
Windows
PowerShellを管理者権限で開き、以下のコマンドを実行します。
その他、詳しい内容はインストール方法を参考にしてください。
確認
インストール後、以下のコマンドでバージョンを確認できます。
使い方
ここでは、Denoを使った簡単なスクリプトを作成し、実行してみます。
Hello World
以下のコードを hello.ts
という名前で保存します。
実行するには次のコマンドを入力してください。
以下の表示が出れば成功です!
権限を使ったスクリプト
次のコードはファイルの内容を読み取るスクリプトです。
example.txt
には以下のような内容を入れておきました。
このスクリプトを実行する際は、ファイルアクセスの権限を付与する必要があります。
そうすると、 example.txt
の中身が表示されたかと思います。
権限について
ちなみに、Denoはセキュリティを重視して設計されており、スクリプトがシステムリソースやネットワークにアクセスする際に、明示的な権限を要求します。
これにより、悪意のあるスクリプトがシステムに被害を与えるリスクを最小限に抑えることができます。
| 権限フラグ | 説明 |
|--|--|
|--allow-read | ファイルやディレクトリを読み取るための権限。|
|--allow-write | ファイルやディレクトリを書き込むための権限。|
|--allow-net |ネットワークアクセスを許可する権限。|
|--allow-env|環境変数へのアクセスを許可する権限。|
|--allow-run|外部コマンドを実行する権限。|
|--allow-ffi|外部関数インターフェース (FFI) の使用を許可。|
|--allow-all|すべての権限を付与(安全性に注意)。|
さらに詳しい説明はこちらから
ちなみに、省略形もあるようで今回の --allow-read
は -R
でも良いみたいです。
先程の readFile.ts
を権限を付けずに実行すると以下のようなエラーが表示されます。
HTTPサーバーの作成
次は、Denoの標準ライブラリを使って簡単なHTTPサーバーを作成してみましょう。
server.ts
というファイルを作成して、以下の内容を記述してください。
できたら、以下のコマンドで実行してみましょう。
http://localhost:8000
が開いて見れるようになっているかと思います。
さすがにフレームワークを使うときは不要だと思いますが、簡易的なローカルサーバーを立てる時はこれでも良さそうです。
終わりに
いかがでしたでしょうか?
Denoは、モダンなJavaScript/TypeScriptのランタイムとして、新しい可能性を広げています。
本記事で紹介した基本的な使い方を参考に、ぜひDenoの世界を探求してみてください。
今後も使っていくなかで新たな発見があればどんどん記事にしていきたいと思います!