はじめに

AIが出力するレビューコメントに、こんな違和感を抱いたことはないだろうか。

  • 「それってこのプロジェクトのルールに反してるけど?」
  • 「一応正しいけど、この文脈では筋違いじゃない?」
  • 「結局、何をどう直せばいいのかわからない」

AIによるコードレビューが実用段階に入りつつある今、コメント内容に対して“納得できない”という感情が発生する状況も増えてきている。
本記事では、レビューアーの立場から、AIコメントへの違和感にどう対処するかを体系化し、人間のレビュー判断力をどう活かすべきかを考える。

よくある“納得できない”コメントのパターン

AIレビューにおける違和感は、大きく以下の3種類に分類できる。

1. 指摘は正しいが「空気が読めていない」

function createUser() {
  console.log("User created");
}
Comment
@AI: Avoid using console.log in production code. Use a logging framework instead.

→ テスト用コードで console.log を一時的に使っているだけ。プロダクションコードという前提が違う。

2. 言っていることはもっともだが「解決案が提示されない」

const sum = arr.reduce((a, b) => a + b, 0);
Comment
@AI: Consider performance implications when using reduce on large arrays.

→ パフォーマンスが問題になるほどの規模ではないし、代替案も提示されない。

3. 指摘自体が「誤解している」

function getUserAge(user) {
  return user.age ?? 0;
}
Comment
@AI: Use default values to avoid undefined errors.

→ すでに ?? 0 で対処しているのに、処理意図を正確に把握していない。

AIコメントとは

AIコメントとは、LLM(大規模言語モデル)を用いてコード差分やファイル全体を読み取り、問題点・改善案を提案する自動生成コメントのこと。代表例はChatGPT(function callingあり)、CodeRabbit、GitHub Copilot Commentsなど。

レビューアーが取るべき対応のフレームワーク

「AIがそう言っている」だけではレビューは成立しない。
レビューアーは、次のようなフレームでAIコメントを咀嚼・対応すべきである。

ステップ1:指摘のカテゴリを特定する

  • 構文/文法レベルの指摘(例:セミコロン忘れ、スコープ誤り)
  • 設計・責務分離に関する指摘(例:関数が肥大化)
  • 可読性/保守性の提案(例:命名、コメントの有無)
  • プロジェクト方針とのズレ(例:特定のライブラリ使用禁止)

→ まず「AIが何に対して問題を感じたのか?」を自分なりに解釈する

ステップ2:プロジェクト文脈との整合性を検証する

  • この指摘はこのコードにおいて本当に適切か?
  • プロジェクトのコーディング規約や制約と合っているか?
  • チームの合意・慣習と反する指摘ではないか?

→ 「文脈のズレ」はAIコメントの典型的誤差

ステップ3:指摘が役立つ可能性を“再構成”する

納得できないコメントでも、「この部分に対して注意を促したかったのかもしれない」という再解釈力が、レビューアーには求められる。

Comment
@Reviewer: ChatGPTの指摘はズレているように見えますが、「この関数の責務が2つに分かれている」という点に着目すると、設計分離の観点では一理あります。

→ そのまま飲み込むのではなく、「要点を読み替える」

ステップ4:必要に応じて“AIへの反論コメント”をつける

コードレビュー
@Reviewer: AIはconsole.logの使用を指摘していますが、この箇所はデバッグ用に一時的に残しており、本番環境には含まれません。意図的な利用のため、指摘は適用外です。

→ 「意図がある」「既に対応済み」「指摘がプロジェクトポリシーに合わない」場合は、その理由を書き添えて明示的に“却下”する

実例:AIコメントにレビューアーが補足したケース

ケース1:指摘は正しいが文脈誤り

return users?.map(u => u.email);
Comment
@AI: Consider null checking before using optional chaining.
コードレビュー補足
@Reviewer: すでに optional chaining `users?.` で null 安全性を確保しているため、この指摘は文脈にそぐわないと判断しました。

ケース2:抽象的すぎて意味がない

const page = await getPage();
Comment
@AI: Improve function naming for better clarity.
Comment
@Reviewer: `getPage` という命名はCMS由来のコンテキストにおいて業界標準的に使われており、このプロジェクトでも命名の一貫性があるため、変更は不要です。

ケース3:別の観点から再評価

function handleError(error) {
  console.error(error);
}
Comment
@AI: Avoid using console.error in production code.
Comment
@Reviewer: `console.error` を使っている理由は、テスト環境でのスタックトレース収集が目的です。運用環境ではロガーに差し替わる設計になっているため、指摘はステージ依存として扱います。

AIとの違和感をレビューに活かす

気づきを促す“逆レビュー”

Comment
@Reviewer: AIのこの指摘、正直よく分からないと思うけど、逆に「なぜこういう指摘をしたのか?」を考えてみると、責務分離の観点が見えてくるかもしれない。

→ 違和感を考えるきっかけとして使う

AIコメントに“ツッコミ”を入れるレビュー研修も有効

たとえば、新人やメンバーに以下を課す:

  • 「このAIコメント、おかしい点は?」
  • 「どう解釈したら実用的になる?」
  • 「本当にこのまま対応すべきか?」

受動的に読むのではなく、“読む力”を鍛える訓練として使える

AIコメントへのレビューアーの対応フロー

UML Diagram

まとめ:AIコメントに納得できないときの“視点の持ち方”

AIレビューは万能ではありません。特にレビューコメントにおいては、「理由が薄い」「文脈がズレている」「指摘に一貫性がない」ことも多くあります。

しかし、それを一蹴するだけでは意味がない

  • なぜAIはこう判断したのかを“読み解く力”
  • 文脈とのズレを“意識して指摘する力”
  • コメントを再構成して“学習につなげる力”

これらはすべて、レビューアーにしか担えない役割です。
「納得できないコメント」ほど、レビューアーの腕の見せどころなのです。