AIを使ったコードレビューの活用方法|正しいプロンプトの書き方・フィードバックの受け取り方・改善のサイクル


はじめに

前回の記事ではAIを使ってコードを学ぶ最初のステップとして初心者がやってはいけない使い方と正しい使い方を解説しました。今回はAIを使ったコードレビューの活用方法を解説します。独学でコードを書いていると「このコードって正しいのかな」「もっとよい書き方があるのかな」と気になっても確認する手段がありません。AIを使えば24時間いつでも自分のコードをレビューしてもらえます。ただし聞き方次第でフィードバックの質が大きく変わります。正しいプロンプトの書き方から改善のサイクルまで丁寧に解説します。


1. AIコードレビューでできること

1.1 AIにレビューしてもらえること

AIコードレビューでできること:

✅ コードの書き方が正しいか確認する
✅ バグや潜在的な問題を指摘してもらう
✅ セキュリティ上の問題を見つけてもらう
✅ もっとシンプルな書き方を提案してもらう
✅ パフォーマンス改善のアドバイスをもらう
✅ 命名規則や可読性の問題を指摘してもらう
✅ ベストプラクティスと比較してもらう
✅ 「なぜその書き方がよくないか」を説明してもらう

人間のレビュアーと違うメリット:
→ 24時間いつでも依頼できる
→ 遠慮なく何度でも聞き直せる
→ 初歩的なことも嫌がらず教えてくれる
→ 複数の改善案を一度に出してくれる

1.2 AIレビューの限界

AIコードレビューの注意点:

⚠️ プロジェクト全体の文脈を知らない
   → コードの断片だけでは判断できないことがある
   → 「なぜそう書いたか」の背景を伝える必要がある

⚠️ 最新のライブラリ・フレームワークに対応していない場合がある
   → バージョンを明記して確認する

⚠️ AIの提案が常に正しいわけではない
   → 複数の観点から考える習慣を持つ
   → 「なぜそうするのか」を必ず確認する

⚠️ セキュリティの網羅的なチェックは難しい
   → 重要なセキュリティチェックは専門ツールも使う

→ AIのレビューを「参考意見」として受け取り
  最終判断は自分でする

2. よくある悪いプロンプトと改善例

2.1 情報が少なすぎる

❌ NG:

「このコードをレビューしてください」

function calc(a, b) {
    return a + b;
}

→ 何のためのコードか不明
→ どんな観点でレビューしてほしいか不明
→ 返ってくる回答が的外れになりやすい

✅ OK:

「以下のJavaScript関数をレビューしてください。

【コードの目的】
カートの合計金額を計算する関数です。

【確認してほしいこと】
① 命名が適切か
② エラーハンドリングが必要か
③ もっとよい書き方があるか

【コード】
function calc(a, b) {
    return a + b;
}

【使用している環境】
バニラJavaScript・ES2022」

→ 目的・確認ポイント・環境を伝えることで
  的確なフィードバックが返ってくる

2.2 漠然とした質問

❌ NG:

「このコードは問題ありますか?」

→「特に問題ありません」で終わる可能性がある
→ AIはポジティブな回答をしがちなので
  具体的な観点を指定する必要がある

✅ OK:

「以下のコードについて
 厳しい目線でレビューしてください。

 特に以下の観点でチェックをお願いします:
 ① セキュリティ上の問題はあるか
 ② パフォーマンスの問題はあるか
 ③ バグが発生しそうな箇所はあるか
 ④ 可読性・保守性の問題はあるか
 ⑤ ベストプラクティスから外れている箇所はあるか

 問題がなければ「問題なし」と教えてください」

→ 観点を指定することで
  見落としなくレビューしてもらえる

3. 正しいプロンプトの書き方

3.1 基本テンプレート

【基本テンプレート】

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

【コードの目的】
(このコードが何をするものか説明する)

【確認してほしい観点】
① (観点1)
② (観点2)
③ (観点3)

【自分が気になっている点】
(自分でも気になっている部分があれば書く)

【使用環境・バージョン】
(言語・フレームワーク・バージョンなど)

【コード】
(コードをここに貼る)

【フィードバックの形式】
問題点があれば:
・何が問題か
・なぜ問題か
・どう直すべきか
をセットで教えてください。

3.2 用途別のプロンプト例

セキュリティレビュー

以下のPHPコードをセキュリティの観点でレビューしてください。

【コードの目的】
ユーザーからのお問い合わせフォームのデータを
データベースに保存する処理です。

【特に確認してほしいこと】
① SQLインジェクション対策は十分か
② XSS対策は取れているか
③ CSRF対策は実装できているか
④ 入力値のバリデーションに漏れはないか
⑤ その他のセキュリティリスクはあるか

