ai-technology

Claude Codeの実装結果を人間がレビューする観点

Claude Codeの実装結果を人間がレビューする観点

はじめに

Claude Code が生成したコードは自動化による効率があります。ただし、人間による最終確認が重要です。本記事では、レビューのチェックポイントを説明します。

レビューが必要な理由

Claude Code の出力は優れていますが:
- 意図しない動作が含まれる可能性
- パフォーマンスが最適でない可能性
- セキュリティリスクが残る可能性

対策:人間がレビュー

レビューの 5 つのチェックポイント

1. 機能的正確性(CORRECTNESS)

確認項目:
□ 指示通りの実装か
□ エッジケースをハンドルしているか
□ エラーハンドリングは適切か
□ テストはすべてパスしているか
□ 出力形式は正しいか

例:パスワード検証
❌ 間違い:5 文字以上という要件を見落とし
✅ 正しい:要件を完全に実装

2. コード品質(QUALITY)

確認項目:
□ コードは読みやすいか
□ 変数名は適切か
□ ネストが深すぎないか
□ 重複コードがないか
□ コメントは必要最小限か

例:複雑性
❌ 間違い:ネストが 5 段階以上
✅ 正しい:ネストは 3 段階まで

3. パフォーマンス(PERFORMANCE)

確認項目:
□ 処理時間は許容範囲か
□ メモリ使用量は適切か
□ N+1 問題がないか
□ ループの効率は良いか

例:データ処理
❌ 間違い:ループ内で DB クエリを実行
✅ 正しい:一括クエリ後にループ

4. セキュリティ(SECURITY)

確認項目:
□ SQL インジェクションに対応
□ XSS 対策がされているか
□ 認証・認可は適切か
□ 機密情報がログに出力されていないか
□ 入力検証はされているか

例:認証
❌ 間違い:パスワードを平文で保存
✅ 正しい:bcrypt でハッシュ化

5. 保守性(MAINTAINABILITY)

確認項目:
□ 将来の変更が容易か
□ テストのカバレッジは十分か
□ ドキュメントは充実しているか
□ 依存関係は適切か
□ エラーメッセージは明確か

例:拡張性
❌ 間違い:ハードコードされた値が多い
✅ 正しい:設定可能な構造

レビューチェックリスト

ステップ 1:静的解析

□ 構文エラーがないか
□ 型チェック(mypy など)をパス
□ Linter(flake8 など)をパス
□ コード規約を守っているか

ステップ 2:機能テスト

□ テストがすべてパス
□ 意図したユースケースが機能するか
□ エッジケースをテストしたか
□ エラー状況をテストしたか

ステップ 3:コード確認

□ git diff で全ての変更を確認
□ 意図しない変更がないか
□ コードの複雑さは許容範囲か
□ セキュリティリスクがないか

ステップ 4:パフォーマンス確認

□ 実行時間をはかった
□ 大規模データでテストしたか
□ メモリリークがないか
□ 最適化の余地はないか

ステップ 5:最終確認

□ すべてのテストが GREEN
□ ドキュメントは更新された
□ コミットメッセージは明確
□ レビューガイドラインに従っている

レビュー例

例 1:良いコード

def validate_email(email: str) -> bool:
    """Check if email is valid format."""
    if not email or '@' not in email:
        return False
    
    local, domain = email.split('@', 1)
    return bool(local and domain and '.' in domain)

レビュー結果:

✅ 機能的正確性:正確
✅ コード品質:明確で読みやすい
✅ パフォーマンス:効率的
✅ セキュリティ:入力チェック OK
✅ 保守性:テスト可能な構造
→ APPROVED

例 2:問題のあるコード

def calculate(data):  # 型なし
    result = 0
    for i in range(len(data)):  # N+1 可能性
        result += db.query(data[i])  # ループ内 DB アクセス
    return result  # エラーハンドリングなし

レビュー結果:

❌ 機能的正確性:不完全(エラー処理なし)
❌ コード品質:変数名が不明確
❌ パフォーマンス:ループ内 DB アクセス
❌ セキュリティ:入力検証なし
❌ 保守性:テスト困難
→ CHANGES REQUIRED

修正指示:

Claude Code に指示:
「calculate() を修正:

問題点:
1. ループ内で DB アクセス(N+1 問題)
2. エラーハンドリングなし
3. 型注釈なし

修正内容:
1. 一括で DB からデータを取得
2. 例外処理を追加
3. 型注釈を追加
4. 変数名を明確に

テストはすべてパス」

よくある確認漏れ

❌ 見落としやすい

1. セキュリティリスク
   パスワードの取り扱い、入力検証

2. パフォーマンス
   ループ内 DB アクセス、メモリリーク

3. エッジケース
   空の入力、NULL、大規模データ

4. エラーハンドリング
   例外時の動作が未定義

5. ドキュメント
   関数説明が不十分

レビュー時間の目安

実装行数  →  レビュー時間
10-30 行  →  5-10 分
30-50 行  →  10-15 分
50+ 行    →  15-30 分以上

※ セキュリティ関連は加算時間

まとめ

Claude Code の実装をレビューするコツ:

5 つのチェックポイント

  1. 機能的正確性(CORRECTNESS)
  2. コード品質(QUALITY)
  3. パフォーマンス(PERFORMANCE)
  4. セキュリティ(SECURITY)
  5. 保守性(MAINTAINABILITY)

レビューステップ

  1. 静的解析(構文など)
  2. 機能テスト
  3. コード確認
  4. パフォーマンス確認
  5. 最終確認

効果

Claude Codeでテストを増やしながら開発する流れと合わせることで、高品質な実装が実現します。