A Day In The Life

とあるプログラマの備忘録

Convention Over Configuration

巷では略してCoCなんて呼ばれてるこの言葉、Ruby on Railsの登場で有名になりましたが「設定よりも規約」なんて和訳が氾濫しているせいか「設定よりも規約のほうが優れている」と勘違いしている人が多いように思います。



個人的にはCoCのoverは「越える」という意味よりも「覆いかぶさる・くるむ」って意味で使ってるんじゃないかと思ってます「設定の上に覆いかぶさる規約」みたいな感じですかね。

「設定よりも規約」って言いたいのであればoverじゃなくてbeyondとか使うと思います。「Beyond Java」なんて本もありますし。



「設定よりも規約」じゃなかったらなんなんだということになりますが、個人的には「設定には適切なデフォルト値を用意しましょう。そうすればデフォルト値に沿った規約を守ることで面倒な設定がいりませんよ」てのがCoCだと思ってます。

なのでCoCで大事なのは単に「規約作れ」じゃなくて「良いデフォルト値を用意すること」と「デフォルト値(≒規約)を開発者に周知すること」じゃなかろうかと思います。



もう少し細かく言うと「設定を外出しにすることは必要。でもいちいち設定するのが面倒なのでデフォルト値用意しましょう。そうすれば規約を守るだけで設定を意識しなくていいですよ。いい感じのデフォルト値が設定されてるから設定は最小限ですみますよ。

ただ規約はあくまで規約であって義務ではないので外れたい時は設定いじってくださいね。」こんな感じかと思います。

RailsActiveRecordやSpringのAutowiringなんかがいい例じゃないでしょうか。

「設定の上に覆いかぶさるデフォルト値」転じて「設定の上に覆いかぶさる規約」と考えればなんとなくしっくりくるような気がします。こじつけですけど...。



規約を外れたい時は自由に設定できるというのも重要だと思います。

設定できなくて規約しかないとなれば規約は規約でなくなり義務になっちゃいます。それって規約という言葉にだまされて義務を負わされてません?



なんにしても英語に踊らされるのは嫌ですね。

以下の記事なんか読んでると英語なんかに踊らされてる場合じゃないよなと激しく思ってしまいます。

米国と比べたとき、やはり日本が一番ネックになっているのは英語です。私も(天才プログラマーに選ばれたのは)ほかの人に比べて才能があったというわけではなく、ただ単に小さいころから英語が読めたというだけだったとも思います。日本では、例えば大きな書店に行っても、書棚にある一番難しい本ですらその分野の入門レベルでしかありません。
なんともイタい話ですが当たってます(IT業界では)。そして今英語の壁にブチあたってる自分がいます。