← Reports へ戻る

ChatGPTにコード差分をレビューさせるときの注意点

git diffや変更内容をChatGPTにレビューさせるときの見せ方、注意点、過信しない確認ポイントを実務的に解説。

ChatGPTにコード差分をレビューさせるときの注意点

はじめに

Claude Code が実装した変更内容を、ChatGPT にレビューさせると品質が向上します。しかし、ChatGPT のレビューは 全てを信頼できない ため、適切な見せ方と人間の判断が必要です。本記事では、ChatGPT でのコードレビュー方法を解説します。

ChatGPT にコード差分を見せるときの正しい形式

❌ 悪い見せ方:コードを全て貼り付け

「これは大丈夫ですか?

const handleSubmit = async (data) => {
  try {
    const response = await fetch('/api/users', {
      method: 'POST',
      body: JSON.stringify(data)
    });
    const result = await response.json();
    setUser(result);
  } catch (err) {
    console.log(err);
  }
};

問題点

✅ 良い見せ方:git diff 形式で提示

「Claude Code がこのように変更しました。
レビューをお願いします。

--- a/src/api/users.ts
+++ b/src/api/users.ts

- const handleSubmit = async (data) => {
+ const handleSubmit = async (data: UserData): Promise<void> => {
    try {
      const response = await fetch('/api/users', {
        method: 'POST',
+       headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(data)
      });
      const result = await response.json();
      setUser(result);
    } catch (err) {
-     console.log(err);
+     logger.error('Submit failed', err);
    }
  };

利点

ChatGPT レビューのチェックリスト

ステップ1:コード変更を提示

ChatGPT への依頼:
「以下のコード差分をレビューしてください。

差分内容: エラーハンドリングを改善

--- a/src/services/auth.ts
+++ b/src/services/auth.ts
(git diff をペースト)

以下の観点からレビューしてください:
1. セキュリティリスク
2. パフォーマンス問題
3. エッジケースの漏れ
4. 既存テストへの影響
5. 可読性の問題

ステップ2:ChatGPT のレビュー結果を受け取る

ChatGPT の回答例:

【セキュリティ】
- ✓ エラーメッセージが詳細すぎない
- ✓ ユーザー入力のサニタイズあり
- ⚠ password フィールドを error に含めていないか確認

【パフォーマンス】
- ✓ await の位置が正しい
- ⚠ ループ内での非同期呼び出しがないか確認

【エッジケース】
- ✓ null チェックあり
- ⚠ network timeout の処理がない

【テスト影響】
- ✓ 既存テストのシグネチャ変更なし
- 提案:404 エラー時のテストケースを追加

ステップ3:ChatGPT のレビュー結果を人間が判断

重要:ChatGPT のレビュー結果は 提案や参考程度 です。最終判断は人間がします。

人間の判断ポイント:

✓ セキュリティ指摘:「password を含めていないか」
  → コードを確認:パスワードは含まれていない → OK

⚠ パフォーマンス指摘:「ループ内での非同期呼び出し」
  → コードを確認:ループなし → 誤検知

⚠ エッジケース指摘:「network timeout」
  → この実装では timeout ハンドリングが確実に必要 → 追加修正

ChatGPT レビューで見落とす傾向

問題1:実装仕様を誤解する

ChatGPT:「この関数は DB に保存していないので、
データが永続化されていません」

実際:メモリキャッシュで OK という設計

対策:ChatGPT に仕様を前もって説明

「このコンポーネントは、
フロントエンドのローカルキャッシュをメモリに保持する仕様です。
その前提で差分をレビューしてください。」

問題2:ビジネスロジックを評価できない

ChatGPT:「なぜこの条件で分岐しているのか不明確」

実際:その条件が重要なビジネスロジック

対策:背景をChatGPTに説明

「このコードは、
ユーザーが有料プランの場合のみ機能を有効にする仕様です。
その背景でレビューしてください。」

問題3:既存テストのカバレッジを把握していない

ChatGPT:「このエッジケースのテストがない」

実際:既存テストで十分にカバーされている

対策:既存テストを参考資料として提示

「既存テストは tests/auth.test.ts です。
参考にして、新しく必要なテストケースを提案してください。」

ChatGPT レビューの使い分け

✅ ChatGPT が得意な指摘

❌ ChatGPT が苦手な指摘

実際のワークフロー例

【ステップ1】Claude Code が実装

【ステップ2】git diff を ChatGPT に見せる

ChatGPT:
「セキュリティリスク:password が error ログに含まれている可能性」
「テスト提案:失敗系のケースを追加」

【ステップ3】人間が判定

確認:
- password は正しくマスクされている → ChatGPT の誤検知
- テスト追加は確かに必要 → ChatGPT の指摘が的確

【ステップ4】必要な修正を Claude Code に指示

「テストケース 『invalid password』を追加してください」

ChatGPT レビューを過信しない

チェックリスト

❌ ChatGPT がOKと言ったから本番OK
  → 最終判断は人間が責任を持つ

✅ ChatGPT の指摘を参考に、人間が精査する

❌ ChatGPT がテストケースを提案したから、それだけで十分
  → 既存テストとの重複確認、必要性の判定は人間

✅ ChatGPT の提案をベースに、人間が追加判定

❌ ChatGPT が「大丈夫」と言ったら、コードレビューは終了
  → ステージング環境での動作確認は必須

✅ ChatGPT レビューの後、実際の動作検証を人間が実施

まとめ

ChatGPT のコードレビューは 便利だが完全ではない ということが重要です。

ChatGPT レビューの使い方:

ワークフロー: Claude Code(実装)→ ChatGPT(初期レビュー)→ 人間(最終判定) → 本番

git diff で小さく確認することで、ChatGPT のレビューも精度が高まります。

ChatGPTコード審査品質管理AI審査