モダンコードレビューとは - コードレビューが変わりつつある?
2010年くらいからライトウェイトなコードレビューをその他のレビューと区別してモダンコードレビュー(modern code review)と呼ぶことが増えています。コードレビューのツールを使い、対面での会議を実施せずに完了できることや欠陥の検出だけでなく情報共有も対象になっている点が異なっているようです。
モダンコードレビューの明確な定義やコンセンサスのとれた定義はまだありません。書籍Making Softwareの18章の章タイトルにもModern Code Reviewが使われ、言及されています。Making Softwareの日本語版は2011年、英語版(原典)は2010年に出版されています。18章をご覧になるとわかりますが、レビュー一般に関する言及、レビュー会議を実施する効果に関する言及があります。
2013年にInternational Conference on Software Engineeringという国際会議でA. Bacchelli, C. Birdらが発表した論文"Expectations, Outcomes, and Challenges of Modern Code Review"に調査結果の報告があります。マイクロソフトで働く開発者を対象とし、モダンコードレビューの目的や期待することをアンケートにより調査しています。論文の全文はMicrosoft Researchのサイトで公開されています。
本エントリは、この論文の内容を紹介することにより、ご自身のコードレビューに変化があるかを考えていただくきっかけとなればと思います。そのため、モダンコードレビューをこのエントリで細かく定義することは目的としていません。ツールを使って非同期型で実施するコードレビュー、もしくはそうしたコードレビューに類似するレビューを対象としています。非同期型のレビューは対面の会議形式では実施しないものを指します。
調査は873人の開発者からのアンケート結果にもとづいています。回答した開発者が考えるコードレビューの目的(期待)は次のような順番になったそうです。
- 欠陥の検出
- コードの改善
可読性、コード中のコメント、一貫性、実行されないコードの削除などの欠陥の検出ではないがコードを変更するもの - 代替案の検討
よりよい実現方法や実装の検討 - 知識移転
- チームメンバの認知度向上や透明性向上
欠陥の検出が主目的であることは、モダンコードレビューでも同様のようです。次は保守性の向上です。これら2つは、モダンコードレビューの考え方が現れる前からレビューに求められていた主要な目的といえそうです。3の代替案の検討は、ウォークスルーと呼ぶカジュアルなレビュー方法の中でも目的として挙げられています。知識移転やチームメンバの認知度向上や透明性向上というあたりは最近注目されるようになってきた点ではないでしょうか。
欠陥の検出や保守性の向上は依然としてコードレビューの目的であるものの、それだけが目的ではないと捉えられている点は、新しい考え方であるように感じました。ご自身のレビューは変わっているといえそうでしょうか。
同論文では、同様のモダンコードレビューの実践として、GoogleでのコードレビューツールMondrianの解説(ブログ 2006年), Facebookでのコードレビュー(Techcrunchの記事 2011年)、オープンソースでのコードレビュー(wikipediaでのGerritの説明)を紹介しています。時間があれば目を通してみてはいかがでしょうか。
私はモダンコードレビューとしてこれまでのレビューと区別されようとしている理由はコミュニケーションとしてのレビューにも注目が集まってきているからではないかと考えています。
12/7にWACATEというワークショップでソフトウェア開発におけるコミュニケーションについてお話する機会をいただきました。ここでもモダンコードレビューに言及しようと思っています。詳細は進行プログラム(こちら)のクロージングセッションをご覧ください。