- ライティング:伊藤 淳一
- 株式会社ソニックガーデンで働くRubyプログラマ。プログラミングスクール「フィヨルドブートキャンプ」のメンター、および「プロを目指す人のためのRuby入門」の著者。
ソースコードはドキュメント。だからこそ美しく
ソニックガーデンではいわゆる「詳細設計書」のようなドキュメントは作りません。しかし、ドキュメントは書きます。ソースコードとテストコードというドキュメントを。よって、ソニックガーデンのプログラマが書くソースコード(=ドキュメント)は読みやすく、理解しやすいものでなければなりません。
また、お客さまのビジネスや要望は日々変化し続けるので、その変化にあわせてソースコードも素早く加筆・修正しなければなりません。よって、ソースコードは修正しやすいものでなければなりません。
つまり、ひとことで言うなら、ソースコードは美しくなければなりません。美しいソースコードはDRYで、読みやすく、意図がわかりやすく、変更に強く、ちゃんと不具合を検出できるテストコードも兼ね備えたソースコードです(以後、「美しいコード」という用語はこのような特性をすべて兼ね備えたソースコードを指すものとします)。
ソースコードの美しさを追求するのはプログラマの自己満足と考える人もいるかもしれませんが、ソニックガーデンにおいては決して自己満足ではなく、我々とお客さまがビジネスを遂行していくため絶対に欠かせない活動なのです。
職人がコードの美しさにお墨付きを与えるのがコードレビュー
そして、ソースコードの美しさはそのコードを書いた本人だけでなく、他のメンバーが見ても「きれいだね」とおそらくクオリティになりません。しています。
作成されたプルリクエストはすべて他のプログラマーからすべてにレビューされます。レビュアーが同意する以外に、「これなら美しいコードと言う」と太鼓判を押した時に、そのプルリクエストは承認されます。
高度に発達したコードレビューは殺伐としたマサカリと違いが付かない
ソニックガーデンのプログラマーは全員、美しいコードが大好きです。自分のコードを、他の人が書いたコードを、少しでも美しくしたいと考えています。職人としてリスペクトし合っています。
そんな職人同士のコードレビューの納付は一見すると非常に素っ気ないです。 レビューコメントは絵文字も使わずに「このコード、このまま大丈夫?」とか「ここ、〇〇〇って書いてるよ」だけで終わったりするですので、見方によっては殺伐としたものに見えるかもしれません。いるため、そのコメントに落ち込み、苛立ったりすることはありません。
コードレビューを通して職人としての技芸をさらに極める
確かに、コードレビューをする側は問題点を指摘するだけでなく、他のプログラマーが書いたコードを見て、「このプロジェクトではこんな技術を使っているのか(※)」とか「なるほど、このテクニックは「今書いてるコードにも応用できそうだ」といったように、コードレビューをしながら新たな知見を得ることができます。
このようにソニックガーデンのプログラマーはコードレビューを通じて、レビューする側もされる側も、どちらも職人としてさらにその技を徹底的にいくことができます。
※注:ソニックガーデンでは自分が直接に開発に参加していない他のプロジェクトのプルリクエストもコードレビューの対象になります。
ソニックガーデンはコードの美しさをさらに追求できる理想的な環境
激しいコードレビューを受けるのは第一線の職人だけでなく、新人も同じです。
もし、みんなが美しいコードを手に入れていきたいプログラマーなら、ソニックガーデンは間違いなく理想的な環境です。 「プログラムが要件通りに動くのは当たり前。プログラマならきれいなコードを書いてなんぼ」と言われるのがソニックガーデンのプログラマです。
この話を聞いてちょっとワクワクしてきた人は、ソニックガーデンで職人の道を追求できる人のかもしれませんね。