【使用環境】
PHP 8.2 / MySQL 8.0 / PDO使用

【コード】
<?php
session_start();
$name    = $_POST['name'];
$email   = $_POST['email'];
$message = $_POST['message'];

$pdo  = new PDO( 'mysql:host=localhost;dbname=mysite', 'root', 'password' );
$stmt = $pdo->prepare( 'INSERT INTO contacts VALUES (?, ?, ?)' );
$stmt->execute( [ $name, $email, $message ] );
echo '送信しました:' . $name;
?>

問題がある箇所は「何が問題か・なぜ問題か・どう直すべきか」
をセットで教えてください。

パフォーマンスレビュー

以下のJavaScriptコードをパフォーマンスの観点でレビューしてください。

【コードの目的】
商品一覧ページで検索・フィルター機能を実装しています。
商品数は最大500件程度です。

【確認してほしいこと】
① 無駄なDOM操作はないか
② ループ処理に問題はないか
③ メモリ効率に問題はないか
④ 改善できる箇所があれば具体的に教えてください

【コード】
const searchInput = document.querySelector( '#search' );

searchInput.addEventListener( 'input', () => {
    const query    = searchInput.value;
    const products = document.querySelectorAll( '.product-card' );

    products.forEach( ( card ) => {
        const name = card.querySelector( '.product-name' ).textContent;
        if ( name.includes( query ) ) {
            card.style.display = 'block';
        } else {
            card.style.display = 'none';
        }
    } );
} );

可読性・保守性レビュー

以下のコードを可読性・保守性の観点でレビューしてください。

【コードの目的】
ユーザーの注文データを集計してダッシュボードに表示する関数です。

【確認してほしいこと】
① 関数名・変数名はわかりやすいか
② 関数が長すぎないか・分割すべき箇所はあるか
③ コメントは適切か・不足しているか
④ 処理の流れが読みやすいか
⑤ 将来機能を追加する際に困りそうな箇所はあるか

【コード】
function p( orders ) {
    let t = 0;
    let c = 0;
    let d = {};
    orders.forEach( o => {
        if ( o.s === 1 ) {
            t += o.p * o.q;
            c++;
            if ( !d[o.cat] ) d[o.cat] = 0;
            d[o.cat] += o.p * o.q;
        }
    } );
    return { t, c, d };
}

4. フィードバックの受け取り方

4.1 フィードバックを正しく理解する

AIのフィードバックを受け取ったら:

ステップ①:全体を読んで把握する
→ どんな問題が指摘されたか
→ 重大な問題か・軽微な問題か
→ 自分でも気づいていた問題か

ステップ②:一つひとつ「なぜ」を確認する
→ 指摘の理由を理解する
→ わからない用語はさらに質問する
→「なぜそれが問題なのか」を言葉で説明できるようにする

ステップ③:優先度をつける
→ セキュリティ・バグ系:即対応
→ パフォーマンス系:影響を確認してから対応
→ 可読性・スタイル系:時間があるときに対応

ステップ④:自分で修正する
→ 修正コードをAIに書いてもらわない
→ フィードバックを参考に自分で書き直す
→ 書き直したコードを再度レビューしてもらう

ステップ⑤:学んだことをメモする
→「この書き方は◯◯の理由でよくない」と記録する
→ 次回同じ問題を繰り返さないようにする

4.2 フィードバックに納得できないとき

AIの提案に疑問を感じたら:

✅ 「なぜその方が良いのか」を深掘りする

「先ほどの指摘について確認させてください。
 ○○を△△に変えるべきとのことでしたが
 現在の書き方だと具体的にどんな問題が
 発生しますか?実際のシナリオで説明してください」

✅ 別の観点から確認する

「この修正を採用しない場合
 発生しうるリスクはどの程度ですか?
 今の段階でそのリスクは許容できますか?」

✅ 自分の意図を伝えて再考してもらう

「○○という理由でこの書き方にしました。
 その前提があっても改善が必要ですか?」

→ AIの提案を鵜呑みにしない
→ 「なぜ」を理解してから採用するか判断する
→ AIも間違えることがある

5. 改善のサイクル

5.1 コードレビューの改善サイクル

① 自分でコードを書く
   ↓
② AIにレビューを依頼する
   (基本テンプレートを使って)
   ↓
③ フィードバックを読んで理解する
   (わからない点はさらに質問する)
   ↓
④ 自分でコードを修正する
   (AIに書いてもらわない)
   ↓
⑤ 修正したコードを再レビューしてもらう
   「先ほどの指摘を受けて修正しました。
    改善されていますか?まだ問題はありますか?」
   ↓
