7月16日、Dazbo (Darren Lester)が「Automated GitHub Code Reviews Using Google Gemini」と題した記事を公開した。この記事では、Google GeminiをGitHub Actions上で動作させ、プルリクエストのコードレビューを自動化するOSSアクションの設計と導入手順について詳しく紹介されている。
Googleの公式ツールが2つ同時に廃止された
記事のきっかけは、Googleが提供していた2つのPRレビュー統合の終了だ。
- Gemini CLI GitHub Actions(
run-gemini-cli) — 2026年6月18日にサービス終了 - Gemini Code Assist on GitHub(GitHub App統合) — 2026年7月17日に終了
両者の廃止理由について、元記事ではGemini Code AssistとGemini CLIの後継製品への統合・移行が行われたとされているが、移行先の製品名については元記事の原文を直接参照いただきたい(本記事では断定を避ける)。有料のGoogle AIサブスクリプションユーザーも含めて、従来の統合は利用不可になった。
これらに依存していた開発者向けに、Darren Lester氏が自作のドロップイン代替品を公開した。それが Gemini PR Review & Triage Action(derailed-dash/gemini-review-action) だ。GitHub Marketplaceにも登録されており、ワークフロー設定時にIDEの自動補完も効く。
既存の代替OSSでは満足できなかった理由
著者は自作前にコミュニティ製の代替品を調べたが、以下の問題があり採用しなかった。
①速度 — 多くの代替品はPython依存関係のインストールにpipを使い、さらにDockerコンテナとして動作するため起動が遅い。著者はDockerコンテナを廃止し、ネイティブcomposite action + uv という構成にした。uvはRust製の高速Pythonパッケージマネージャ・仮想環境ツールで、従来のpipと比べて仮想環境の構築とパッケージインストールが大幅に速く、レビューが数秒で完了する。
②バイナリファイルの脆弱性 — バイナリや暗号化済みアセットを含むPRで壊れるケースがあった。本アクションはdiffをパースしてバイナリ・圧縮・暗号化ファイルをフィルタリングし、残りのファイルについては変更箇所だけでなくファイル全体の内容をAPIに渡す。これにより変更のコンテキストをGeminiが把握でき、レビュー品質が上がる。
③JSONスキーマの強制 — テキストプロンプトでJSONを返すよう指示するだけでは、Markdownで囲まれたJSONや不正フォーマットが返ってきてパーサーが壊れることがある。本アクションはGeminiのresponse_schema APIを使い、**Pydanticスキーマによる構造化出力**を強制することでこの問題を排除した。PydanticはPythonの型ヒントを活用したデータバリデーションライブラリで、ここではAPIレスポンスの型安全性を保証する用途で使われている。
④SDK・モデルの新しさ — 既存の代替品は廃止済みのgoogle-generativeai SDKや古いモデルを使っていた。本アクションは最新のgoogle-genai SDKを採用し、デフォルトモデルは元記事の記載に基づき**gemini-3.5-flash**となっている。
⑤レビュー言語の設定 — 言語設定がなく、読めない言語でレビューが返ってくることがあった。TOMLファイルで言語を含むプロンプトをカスタマイズできる。
3分で導入できるセットアップ手順
Step 1: 認証
Gemini APIキーをGoogle AI Studioで取得し、GitHubリポジトリの Settings > Secrets and variables > Actions にGEMINI_API_KEYとして登録する。
企業のGoogle Cloud環境では、Workload Identity Federation(WIF)を使って静的シークレットなしで認証することも可能だ。WIFはGCP特有の仕組みで、外部のワークロード(ここではGitHub Actions)がサービスアカウントキーを持たずにGCPリソースへ一時的な認証情報でアクセスできるようにするものだ。シークレットの漏洩リスクを抑えたい場合に有効な選択肢となる。
Step 2: ワークフローファイルの作成
.github/workflows/gemini-review.ymlを以下の内容で作成する:
name: "🔎 Dazbo's Gemini Code Review"
on:
pull_request:
branches:
- main
issue_comment:
types: [created]
jobs:
review:
if: |
github.event_name == 'pull_request' ||
(
github.event_name == 'issue_comment' &&
github.event.issue.pull_request &&
startsWith(github.event.comment.body, '/gemini-review') &&
contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
)
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || format('refs/pull/{0}/head', github.event.issue.number) }}
- name: Run Gemini Review Action
uses: derailed-dash/gemini-review-action@v1
with:
gemini_api_key: ${{ secrets.GEMINI_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
gemini_model: 'gemini-3.5-flash'
language: 'English (UK)'
PRを作成すると数秒でワークフローが起動し、行単位のフィードバックがPR上に表示される。コードの修正提案はGitHub標準の```suggestion ブロック形式で投稿されるため、ワンクリックでそのままマージ適用できる。
Step 3: コメントで再レビューをトリガー
PR上のコメントに /gemini-review と書くと、オンデマンドでレビューを再実行できる。ただしauthor_associationチェックにより、OWNER・MEMBER・COLLABORATORのみが実行権限を持つ。パブリックリポジトリで誰でも実行できてしまうとAPIクォータが消費されるため、このチェックは重要だと記事は強調している。
Step 4(任意): プロンプトのカスタマイズ
リポジトリルートにgemini-review.tomlを置くことでデフォルトのプロンプトを上書きできる:
[review]
system_instruction = """
You are a grumpy, sarcastic senior code reviewer.
You prefer clean, readable, Pythonic code.
Always look for security vulnerabilities, resource leaks, and performance issues.
"""
その他の機能
本アクションはPRのコードレビューだけでなく、Issueの自動ラベリング・優先度付けにも対応している。実行環境はLinux・macOS・Windows runner(GitHub-hostedおよびself-hosted)をサポートしており、旧run-gemini-cliアクションとのドロップイン互換性も維持されている。
詳細はAutomated GitHub Code Reviews Using Google Geminiを参照していただきたい。