Macで、Node.jsのexpressを試していたところ、面白いというか感心した点があったので備忘録。
何が面白かったのかというと、expressではなくNode.js(というよりもnpm)におけるパッケージ「インストール」の考え方。昔ながらのソフトウェア開発において外部ライブラリの取り込みは、一般的に「そのコンピュータの共有ライブラリとしてインストール」していた。つまりMac, Linux, Unix等では /usr/local/
の下に、Windowsであれば(慣例すら生まれていない気もするので一例としては) C:\Program Files\
などの下に関連ファイル一式を配置する。npmでは、このようなインストール方法は標準動作ではない。
npmでのパッケージインストールの考え方において最初にあるのは、「インストール」ではなく「依存関係」のようだ。どういうことかと言うと、実際問題として「パッケージXをインストールしたい」ときは「Xを使うアプリを開発したい」ときだ。なので、まず最初にアプリの名前などの定義を行い、その一環としてアプリが必要とするパッケージを登録する。そしてその後に、必要なパッケージをダウンロードして「そのアプリのサブディレクトリに」配置する。ということで、npmではアプリごとにパッケージのファイルをインストールするのが標準的になっているようだ。
この考え方で優れているところは色々あるけれど、個人的に良いと思うのは、異なるバージョンのパッケージに依存する複数のアプリを開発する場合に何も考える必要が無い点。システム共有のディレクトリに配置する方法では、こうも簡単にはいかない。もちろんパッケージの依存関係を手動で解決する手間を省いてくれる点も嬉しいのだけれど、それは単純な手間の問題で頭が痛くなったりはしない。ディスク容量が余りに余る現代のコンピュータ事情ならではの方法だと思うけれど、確かに合理的で優れているなと感心した次第。