🎯 概要
Next.js 15 + Supabase認証の実装で発生した401 Unauthorizedエラー。Gemini 3.0と3時間格闘して解決できなかった問題を、Claude Opus 4.5は10分で解決した。その違いは何だったのか?実際のデバッグプロセスを比較分析する。
🐛 問題の内容
症状:Google OAuth認証は成功するが、独自セッションCookieが作成されず無限ループ
原因:sessionsテーブルが存在しなかった(初歩的なミス)
解決時間:Gemini 3時間 vs Claude 10分
📊 アプローチの違い
Gemini 3.0のアプローチ(うまくいかなかった)
// Geminiが提案した解決策の優先順位
1. Cookie処理の修正(Next.js 15の非同期問題)
2. DB接続タイムアウトの調整
3. 環境変数の再設定
4. ライブラリの変更(pg → @neondatabase/serverless)
特徴: 複雑な技術的問題から疑い始めた
Claude Opus 4.5のアプローチ(成功した)
// Claudeが実装した段階的デバッグ
console.log('[Auth] Step 1: OAuth exchange...');
console.log('[Auth] Step 2: User save...');
console.log('[Auth] Step 3: Session creation...'); // ← ここで失敗を特定
console.error('[Auth] Full error:', JSON.stringify(error, null, 2));
特徴: エラーの詳細を完全に可視化することを最優先
🔍 決定的な違い:5つのポイント
1. エラーメッセージへの執着度
Gemini:
} catch (error) {
console.error('Error:', error.message);
// メッセージの一部だけを見る
}
Claude:
} catch (error: any) {
console.error('[詳細]', {
message: error.message,
code: error.code,
details: error, // ← オブジェクト全体を出力
stack: error.stack
});
}
2. デバッグの粒度
Gemini: 大きな単位で問題を推測
- 「Cookie処理全体に問題がある」
- 「DB接続全体がタイムアウト」
Claude: 細かいステップで問題を特定
- 「Step 1: OAuth → 成功」
- 「Step 2: User保存 → 成功」
- 「Step 3: Session作成 → 失敗(ここだ!)」
3. 仮説の立て方
Gemini: 統計的に頻出する問題から推論
Next.js 15 + Cookie → よくある非同期問題だろう
Vercel + Supabase → 接続タイムアウトだろう
Claude: 事実ベースで仮説を絞り込む
1. どこで失敗? → Session作成
2. エラーコードは? → PGRST205
3. メッセージは? → "table not found"
4. 結論 → テーブルが存在しない
4. 基本確認のタイミング
Gemini: 複雑な解決策を試した後に基本を確認
Claude: 最初から「テーブルは存在するか?」も選択肢に含める
5. ユーザーへの指示の明確さ
Gemini:
「環境変数を確認してください」
「接続設定を変更してみてください」
Claude:
// 具体的なコードを提供
console.error('[Auth Callback] Error details:', {
message: error.message,
code: error.code,
details: error // ← これを必ず追加してください
});
💡 学んだこと
デバッグの黄金則
-
エラーメッセージを完全に読む
-
error.messageだけでなく、エラーオブジェクト全体を確認 - 特にSupabaseの
codeフィールドは重要
-
-
段階的ログは必須
// 悪い例
try {
// 100行の処理
} catch (e) {
console.log("エラー");
}
// 良い例
console.log('Step 1...');
// 処理
console.log('Step 2...');
// 処理
console.log('Step 3...');
-
基本から確認
- テーブルは存在する?
- 権限はある?
- 接続できている?
🎯 結論
Claude Opus 4.5が優れていた点:
- エラーメッセージへの徹底的なこだわり
- 段階的デバッグの即座の実装
- 基本的な確認を後回しにしない
最も重要な違いは、「推測」より「観察」を優先したことでした。
Gemini: こうだろう → 確認 → 違った → 次の推測
Claude: 詳細ログ → 事実確認 → 原因特定 → 解決
どちらのAIも優秀ですが、デバッグにおいては仮説駆動より事実駆動のアプローチが効果的だということが証明されました。
タグ
#Claude #Gemini #AI比較 #デバッグ #Next.js #Supabase