この前、部屋を片付けた。
そのとき、部屋の片付けとは 規約 なのだと気づいた。
- 同じものは一箇所に集めること
- 床に物を置かないこと
- 物は「積む」のではなく「立てる」こと
これだけの約束を守り続けるだけで、部屋はずっときれいになり続ける。
そんなこと言われなくたって知ってる、だけど部屋は汚くなっちゃうんだ、と昔は思っていた。だけど、それは規約が自分の中で曖昧だったり、忙しかったり病気になったりして、その規約が守りづらい状況になってしまったからなのだ。
これはコードの世界だって同じだ。無秩序に設置された素のPHP(別にこれはPHPをdisってるわけではなくて、手軽で規約がなくて無秩序になりやすいから例にあげている)からRailsに移ったようなものだ。
Railsだったら、「これhelperじゃなくてmodelに書くべきじゃない?」とか「これ app/models じゃなくて lib/ に置くべきじゃない?」といった議論ができる。
それも、規約があるおかげなのだ。
だけど、規約があるからといって、それを使う人間の意志とか意識がなければ、一気にコードやプロジェクトは汚くなる。だから、コードレビューやペアプロを通して互いに監視するのだ。
なんにだって規約が必要だ。
守破離の「守」をせずに、いきなり「破」に進むのは、型破りではなく、型なしなのだ。だから、まずは規約に乗っかることだ。規約に乗っかって、その規約の細部まで把握して初めて「破」に進むことができる。