⑥ 「問題なし」になるまで繰り返す
   ↓
⑦ 学んだことをメモする

→ このサイクルを繰り返すことで
  コードの品質と自分のスキルが同時に上がる

5.2 再レビューのプロンプト例

【再レビュー用テンプレート】

先ほどのレビューを受けて
以下の点を修正しました。

【修正した点】
① ○○を△△に変更した(理由:◯◯のため)
② ○○を追加した(理由:△△のため)
③ ○○を削除した(理由:◯◯のため)

【修正後のコード】
(修正後のコードを貼る)

【確認してほしいこと】
① 修正は正しく適用できているか
② まだ問題が残っている箇所はあるか
③ 新たに問題が生じた箇所はないか

6. レベル別のレビュー活用法

6.1 学習初期(HTML・CSS・JavaScript基礎)

この時期にAIレビューで確認すること:

【HTMLのレビュー】
「以下のHTMLをレビューしてください。

 確認ポイント:
 ① セマンティックなタグを適切に使えているか
 ② alt属性・label属性などアクセシビリティは取れているか
 ③ インデントや構造はわかりやすいか」

【CSSのレビュー】
「以下のCSSをレビューしてください。

 確認ポイント:
 ① セレクターは適切か(詳細度が高すぎないか)
 ② 重複しているスタイルはないか
 ③ レスポンシブ対応に問題はないか」

【JavaScriptのレビュー】
「以下のJavaScriptをレビューしてください。

 確認ポイント:
 ① 変数・関数の命名はわかりやすいか
 ② constとletを適切に使い分けているか
 ③ エラーハンドリングは必要か」

6.2 副業レベル(WordPress・PHP・実案件対応)

この時期にAIレビューで確認すること:

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

 確認ポイント:
 ① セキュリティ(XSS・SQLインジェクション・CSRF)
 ② バリデーションに漏れはないか
 ③ エラーハンドリングは適切か
 ④ PDOのプリペアドステートメントを正しく使えているか」

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

 確認ポイント:
 ① WordPressのコーディング規約に沿っているか
 ② wp_enqueue_scripts を正しく使えているか
 ③ テンプレートタグを適切に使えているか
 ④ functions.php の書き方に問題はないか」

【JavaScriptのレビュー(実案件レベル)】
「以下のJavaScriptをレビューしてください。

 確認ポイント:
 ① ES2022以降のモダンな書き方に対応できているか
 ② イベントリスナーのメモリリークの可能性はないか
 ③ 非同期処理のエラーハンドリングは適切か」

7. 実践チェックリスト

✓ レビューを依頼するとき「コードの目的・確認ポイント・使用環境」の3点をセットで伝えているか

✓ 「このコードをレビューして」ではなく観点を指定した具体的なプロンプトで依頼しているか

✓ フィードバックを受け取ったあと「なぜ問題なのか」を理解してから修正しているか

✓ 修正コードはAIに書いてもらわず自分で書き直しているか

✓ 修正したコードを再レビューしてもらう「改善サイクル」を回しているか

✓ AIの提案に疑問を感じたとき「なぜそうするのか」を深掘りして確認しているか

✓ セキュリティ・バグ系の指摘は優先して対応しているか

✓ レビューで学んだことをメモして次回同じ問題を繰り返さない習慣があるか


まとめ

今回はAIを使ったコードレビューの活用方法として正しいプロンプトの書き方・フィードバックの受け取り方・改善のサイクルを解説しました。ポイントをまとめると:

  • AIコードレビューは24時間いつでも依頼できる強力なツールだが「コードの目的・確認ポイント・使用環境」を伝えないと的外れなフィードバックになる
  • 「このコードをレビューして」という漠然とした質問ではなくセキュリティ・パフォーマンス・可読性など観点を指定することで深いフィードバックが返ってくる
  • フィードバックを受け取ったら「なぜ問題なのか」を理解してから修正する・理由を理解せずに直すだけでは同じ問題を繰り返す
  • 修正コードはAIに書いてもらわず自分で書き直す・そのうえで再レビューしてもらう改善サイクルを回す
  • AIの提案に疑問を感じたときは「なぜそうするのか実際のシナリオで説明して」と深掘りする・AIも間違えることがある
  • セキュリティ・バグ系の指摘は即対応・可読性の問題は時間があるときに対応と優先度をつける
  • レビューで学んだことをメモすることで「AIに言われた」ではなく「自分が学んだ」状態にできる

次の記事では、納品前チェックリストと安全なサーバー移行・本番公開の手順を解説します。お楽しみに!

コメント

タイトルとURLをコピーしました