A Day In The Life

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

CoCその2

前の記事では自分の意見しか書かなかったので実際のところどうなんだということで調べてみました。



以下の対談はCoCについて深く突っ込んで説明はしてませんが本質を突いているような気がしました。

弾:じゃあ,ハードでもソフトでもないものは? ウェットウェア,つまり生物です。
DHH:それこそ,インクリメンタルな開発の最高の成功例。進化の世界にロードマップってないよね。
弾:確かに,進化ってありあわせのものを使うよね。

DHH:そう。生物はConfiguration(設定)をいじりまくるのではなく,Convention(規約)をそのまま援用している。いろいろ設定を変えてうまくいくものだけ拾い出すより,きちんと動く設定を少しずつ変えるほうがうまくいくんだ。
CoCを生物の進化を例に説明しているのがなんとも面白いです。



あとDHHさんへのインタビュー記事も参考になりました。

Railsでは、アプリケーションレベルの柔軟性を得るために、インフラレベルの柔軟性を犠牲にしています。私がRailsの中に組み込んだ「黄金の道」に沿って開発を行えば、ものすごく生産性が向上します。アプリケーションレベルでは、より多く、より早く、より良いものが開発できます。

−中略−

Railsも基本的にコーディング規約がやってきたことと同じようなことをやろうとしています。ただ、コーディング規約と違ってうまくいってるのは、その規約が甘いからです。コードが整形されるだなんて抽象的だし、グループの目標に過ぎません。一方、アプリケーションが以前の数分の一の時間で出来上がるというのは、非常に具体的だし、やりがいのある目標です。
Railsの規約はコーディング規約などの従来の規約とは違いますよと言っているところがポイントですね。