「UNIXという考え方」に書かれているUNIX哲学に「各プログラムが一つのことを上手くやる」というのがある。それとサブコマンドは矛盾するんじゃないかと感じていた。一つのプログラムが複数のことを実行できるじゃん、という。 最近は以下のように思うようにあった。 サブコマンドを持つようなツールの名前自体は「名前空間」である 「サブコマンドが一つのプログラム」だと考えればいい 汎用的なコマンドラインツールはグローバルな名前になるので、名前の衝突には気をつける必要がある。今や多くの開発者がコマンドラインツールを書くようになった。 また、コンテキストを同じくした複雑なツール群を提供する場合、名前空間的なものはあったほうが良いのは確かでしょう。例えば git のサブコマンドが全部バラバラのコマンド名だったら発狂してしまう。 最近、僕はGoでツールを書く事が多いが、サブコマンドを採用せずに各々のコマンドで