退屈を感じていたので、名前だけは聞いていた Deno を触ってみた。
今回、公式サイトトップを眺めながら hello world まで触っただけの完全に雑多なメモ。
Deno とは
- JavaScript と TypeScript のランタイムである
- セキュアなランタイムである
- 明示的に有効にしない限り、ファイル・ネットワーク・環境へのアクセスが不可
Deno のインストール
Deno は単一の実行可能バイナリが配布される。
Ubuntu on WSL2 の環境にインストールを試みる。 シェル環境においては、インストールスクリプトを実行すればよい。
curl -fsSL https://deno.land/x/install/install.sh | sh
Oops !!
unzip
コマンドが必要だったが、環境に存在していなかった。
Error: unzip is required to install Deno (see: https://github.com/denoland/deno_install#unzip-is-required).
unzip
をインストールした。ついでにzip
も。
sudo apt install unzip zip
PATHを通す
export DENO_INSTALL="$HOME/.deno" export PATH="$DENO_INSTALL/bin:$PATH"
フォーマッターや各種ツールが一つのバイナリにまとまっていて、それでなお 72MB ほどというので、キュッと収まっている印象がある。
Getting Started
deno run https://deno.land/std/examples/welcome.ts # Download https://deno.land/std/examples/welcome.ts # Warning Implicitly using latest version (0.90.0) for http://deno.land/std/examples/welcome.ts # Download https://deno.land/std@0.90.0/examples/welcome.ts # Check https://deno.land/std/examples/welcome.ts # Welcome to Deno!
deno run
でそのままスクリプトを実行できるらしい。
インストールスクリプトをcurl
で取って sh
に 流しておいて言うのもなんだが、ちょっと緊張する。
だからこそ、ファイルやネットワークや環境へのアクセスはデフォルトで遮断してあるのだなと実感した。
Download
の部分はそのまま素直に受け取っていいだろう。
Check
はよくわからない。
スクリプトの内容は素直。
console.log("Welcome to Deno!");
再実行したら、スクリプト本体によるWelcome to Deno!
だけが出力された。
スクリプトはキャッシュされるらしい。
ドキュメント
モジュールはネットワーク上にある
- Node.js では npm を使ってパッケージをローカルに取得し、名前の解決をNode.jsに任せて import していた
- Deno では モジュールの所在を URL で指定する
- 標準のモジュールでさえ、インターネット上で配布されている
- それは監査済みである、とのこと
感想
node.js
を触ったときのように、TypeScriptのコードを書いてdeno
でさっと実行できるのは手軽になってよい。
eslint
を足したりpretter
を入れたり、@types
を入れたりと、そういう手間がなくなった。
モジュールにどう依存してるかが import
文の URL しかないので、 dependabot が仕事しにくくなりそう。
いや、grepして最新と突き合わせるだけか?
調べたいこと
- std module さえ無い状態でできることの確認
- stdinとstdoutの扱い方
- とりあえずこれさえ押さえれば、何かしら使える