このブログは更新を終了しました。移転先はこちらです。

2023-10-05

Denoを使い始めた

 ここ最近、Denoを使い始めた。


(※プログラミングについて色々書いていますが非プログラマーの素人が頑張って喋っているだけなので表現の正確さは全く保証しません。)


 Denoとはなんぞやというのはお調べいただければと思うが、簡単に言うとNode.jsの製作者であるRyan Dahl氏がNode.jsの設計ミスを解決すべく開発したJavaScript実行環境ということになろうかと思う。「Node.jsを洗練させたもの」という感じである。

 要はサーバーサイド(素人的に言うとWebブラウザ上ではなくパソコン上ということ)でJavaScriptを使うためのもので、例えばローカルファイルを読み込んで操作したりサーバーを立てたりできる。できることは無限にあると思うが、今のところ私の中で理解と実践が可能なのはローカルファイルの操作である。私が作っている自作ツールというのは、WebブラウザをGUIとして利用しているが、Node.jsでローカルサーバーを立ててローカルファイルの読み書きを可能にしている。


 Node.jsはnode_modulesフォルダにライブラリがガンガン追加されていくわけだが、この形式のせいでコードを置く場所が縛られている感じがするし、自分で直接触ることのないファイルが作業ディレクトリ内に大量に発生するのにも違和感があった。Denoはnode_modulesを生成しないのでとても身軽である。別にどこに書いてもいいし、どこで実行してもいい。触りもしないよくわからないファイルが視界の中に溜まっていくこともない。

 また、DenoはTypeScriptで書いたコードをそのまま実行できる。jsファイルを生成しなくて良いのである。そうするとソースマップのmapファイルも生まれないし、フォルダの中はスッキリサッパリ。

 require形式からimport形式に変更されているのも良い。私は新参者なのでES2015の仕様が自分にとって普通で、CommonJSは混乱の元になっている。書き方を機械的に覚えてはいるが、同じ意味のものに別の書き方があるみたいなのはもやもやと気になってしまう(歴史的にやむを得なかった分岐なのはわかっているのだが)。なので全部importで済むのは非常にありがたい。

 Node.jsにあった問題点が如何なるものでそれが実際にどう解消されているのかというのは話が高度過ぎて私にはよくわからないのだが、普通に使おうとしてすぐ出くわすような部分のデザインの変更だけでも快適さが段違いである。


 こんな感じでなんだか気分がたいへん軽やかになったので、ローカルファイルの操作に関して色々と思いつき、あれこれコードを書いた。

 具体的には、或るディレクトリ内に存在するプレーンテキストとdocxファイルを全部まとめてTextManager用のjsonに変換するとか、階層付きテキストをjsonに変換するとかである。パソコンの中に散らばっているテキスト情報を掃除機のようにガーッと吸い取って良い感じに整えるということができるようになった。

 CLIコマンドにも急に親しみ(?)を感じ始め、コマンドへの苦手意識がすっと消えた。Denoの仕様を知ることで、そもそもコマンドとは何なのかというのがちょっとわかったような気がする。


 Denoにすることで自分に可能なことが増えた、というわけではない。Denoでできること、少なくとも今の私がやれることはNode.jsでもやろうと思いさえすればできることである。しかし、潜在的に可能なことについて「できそう」と思うに至れるかどうか、という点で私の中ではNode.jsとDenoの間に大きな違いがあるのだと思う。

 理解しなくても支障がないものだとしても、それがあると「理解できそう」という希望が生まれない、みたいなことというのがある。Node.jsのデザインは私にとって希望を生まれにくくする暗幕のようなものだったので、Denoの採用は大変に高い効果があった。

 もっと早くから使っていれば……という思いはなくもないが、Node.jsとTypeScriptとCLIにある程度以上慣れていないと多分全然理解できないことだったので、このタイミングでの導入はまあ妥当なところなのだろうと思う。Deno自体、何年か前の時点では新しすぎて不安定な部分が多かっただろうし、仕様変更にすいすいついていけるスキルも私にはないわけなので、2023年の今というのは挑戦にはちょうどよかったのかもしれない。


参考リンク