ChatGPTによるPull Requestレビュー:何が足りないか
はじめに
ChatGPTを使ってPull Request(以下PR)のレビューを行う取り組みが、開発現場に広がっています。
GitHubの拡張機能、VS Code連携、Cursorエディタ内レビューなど、多様な形でAIレビューが組み込まれつつあります。
しかしレビューアーとしては、「ChatGPTがコメントを返したからOK」という姿勢に危機感を持つべきです。
なぜなら、AIが付けたコメントには、「あってほしい観点」がまるごと欠落していることが多いからです。
この記事では、ChatGPTによるPRレビューの構造的な不足点を、レビューアー視点で検証し、どこまでをAIに任せられるかを明確にします。
ChatGPTレビューが得意とする領域
まず、ChatGPTはPRレビューで以下のようなタスクを比較的うまくこなします。
- 構文ミス、未使用変数の指摘
- 関数名・変数名の曖昧さの検出
- 「似たコード」を学習しているため、典型的パターンとの差異を指摘
例:関数名が不明瞭な場合
function doProcess(user) {
// 何を処理しているかはコードを見ないと分からない
}
@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レビューと人間の補完構造
ChatGPTレビューはどう活かすべきか?
1. 「第1段階レビュー」として活用
- 構文エラー、一般的な命名、典型的な構造崩れの指摘には有効
- 「人間が見るべき箇所を絞る」ためのフィルタリングとして活用する
2. PRテンプレートとセットにして文脈を補完
- 「このPRの目的は?」「なぜこの構造にしたのか?」といったメタ情報をAIにも提示
- ChatGPTに説明させるのではなく、情報を人間が読み取り補う前提で運用
3. コメントを「読んだ上で判断」する体制にする
- AIのコメントは常に人間が再評価する
- 不自然・表層的な指摘に流されず、「なぜその指摘が妥当なのか」を言語化できるレビューが重要
まとめ:PRレビューは「コード」ではなく「変更」を見る行為
ChatGPTのレビューは、あくまで「コードの現在形」を見ています。
しかし、PRレビューは「なぜそのコードに変えたのか」「この変更が全体に与える影響は何か」を読み取る作業です。
- 差分だけでなく、意図・背景・将来性を評価する
- 設計方針との整合を判断する
- 削除や変更の「理由」をレビューする
これらはすべて、人間のレビューアーが担うべき役割です。
ChatGPTのレビューは補助的ツールとして活かすものであり、「任せる」対象ではありません。
レビューアーは、「コードの良し悪し」だけでなく、「なぜこのコードなのか」を問える存在であるべきです。