多くのバグが発見されて、いつまでたっても結合テストが収束しない―。筆者は過去、何度かこういう状況に遭遇した。この状況で多発するバグはたいていの場合、設計工程ではなくプログラミング工程(以下、実装工程)に起因するものだった。

 実装工程中のコード品質チェックは「ソースコードレビュー」「単体テスト」「単体テストケースおよび結果のレビュー」といった流れで進める。これらを徹底できれば品質が向上するものの、種々の理由から「徹底は難しい」という現場をよく見る。大きな理由の一つが、レビューアーの負担が大きいことだ。レビュー作業は経験やスキルに依存するため、高スキルの技術者が必要になる。大規模開発では高スキル技術者を多く確保する必要が出てくるが、現実には厳しい。

 問題解決手段の一つが「実装工程中のコード品質を可視化してWeb上で共有できる仕組み」の導入だ。筆者のチームではこれを「コード品質共有システム」と呼んでいる。これを利用した実装工程のコード品質維持プロセスは、次のようなものになる(図1)。

図1●コード品質維持プロセス
図1●コード品質維持プロセス
コード品質共有システムの支援を得ることで、コード品質維持プロセスがよりスムーズに回る
[画像のクリックで拡大表示]

(1)プログラミング
プログラマーがプログラミングを行う。

(2)品質チェック
コード品質共有システムやレビューアーがコードのレビューを行う。

(3)フィードバックと共有
コード品質共有システムやレビューアーが、問題点の指摘と是正策をプログラマーに対してフィードバックをする。ほかのプログラマーに対しても情報を共有する。

(4)スキルアップ
プログラマーは共有された問題点の指摘と是正策を学習する。スキルアップしたプログラマーはふたたび(1)のプログラミングに戻る。

 上記のポイントは(2)と(3)の作業の一部をシステムが代行し、レビューアーの負担を軽減することだ。これにより、少数のレビューアーでも大きな効果を得られるようになる。もちろん、すべての問題点をシステムが指摘できるわけではない。コードレビューの観点は「実装技術に関する観点」と「設計に関する観点」の大きく二つがある。システムに任せるのは、実装技術に関する観点の方だ。