nwtgckのリポジトリ命名規則とその理由について
自分が作るリポジトリとかの命名規則とかそうしている理由について。
なぜサフィックスか?
以下のような命名にする理由
oo-ooo-haskell
xx-xxx-ruby
他の言語で再度作りたくなるときがあるため、言語名を後ろにつけている。
つまり、
life-game-haskellや
life-game-ruby
などのようにしたくなるから。
life-game名前をとして、ブランチで分ける案もあるが、入れ子が深くなり発見しづらくなることを避けるため積極的には行わない。(ただし、「今後、新しい言語で書き換えるよ」というプロジェクトはブランチにするのは全然OK)
ただサフィックスは多くの場合プロジェクト名として考えていない。つまり、README.mdに書かれるプロジェクト名はサフィックス抜きになる。package.jsonやbuild.sbtやpackage.ymlなどなどのプロジェクト管理用のファイルにもサフィックスは含まない。サフィックスを含んでいるなら、それはサフィックスを含めてプロジェクト名ということ。または単純にミスか。
つまり、リポジトリ名==プロジェクト名とは限らない。
なぜプレフィックスにしないか?
では、
haskell-life-game
ruby-life-game
にしない理由。
こういうふうにする時も出てくる。ただし意味合いを別にしている。アルファベットは左から右に読むため、プレフィックスにインパクトがでるというか、そのプロジェクトの色があるというか...
例えば以下の名前は、「haskell-tomson」が全て名前である。プロジェクト名自体がhaskell使うことに意味があるのようなものに名付けられると思う。
つまり、パッケージ名を記述すべきファイルがあるなら、
package: “haskell-tomson”
のように書くようなイメージになる。
(tomsonは架空で、json,yaml,tomlから連想して勝手につけたもの)
もちろん、サフィックスにつけた、以下の場合は、
life-game-haskell
パケージ名を記述するファイルには、
package : “life-game”
となる。
プレフィックスもサフィックスもない場合
たまに、プレフィックスもサフィックスもない場合がある。それの理由は、以下のどれかに該当するはず。
言語やフレームワークが定まっていない
今後言語を変更したいことを暗に込めている
様々な言語が混在していて、主要言語が一つに定まらない。(ただしHTML/JS/CSS/TypeScriptなどを使うWeb系は「ooo-web」のような命名をするようになっている)
リポジトリ名がサービス名で名前をシンプルに抑えたいとき
命名が決まっているリポジトリ(例:dotfiles, ooo.github.ioなど)
この命名規則を考える前のリポジトリ
結局
結局命名規則でやりたいことは、以下のようなことが成し遂げられる範囲で柔軟に。
意味がわかって
将来衝突などで困らなく
ハイフン「-」区切りなのは、アンダーバーよりリポジトリ名に使われいるものは多いし、アンダーバーより見た目がいい気がするから。
キャメルケースにしない理由も同じ理由。
書いた理由
これを書いた理由は、
自分でもなぜ、こうした命名になっているか、将来疑問に思うようになるかもしれないから
今後命名の方法を変えたくなったときの手助けに
今後誰かが、自分のリポジトリ命名について聞いてきたときに、すぐに説明を引き出せるように
例外的にGoでのプロジェクトはサフィックスとしてgo-OOOとするのがいい気がする。goという文字をつけるなら、プレフィックスとして使っているプロジェクトが多気がする。
GitHubにホストされているのをインポートするときにOOO-goより、go-OOOをインポートするほうが、見た目てきにいい気がするから。(リポジトリ名 == プロジェクト名になるので、しょうがない気がする)バイナリのインストールもサフィックスよりまだプレフィックスのほうが見た目的にマシだと思う。 もちろん、プレフィックスをつけるのは、他の言語で実装する可能性があるから。