最近はnpmで全部ラップしてやるようにしていたりするのだけど、間違っているような気がしてきた。機能とかそういう面では十分で、運用においても癖はあるもののなんとかなりそうなため、そういう点でじゃなくて。利用時に混乱しやすいとかそういうところ。npmコマンドを汎用的に使うことになるので、ふと気づくとgit run buildとかnpm rebase -iとかやってしまう。一番ひどいなって思ったのはgit run rebase -iとやった時。

これはもう自分の脳の限界なのかとも少し思うけど、問題はそこじゃなくて、CLIアプリケーションのような対話的なアプリケーションを汎用的に使うと、コマンド名の意味が薄くなってしまうということなんじゃないかなと(自信ない)。ビルド・ツールのコマンド、バージョン・コントロールのコマンド、パッケージ・マネージャーのコマンド、それぞれがコマンド名という名前空間的に機能するもので切り分けられている状態の方が自然。だからそうなっていると今自分がやりたいこととコマンド名のマッピングが脳内でうまく行われる気がする。

全部npmでやると確かにすっきりするんだけれど、どちらかというと管理のしやすさとかそういう面ですっきりするだけで、ユーザー・インターフェイスという点ではすっきりしているように見えるだけっぽい。ちゃんとツールの使い分けを考えた方が良いような気がしないでもないけど、そうするとnpmの世界ではグローバルにCLIツールをインストールする必要がある感じになって、それは別の点(npm installで入ってくれるわけじゃないとか依存バージョンを束縛できないとか)でやはり厳しいよなというジレンマ。

エンドユーザーである自分における問題であるとも思うので、シェルのエイリアスやラッパー・コマンドで解決するというのも悪くはなさそう。だけどこういった混乱しやすい(と思われる)環境を撒き散らすようなことをしてもいいものだろうかというような点で悩ましい。