開発担当のsugimotoです。
シャノン技術ブログが始まってインフラのネタが多いですが、そろそろ開発のネタも出していきます。
今回はシャノンでのアプリケーション開発においてのコードレビューについて紹介したいと思います。
弊社でメインサービスあるSHANON MARKETING PLATFORMの開発プロセスにはコードレビューが組み込まれています。
コードレビューを行うようになったのは2008年の夏くらいです。
導入したきっかけはあまり覚えていませんが、ソースコードの品質を上げることが当初の目的だったと思います。
このコードレビューですが、ソースコードを製品リリース用のバージョン管理システムへコミットする前に行うことが義務付けられています。
コードレビューを行う目的は主に次の3つになります。
・ソースコードの品質向上
・バグの早期発見
・他の人のソースコードを見ることによる学びの場
この中で一番重要なのは1番目の「ソースコードの品質向上」だと私は思います。
人に見られると思うと変なコードは書けませんし、より綺麗により簡潔に書こうという気持ちになってより良いものになると思うからです。
レビューでバグを見つけることもありますが、ロジックが入り組んでいたりするとこの時点でのバグ発見には限界がありますし、コスト的にも自動テストとかQAのテストにお任せした方が良いと思います。
コードレビューはReview Boardを使用して行っています。
レビューする内容はバージョン管理システムに上がっているソースコードと手元で修正したソースコードとの差分です。
その差分をレビュワーがチェックして問題点や質問などをコメントします。
何回かレビュー出した人とレビュワーとのやり取りがReview Board上で行われます。
ステータスがレビューOKになれば終了です。
その他には
・レビュワー
より上位のエンジニア。いない場合には同レベルのエンジニア
・レビュー単位
バグ修正は1つにつき1つのレビュー
機能開発は1機能毎に1レビュー。あまりにも大きい場合にはデイリーでその日の差分だけをレビュー
・コードレビューがOKにならないと製品リリース用のバージョン管理システムにコミットできない
といったルールで運用しています。
コードレビューを始めて2年半経ちましたが、これまでに行われたレビューの数は2500くらいです。
レビューに掛ける時間は人にもよりますが30分~1時間程度です。
この程度のコストなら、レビューを行わないことにより発生する後々のメンテナンスコストに比べると少ないのではないかと思います。
今後はこのコードレビューの仕組みを、ソースコードのチェックだけではなく、メンバーのスキルアップにつながるようなものにしていければ良いかなと考えています。
コードレビュー
