LESSON 30分

コードレビューの支援

ストーリー

「プロンプトの基礎はもう十分だ。ここからは実践編に入る」

中島先輩がGitHubのPRページを開いた。レビュー待ちのPRが3件溜まっている。

「コードレビューって、正直時間かかるよな?」

「はい... 1件30分〜1時間くらいかかります」

「AIを使えば、レビューの下書きを5分で作れる。 もちろん最終判断は人間だが、AIに一次レビューをさせるとめちゃくちゃ効率が上がる


AIによるコードレビューの流れ

基本フロー

[1. PRのコードをAIに入力]
    ↓
[2. AIがレビューポイントを指摘]
    ↓
[3. 人間が指摘内容を検証・補足]
    ↓
[4. レビューコメントとして投稿]

AIが得意なレビュー観点

観点AIの精度備考
バグの可能性(null参照等)パターンマッチングが得意
型安全性の問題TypeScript の型チェック
セキュリティの一般的な問題中〜高OWASP Top 10 レベル
パフォーマンスの問題明らかなN+1等は検出可能
コーディング規約違反ルールを伝えれば正確
ビジネスロジックの正しさ要件を知らないと判断不可

レビュー用プロンプトテンプレート

テンプレート1: 汎用コードレビュー

あなたはシニアソフトウェアエンジニアとしてコードレビューを行います。

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

レビュー観点(優先度順):
1. バグの可能性(null参照、境界値、非同期処理)
2. セキュリティ(入力バリデーション、インジェクション)
3. パフォーマンス(N+1、不要な計算、メモリ使用)
4. 可読性(命名、構造、コメント)
5. テスタビリティ(テストしやすい設計か)

出力形式:
1. 概要(コードの目的と全体評価を2-3行で)
2. 良い点(最低1つ)
3. 指摘事項(以下の表形式)

| 重要度 | 行 | カテゴリ | 指摘内容 | 修正案 |

重要度: CRITICAL / WARNING / INFO

コード:
[ここにコードを貼り付け]

テンプレート2: セキュリティ重視のレビュー

あなたはアプリケーションセキュリティの専門家です。
以下のコードをOWASP Top 10の観点でセキュリティレビューしてください。

チェック項目:
- A01: アクセス制御の不備
- A02: 暗号化の失敗
- A03: インジェクション
- A07: 認証の失敗

各項目について:
- 問題の有無
- 問題がある場合の具体的なリスク
- 修正案(コード付き)

[コードを貼り付け]

実践例:実際のレビュー

レビュー対象コード

typescript
// ユーザープロフィール更新API
app.put('/api/users/:id', async (req, res) => {
  const userId = req.params.id;
  const { name, email, role } = req.body;

  const user = await db.query(
    `UPDATE users SET name='${name}', email='${email}', role='${role}'
     WHERE id='${userId}' RETURNING *`
  );

  res.json(user.rows[0]);
});

AIのレビュー結果(期待される出力)

概要: ユーザープロフィールを更新するPUTエンドポイント。
複数の深刻なセキュリティ問題があり、即座に修正が必要です。

良い点:
- RETURNING句を使って更新結果を効率的に取得している

指摘事項:

| 重要度 | 行 | カテゴリ | 指摘内容 | 修正案 |
|--------|-----|---------|---------|--------|
| CRITICAL | 7-8 | セキュリティ | SQLインジェクション脆弱性。文字列連結でSQLを構築している | パラメータ化クエリを使用 |
| CRITICAL | 4 | セキュリティ | 認証・認可チェックがない。誰でも任意のユーザーを更新可能 | 認証ミドルウェアの追加 |
| CRITICAL | 4 | セキュリティ | roleフィールドを直接更新可能。権限昇格の危険 | 更新可能フィールドを制限 |
| WARNING | 4 | バリデーション | 入力バリデーションがない | zodなどでバリデーション追加 |
| WARNING | 10 | エラー処理 | try-catchがなくエラー時に500が返る | エラーハンドリング追加 |

AIの修正案を確認・適用する

AIが出力した修正案は、必ず以下の視点で確認してください:

確認ポイント:
1. 修正が元の機能を壊していないか
2. 修正が新しいバグを導入していないか
3. プロジェクトの規約に合っているか
4. テストで動作確認できるか

AIレビューの限界と注意点

AIに任せきりにしてはいけない理由

AIが見落とすこと:
  - ビジネスロジックの正しさ(要件を知らない)
  - プロジェクト全体のアーキテクチャとの整合性
  - チームのコンテキスト(なぜこの設計にしたか)
  - 非機能要件(SLA、スケーラビリティ等)
  - 人間関係への配慮(レビューコメントの表現)

人間が必ず確認すべきこと:
  - AIの指摘が的外れでないか
  - ビジネス要件との整合性
  - チームの合意事項との整合性
  - レビューコメントの表現(丁寧さ)

まとめ

ポイント内容
AIレビューの位置づけ一次レビュー(下書き)として活用
得意な観点バグ検出、セキュリティ、コード品質
苦手な観点ビジネスロジック、アーキテクチャ整合性
最終判断必ず人間が検証して投稿する

チェックリスト

  • AIを使ったコードレビューの流れを理解した
  • レビュー用プロンプトテンプレートを使える
  • AIレビューの限界を理解し、人間の確認が必要な点を把握した
  • 実際にコードをAIにレビューさせて結果を確認した

次のステップへ

コードレビューの次は、ドキュメント作成の自動化です。 README、API仕様書、テクニカルドキュメントの作成をAIで効率化する方法を学びます。


推定読了時間: 30分