はじめに

ChatGPTを使ってPull Request(以下PR)のレビューを行う取り組みが、開発現場に広がっています。
GitHubの拡張機能、VS Code連携、Cursorエディタ内レビューなど、多様な形でAIレビューが組み込まれつつあります。

しかしレビューアーとしては、「ChatGPTがコメントを返したからOK」という姿勢に危機感を持つべきです。
なぜなら、AIが付けたコメントには、「あってほしい観点」がまるごと欠落していることが多いからです。

この記事では、ChatGPTによるPRレビューの構造的な不足点を、レビューアー視点で検証し、どこまでをAIに任せられるかを明確にします。

ChatGPTレビューが得意とする領域

まず、ChatGPTはPRレビューで以下のようなタスクを比較的うまくこなします。

  • 構文ミス、未使用変数の指摘
  • 関数名・変数名の曖昧さの検出
  • 「似たコード」を学習しているため、典型的パターンとの差異を指摘

例:関数名が不明瞭な場合

function doProcess(user) {
  // 何を処理しているかはコードを見ないと分からない
}
ChatGPTからのコメント
@AI: 関数名 `doProcess` は具体的な処理内容が分かりにくいため、`validateUserData` など明確な命名を検討してください。

このように構文・命名レベルでは実用的な提案を行ってくれます。
一方で、レビューの本質的な役割である「設計意図」「文脈整合性」「要件判断」には弱さがあります。

Pull Requestレビューで“本当に見るべき観点”

PRレビューとは、単に差分のコードが「正しいかどうか」を見る作業ではありません。
以下のような観点が含まれてはじめて「レビュー」と呼べるのです:

  • 設計方針に沿った変更か
  • チームルールや命名規則に反していないか
  • 将来的な拡張・再利用を阻害しないか
  • 削除されたコードに重大な責務がなかったか
  • 関連ファイルの影響範囲が考慮されているか

こうした視点は、ChatGPTではほとんど考慮されません。

ChatGPTに足りない3つの重要要素

1. 削除・変更の意図確認

ChatGPTは「なぜその変更が行われたのか」という背景を理解しません。

不自然に見える削除
- const formatDate = (date) => { /*...*/ };

このような削除に対して、ChatGPTはスルーする可能性が高いです。
人間のレビューアーなら次のように疑問を持ちます。

削除に対するレビュー
@Reviewer: この関数の削除は、既存の `UserDetail` コンポーネントに影響しませんか?依存関係の確認をお願いします。

AIは「この関数がプロジェクト全体において持っていた責務」を判断できません。

2. 差分以外の文脈把握

ChatGPTレビューは基本的に差分のみを対象とします。
つまり、「この変更が他のどこに影響を与えるか」を俯瞰する機能がありません。

差分では小さい修正に見えるが…
user.name = input.value.trim(); // 差分の1行のみ

これが実は、グローバルステートを直接上書きしていたとしても、ChatGPTは気づかないことが多いです。

人間のレビューでは次のような指摘が可能です。

状態破壊の危険性を指摘
@Reviewer: `user.name` は `UserContext` から提供されているグローバルステートです。直接代入は副作用リスクがあるため、`updateUser` 経由での更新を検討してください。

3. 設計方針との整合性

ChatGPTは設計ドキュメントを参照しませんし、チーム方針を知っているわけでもありません。

  • useEffect の中で直接fetchしてよいか?
  • Button コンポーネントのスタイルは variant を使うルールになっているか?
  • DBService 経由でなければDBにアクセスしてはいけないというルールはあるか?

このような設計方針とのズレを、AIが自動で補正することは期待できません。

ChatGPTレビューが危険になるケース

A. 「一部のPRだけAIに任せる」運用

  • PRの重要度に応じてレビュー方法を分ける(例:テストコードだけAI)
  • しかしAIは重要度を判断しないため、見逃しの温床になります。

B. 開発者が「AIの意見だから正しい」と受け取る

  • ChatGPTが言ったから、とレビューを素通りさせる危険
  • 特に若手メンバーが指摘の根拠を自分で検証せず受け入れるケースが増えています

C. PRテンプレートとAIが分離している

  • PRテンプレートで意図や背景を書かせているのに、AIはそれを無視
  • 「変更の理由」と「変更の中身」が分離した状態でレビューが行われる

ChatGPTレビューと人間の補完構造

UML Diagram

ChatGPTレビューはどう活かすべきか?

1. 「第1段階レビュー」として活用

  • 構文エラー、一般的な命名、典型的な構造崩れの指摘には有効
  • 「人間が見るべき箇所を絞る」ためのフィルタリングとして活用する

2. PRテンプレートとセットにして文脈を補完

  • 「このPRの目的は?」「なぜこの構造にしたのか?」といったメタ情報をAIにも提示
  • ChatGPTに説明させるのではなく、情報を人間が読み取り補う前提で運用

3. コメントを「読んだ上で判断」する体制にする

  • AIのコメントは常に人間が再評価する
  • 不自然・表層的な指摘に流されず、「なぜその指摘が妥当なのか」を言語化できるレビューが重要

まとめ:PRレビューは「コード」ではなく「変更」を見る行為

ChatGPTのレビューは、あくまで「コードの現在形」を見ています。
しかし、PRレビューは「なぜそのコードに変えたのか」「この変更が全体に与える影響は何か」を読み取る作業です。

  • 差分だけでなく、意図・背景・将来性を評価する
  • 設計方針との整合を判断する
  • 削除や変更の「理由」をレビューする

これらはすべて、人間のレビューアーが担うべき役割です。
ChatGPTのレビューは補助的ツールとして活かすものであり、「任せる」対象ではありません。

レビューアーは、「コードの良し悪し」だけでなく、「なぜこのコードなのか」を問える存在であるべきです。