第6部:品質と効率化 Step 19 / 24

AIコードレビュー

AIにコードレビューを依頼することで、バグやセキュリティ問題を早期発見。一人開発でも品質を保てます。

レビューの依頼方法

基本的なプロンプト

以下のコードをレビューしてください。

[コードを貼り付け]

特に確認してほしい点:
- セキュリティ上の問題
- パフォーマンス
- 可読性
- ベストプラクティスに沿っているか

詳細なレビュー依頼

以下のFastAPIエンドポイントをレビューしてください。

```python
@app.post("/users")
def create_user(user: UserCreate, db: Session = Depends(get_db)):
    db_user = User(email=user.email, password=user.password)
    db.add(db_user)
    db.commit()
    return db_user
```

確認観点:
1. SQLインジェクション対策
2. パスワードの取り扱い
3. エラーハンドリング
4. 入力バリデーション
5. レスポンス形式

よくある指摘パターン

セキュリティ

問題のあるコード

password=user.password  # 平文保存
query = f"SELECT * FROM users WHERE id = {id}"

改善後

password_hash=hash(user.password)
query = select(User).where(User.id == id)

エラーハンドリング

問題のあるコード

def get_user(id):
    return db.query(User).first()
    # Noneの場合の考慮なし

改善後

def get_user(id):
    user = db.query(User).first()
    if not user:
        raise HTTPException(404)
    return user

パフォーマンス

問題のあるコード

# N+1問題
posts = db.query(Post).all()
for post in posts:
    print(post.author.name)

改善後

# Eager Loading
posts = db.query(Post).options(
    joinedload(Post.author)
).all()

Claude Code / Cursor でのレビュー

ファイル単位のレビュー

# Claude Code
このファイルをレビューして

# Cursor
Ctrl+K → "Review this file for security issues"

変更差分のレビュー

# Claude Code
git diff をレビューして、問題があれば指摘して

# git diff の出力結果を貼り付けてもOK

セルフレビューチェックリスト

セキュリティ

  • □ パスワードはハッシュ化されているか
  • □ SQLインジェクション対策
  • □ XSS対策
  • □ 認証・認可は正しいか
  • □ 機密情報はログに出ていないか

コード品質

  • □ 命名は分かりやすいか
  • □ 関数は適切な長さか
  • □ 重複コードはないか
  • □ エラーハンドリングは適切か
  • □ 型定義は正しいか

パフォーマンス

  • □ N+1クエリはないか
  • □ 無駄なAPI呼び出しはないか
  • □ 適切にキャッシュしているか
  • □ 大きなデータを一度に取得していないか

メンテナンス性

  • □ 必要なコメントはあるか
  • □ マジックナンバーはないか
  • □ テストは書けているか
  • □ 設定値は環境変数化されているか

まとめ

  • AIにコードレビューを依頼して品質向上
  • セキュリティ、パフォーマンス、可読性を確認
  • チェックリストでセルフレビューも
  • 指摘を学びに変えてスキルアップ
テスト入門 次へ:環境変数と設定