コードレビューで付けたコメントのうち、実際に品質へ効いていたのはどれでしょうか。この問いに正面から答えた記事が Zenn で公開されています(コードレビュー 300 件を分類したら、効いていた指摘は 2 種類だけだった)。直近 3 ヶ月・PR 62 件・レビュー指摘 300 件を分類し、品質への寄与を測った実測ベースの分析です。本記事はその結果を紹介しつつ、レビューを ROI(投資対効果)で捉える視点から考察します。

300 件を 6 カテゴリに分類して採点した

出典記事では、レビュー指摘を次の 6 カテゴリに分けています。

カテゴリ 内容
Style インデント・改行・書式
Naming 変数名・関数名の命名
Refactor 構造の整理・重複除去
Architecture 責務分割・レイヤ設計
Bug 実際の欠陥・不具合
Spec 仕様の取りこぼし・要件との齟齬

そのうえで各指摘を「品質寄与度」「開発速度への影響」「3 ヶ月後の欠陥との相関」で採点しました。欠陥相関とは、その種類の指摘が多かった箇所で、後になって実際にバグが見つかったかどうかの関係の強さです。相関が高いほど「その指摘は本物のリスクを言い当てていた」ことになります。

効いていたのは Bug と Spec だけ

結果は明快でした。品質に効いていたのは BugSpec の 2 種類だけです。Bug 指摘の欠陥相関は 0.51。対して Style 指摘は 0.04 で、その差は約 13 倍でした。

さらに示唆的なのは、Style 指摘が多いレビューほど、むしろ後の品質が下がる傾向が見えたことです。因果というより、レビューの注意が書式に吸い取られ、肝心の Bug や Spec を見逃した結果と読むのが自然でしょう。人間のレビューには集中力の総量に上限があり、書式の指摘に一言費やすたびに、欠陥を探す一言が削られていきます。

レビューは希少資源の配分問題

ここで視点を変えます。レビューにかかる人間の時間は、増やそうと思って自由に増やせるものではありません。希少資源です。だとすれば、限られたレビュー時間を何に使うかは配分の問題になります。

Style や Naming の指摘は、Linter やフォーマッタが機械的に、しかも人間より正確に検出できます。自動化できるものに人間の時間を割くのは、それだけで純粋な損失です。ROI で言えば、コスト(人間の時間)は高いのに、リターン(欠陥相関 0.04)がほぼゼロの投資に当たります。逆に Bug と Spec は今のところ機械に置き換えにくく、人間が見る価値が最も高い領域です。

指摘の種類ごとの「人間が見る価値」

  高い ┃ Bug ─ Spec           ← 人間のレビューを集中させる
       ┃ Architecture         ← 設計段階へ前倒し
       ┃ Refactor
  低い ┃ Naming ─ Style       ← Linter / Formatter で自動強制

現場にどう落とすか

出典記事が提案する改善策は、この配分の考え方とよく噛み合います。

  • Style / Naming は自動強制する。フォーマッタで書式を統一し、命名規約は Linter ルールに落とす。レビューコメントで指摘する前に、CI で落とす。
  • Architecture はレビュー前に前倒しする。責務分割やレイヤ設計は、PR が出てから直すと手戻りが大きくなります。実装前の設計レビューや設計メモの段階で握るほうが安い。
  • レビューの場は Bug と Spec に集中させる。人間にしか見えない「この条件分岐、null のとき落ちませんか」「この仕様、要件のこのケースを取りこぼしていませんか」に注意を全振りする。

ここで一点補足すると、Style を自動化する狙いは「書式はどうでもいい」ことではありません。むしろ書式は重要だからこそ、人間の判断に頼らず機械で 100% 強制するのです。自動化とは価値の否定ではなく、価値の高い作業に人間を移すための手段です。

まとめ

  • PR 62 件・指摘 300 件の実測で、品質に効いていたのは BugSpec の 2 種類だけでした。
  • Bug 指摘の欠陥相関は 0.51、Style 指摘は 0.04 と約 13 倍の差。Style 中心のレビューはむしろ品質を下げる傾向がありました。
  • レビューは希少資源の配分問題です。自動化できる指摘に人間の時間を使うのは損失です。
  • Style / Naming は Linter とフォーマッタで自動強制し、Architecture は設計段階へ前倒し、レビューの場は Bug / Spec に集中させる。
  • 自動化は書式の軽視ではなく、人間を価値の高い判断に振り向けるための手段です。

出典