Galapagos Tech Blog

株式会社ガラパゴスのメンバーによる技術ブログです。

Deno はいいぞ

サービス開発パートナー事業部*1 Android エンジニアの松下です。今年に入ってから利き手の逆でご飯を食べるようにしています。
自分は右利きなので左手で食べています。これで右脳が鍛えられるとか…?まだあまり実感はないですが。

皆さんは雑なスクリプトを書くときは何を使いますか? RubyPython などでも良いですが、外部ライブラリを使う際はちょっと面倒だったりします。
そこで Deno !試してみませんか!一回だけ!一回だけだからさ…。

Deno は TypeScript のランタイム環境です。なんかすごい早いらしいです。

deno.land

自分は TypeScript 結構スキなのですが、 Node でやる場合はトランスパイルのために色々追加でインストールしないといけないので結構面倒です。
Deno は TypeScript のままで動いてくれるのでとても楽!

以下からインストールして

deno.land

以下のコマンドを入れてみましょう!なんと Deno はホスティングされているスクリプトをそのまま実行する機能もありました。

$ deno run https://deno.land/std@0.181.0/examples/welcome.ts
Welcome to Deno!

次に以下を実行してみましょう

import { walk } from "https://deno.land/std@0.181.0/fs/walk.ts";

for await (const entry of walk(".")) {
  console.log(entry.path);
}
$ deno run main.ts
┌ ⚠️  Deno requests read access to ".".
├ Requested by `Deno.stat()` API
├ Run again with --allow-read to bypass this prompt.
└ Allow? [y/n/A] (y = yes, allow; n = no, deny; A = allow all read permissions) > y
.
main.ts
test.text

なんと何もしなくてもライブラリがいい感じにインストールされてコードが実行されます。事前に gem とか pip とかしなくても良いのは楽ですね。

そうそう、 Deno は 権限が必要な処理が実行されそうな場合は実行前にこうやって確認が出ます。これで不穏なライブラリが勝手に色々することを察知することができます。
CLI で予め許可することも可能です。

$ deno run --allow-read main.ts
.
main.ts
test.text

そして実行ファイルにまとめて他者に配布することも可能です。

$ deno compile --allow-read --output main main.ts
Compile file:///Users/kota.matsushita/Documents/blog_20230329/main.ts
Emit main

$ ./main
.
main.ts
test.text
main

便利!

所感

TypeScript は雑に書くこともかっちり書くことも可能で、なんとなく書いてもなんとなく型がついてくれてとても書きやすい言語だと思います。
雑なスクリプトtypo や外部ライブラリのドキュメントの読み込みなどで時間が取られてしまうところを、型である程度は解決できるので、雑なスクリプトは Deno で書いてみるのも良いのではないでしょうか?

*1:AIR Design for Apps 事業部が改名しました