バイブコーディング#コードレビュー#AI#品質向上
AIでコードレビュー|品質向上と学習を同時に実現する方法
AIを使ったコードレビューの方法。レビュー依頼の仕方、チェックポイント、学習への活用を解説。
AIでコードレビュー
一人で開発していても、AIがレビューしてくれる。
AIコードレビューのメリット
従来のレビュー
・レビュアーの時間が必要
・フィードバックまで時間がかかる
・人によって指摘が違う
AIレビュー
・いつでも即座にレビュー
・一貫した基準
・客観的な指摘
・学習にもなる
レビュー依頼の仕方
基本形
このコードをレビューしてください。
特に以下の観点でお願いします:
- バグの可能性
- パフォーマンス
- 可読性
- セキュリティ
[コードを貼り付け]
具体的な観点を指定
このAPIエンドポイントをレビューして。
特にセキュリティの観点で問題がないか確認したい。
- 認証は適切か
- 入力バリデーションは十分か
- SQLインジェクションの可能性はないか
チェックポイント別レビュー
バグ・エラー
「このコードにバグの可能性はある?」
チェック項目:
・null/undefinedの処理
・境界値の処理
・エラーハンドリング
・型の整合性
パフォーマンス
「このコードのパフォーマンスを改善できる?」
チェック項目:
・不要な再計算
・N+1問題
・メモリリーク
・非同期処理の最適化
可読性
「このコードをより読みやすくできる?」
チェック項目:
・変数名・関数名
・コメントの適切さ
・関数の分割
・一貫性
セキュリティ
「セキュリティの問題はある?」
チェック項目:
・入力バリデーション
・認証・認可
・機密情報の扱い
・XSS/SQLインジェクション
実践例
関数のレビュー
// レビュー対象
function getUserData(id) {
const user = db.query(`SELECT * FROM users WHERE id = ${id}`)
return user
}
AIのレビュー結果:
問題点:
1. SQLインジェクションの脆弱性
→ プレースホルダを使用してください
2. エラーハンドリングがない
→ try-catchを追加してください
3. 型が不明確
→ TypeScriptで型を定義してください
改善案:
async function getUserData(id: string): Promise<User | null> {
try {
const user = await db.query(
'SELECT * FROM users WHERE id = $1',
[id]
)
return user
} catch (error) {
console.error('Failed to get user:', error)
return null
}
}
PRレビュー
このPRの変更をレビューして。
変更点:
- 新しい認証ミドルウェアを追加
- ユーザーAPIを更新
- テストを追加
[diffを貼り付け]
学習としての活用
なぜその指摘なのか聞く
「なぜこの書き方がよくないの?」
「他の方法と比べてどういうメリットがある?」
「どんな場面でこの問題が起きる?」
ベストプラクティスを学ぶ
「この種の処理のベストプラクティスは?」
「有名なライブラリではどう実装されてる?」
「このパターンの名前は何?」
改善のプロセスを理解
「この改善を段階的に進めるとしたら?」
「優先度が高いのはどの修正?」
「この修正で他に影響が出る箇所は?」
自動化
コミット時にレビュー
# pre-commitフックでAIレビュー
# .git/hooks/pre-commit
echo "AIレビューを実行中..."
# 変更されたファイルをAIに送信
git diff --staged | ai-review
CI/CDに組み込み
# GitHub Actions
- name: AI Code Review
run: |
# PRの差分をAIに送信
gh pr diff ${{ github.event.pull_request.number }} | ai-review
注意点
AIの限界
・プロジェクト固有のルールは知らない
・ビジネスロジックの正しさは判断できない
・すべてのバグを見つけられるわけではない
人間のレビューも必要
・要件との整合性
・チームのコーディング規約
・ビジネス上の判断
次のステップ
参考文献・引用元
- [1]Google's Code Review Guidelines- Google