AIコードレビュー
セッション中にCLI経由で別のAIモデルにコードレビューを依頼します。
前提条件
geminiCLIがインストールされていること(${CLAUDE_SKILL_DIR}/scripts/install-dependencies.shを実行)- 認証:
GEMINI_API_KEY環境変数(推奨。「有料API」を参照)またはGoogleアカウントOAuth(初回はgeminiを対話的に実行) - オプション:OpenAIレビュー用の
codexCLI(brew install codex)
重要:レビューを絶対にスキップしないこと
品質は速度に優先します。 レビューがリクエストされた場合、結果を待つ必要があります。以下のことは絶対に行わないでください:
- レート制限やタイムアウトのためにレビューをスキップする
- レビューなしで進めて「後でレビューできます」と言う
- 外部モデルを呼び出さずに自分自身のレビューで代用する
gemini CLIはレート制限のリトライを自動的に処理します。スクリプトがタイムアウト(終了コード2)で終了した場合は、ユーザーに助けを求めてください。黙って続行しないでください。
レート制限(無料枠 - Googleアカウント認証)
| メトリクス | 制限 |
|---|---|
| 1分あたりのリクエスト数 | 60 RPM |
| 1日あたりのリクエスト数 | 1,000 RPD |
| 容量(トークン/時間) | 非常に低い - 本当のボトルネック |
| モデル | Googleが自動選択(時間とともにアップグレード) |
| コスト | $0 |
重要: RPM/RPDの制限が問題になることは稀です。Googleは容量クォータ(一定時間内に処理されるトークンの総数)も強制しており、こちらがはるかに厳しいです。大規模なレビューペイロード(コード+自動コンテキスト)は、わずか数リクエストでこのクォータを使い切り、TerminalQuotaErrorが発生し、数時間(通常1〜3時間)のリセット待ちになります。これは新しい自動選択モデル(例:Gemini 2.5 Pro)で特に顕著です。
クォータの負荷を軽減するには:
- 小規模/焦点を絞ったレビューには
--no-contextを使用してトークン使用量を削減する - 大規模なレビューは小さなチャンクに分割する
- 有料APIキーを使用して容量制限を完全に回避する(下記参照)
CLIは1分あたりのレート制限ヒット(数秒でリセット)に対して自動的にリトライします。容量クォータはリトライしません。リセットウィンドウを待つ必要があります。スクリプトには1時間のタイムアウトがあります。これを超えた場合は中断され、ユーザーに助けを求める必要があります。
有料API(定期的な使用に推奨)
無料枠の容量クォータは、セッションごとに数回以上のレビューを行うには非現実的です。有料APIキーを使用すると、最小限のコストでこのボトルネックを解消できます。
セットアップ
- Google AI Studioからキーを取得する
- 関連するGoogle Cloudプロジェクトで請求先を有効にする - 課金が有効になっていないと、APIキーは引き続き無料枠の容量制限(OAuthと同じボトルネック)を使用します。AI Studioでは:設定→請求、またはGoogle Cloudコンソールで行います。
- gemini CLIをAPIキー認証を使用するように設定する:
# gemini設定(~/.gemini/settings.json)で認証タイプを設定 # geminiを一度対話的に実行 - 認証方法の選択を求められます。 # プロンプトが表示されたら「Gemini API Key」を選択します。 - 環境変数を設定する:
これをシェルプロファイルに追加すると、新しいシェルが自動的に認識します。すでに実行中のセッション(例:Claude Code)の場合は、ファイルを読み込むかセッションを再起動する必要があります。export GEMINI_API_KEY="あなたのキー" - 動作確認:
gemini -p "hello"- OAuthプロンプトやクォータエラーなしで応答するはずです。
コスト見積もり(Gemini 2.5 Pro)
| トークン | コスト | |
|---|---|---|
| レビューあたりの入力(コンテキスト+差分) | 〜8-12K | 〜$0.01-0.015 |
| レビューあたりの出力 | 〜1-2K | 〜$0.01-0.02 |
| レビューあたりの合計 | 〜$0.02-0.04 |
| 使用レベル | レビュー数/月 | 推定コスト |
|---|---|---|
| 軽度(週に数回) | 〜20 | 〜$0.50 |
| 中程度(1日に数回) | 〜60 | 〜$1.50 |
| 高頻度(1日に何度も) | 〜150 | 〜$4.00 |
使用状況の追跡
- AI Studio → ダッシュボード → 使用量タブ(リクエスト、トークン、コスト)
- Google Cloudコンソール → APIとサービス → ダッシュボード → 「Generative Language API」
- 請求レポート → SKUでグループ化してモデルごとの内訳を表示
- ヒント: 同じプロジェクト内で複数のキーを作成し、AIレビューの使用量と対話型gemini CLIの使用量を分離する
使用方法
ステップ1:レビュー対象を決定する
コンテキストに基づいて選択します:
| 状況 | 送信するもの |
|---|---|
| コードを書いた直後 | 変更した特定のファイル |
| 機能の途中 | git diff(ステージングされていない変更) |
| コミット前 | git diff --cached(ステージングされた変更) |
| ブランチレビュー | git diff main...HEAD |
| 特定の懸念事項 | 単一のファイルまたは関数 |
ステップ2:レビューを実行する
${CLAUDE_SKILL_DIR}/scripts/review.shにあるレビュースクリプトを使用します。このパスはカレントワーキングディレクトリに関係なく、スキル自身のディレクトリに解決されます。./scripts/review.shは使用しないでください(CWDからの相対パスであり、他のリポジトリでは失敗します)。コードを直接geminiやcodexにパイプしないでください - 常にレビュースクリプトを使用してください。
# ステージングされていない変更をレビュー(デフォルト)
${CLAUDE_SKILL_DIR}/scripts/review.sh
# ステージングされた変更をレビュー
${CLAUDE_SKILL_DIR}/scripts/review.sh --staged
# 特定のファイルをレビュー
${CLAUDE_SKILL_DIR}/scripts/review.sh path/to/file1.swift path/to/file2.swift
# mainとのブランチ差分をレビュー
${CLAUDE_SKILL_DIR}/scripts/review.sh --branch
# リモートとのブランチ差分をレビュー(mainで直接作業する場合)
REVIEW_BASE_BRANCH=origin/main ${CLAUDE_SKILL_DIR}/scripts/review.sh --branch
# より良いレビューのために追加のコンテキスト文字列を指定
${CLAUDE_SKILL_DIR}/scripts/review.sh --context "SwiftUIアプリ、iOS 18+、Swift 6" path/to/file.swift
# 特定の計画ファイルを使用してレビュー
${CLAUDE_SKILL_DIR}/scripts/review.sh --plan PLAN.md path/to/file.swift
# 自動コンテキストをスキップ(コード/差分のみ送信)
${CLAUDE_SKILL_DIR}/scripts/review.sh --no-context --staged
ステップ3:フィードバックに対応する
レビューを受け取った後:
- ERRORレベルの問題はすぐに対処する
- WARNING項目を検討する - やむを得ない理由がない限り修正する
- INFO項目は提案 - 判断して対応する
- レビューで不明な点が提起された場合は、ユーザーと話し合う
障害への対応
| 終了コード | 意味 | アクション |
|---|---|---|
| 0 | 成功 | レビューのフィードバックに対応 |
| 1 | レビューするコードがない/引数が不正 | 引数を確認 |
| 2 | タイムアウト(1時間以上ブロック) | ユーザーに助けを求める - レビューをスキップしない |
自動コンテキスト
レビュースクリプトは、すべてのレビューにプロジェクトコンテキストを自動的に先頭に追加し、レビュアーが規約、アーキテクチャ、意図を理解できるようにします。CLAUDE.mdに「コードレビューコンテキスト」セクションを手動で追加する必要はありません。
自動的に含まれるもの(順序):
- 実装計画 - 最初に見つかったもの:
--planフラグ、リポジトリルートのPLAN.md、最新の.claude/plans/*.md - プロジェクト指示 - 最初に見つかったもの:リポジトリルートの
CLAUDE.md、GEMINI.md、AGENTS.md - ファイルツリー - 深さ3のリポジトリ構造
これをスキップするには--no-contextを使用します(例:非常に大きなペイロードの場合)。
--contextフラグは、自動コンテキストに加えて追加のインラインコンテキスト文字列を追加します。
プロバイダー設定
デフォルトのプロバイダーはgeminiです。セッションごとに上書き:
# OpenAIを使用する場合
REVIEW_PROVIDER=codex ${CLAUDE_SKILL_DIR}/scripts/review.sh
重要な注意事項
- レビューは助言的なものです - 2番目のモデルは誤検出を出す可能性があります
- 大きな差分(>50KB)は切り詰められる可能性があります。必要に応じて小さなレビューに分割してください。
- レビューモデルはプロンプトモード(
-p)で実行され、リポジトリを参照することはできません。プロジェクトコンテキストは自動的に含まれ、これを補います - 上記「自動コンテキスト」を参照してください。