広告枠を募集中 ご相談ください

GitHub Actions で Bito AI Code Review Agent を設定し、PR レビューとセキュリティ監査を自動化する完全ガイド

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

アジャイル開発やスプリントサイクルの高速化に伴い、エンジニアリングマネージャーや開発効率化(DevEx)チームが直面する最大のボトルネックの一つが、Pull Request(PR)レビューにかかるシニアエンジニアのリソース圧迫です。実際、多くの開発現場でシニアエンジニアが業務時間の 20%〜30% を、構文エラーの指摘、定型コードの確認、フォーマット違反の注意、基本的な単元テストの書き漏れの指摘といった初歩的なレビュー作業に費やしています。このような作業は PR のマージサイクルを長期化させるだけでなく、「レビュー疲れ」を引き起こし、本来注力すべきアーキテクチャの妥当性評価やコアビジネスロジックの検証を阻害します。

Bito の AI Code Review Agent(gitbito/codereviewagent)は、この一次レビューを完全に自動化するために設計された GitHub 連携エージェントです。正規表現や単純なパターン一致に依存する従来のリンターとは異なり、Bito は抽象構文木(AST)、シンボルインデックス、コードベース埋め込み(Embedding)を活用してリポジトリ全体のコンテキストを把握します。GitHub Actions のワークフローに組み込むことで、PR の作成や更新時に自動起動し、統合された静的解析ツールの実行、セキュリティ脆弱性の検出、そして 1 クリックで適用可能なインライン修正提案を即座に生成します。

本記事では、GitHub Actions における Bito AI Code Review Agent の導入手順、認証シークレットの設定、ワークフロー YAML の記述、静的解析とセキュリティ監査の連携、組織固有のコーディング規約の適用、およびノイズ制御のベストプラクティスを徹底解説します。


アーキテクチャの概要:CI/CD パイプラインにおける Bito の動作フロー

Bito Code Review Agent は、GitHub ホステッドランナー(ubuntu-latest)または企業内のセルフホステッドランナー(Self-Hosted Runner)上で動作します。

+-----------------------------------------------------------------------------------+
| GitHub リポジトリイベント(PR 作成 / コミット push / コメントコマンド)           |
+-----------------------------------------------------------------------------------+
                                          |
                                          v
+-----------------------------------------------------------------------------------+
| GitHub Actions ランナー (Runner)                                                  |
|                                                                                   |
|  1. コード差分の取得とリポジトリ全体のコンテキスト解析(AST / シンボル索引)     |
|  2. 静的解析ツールの実行(fb_infer, astral_ruff, mypy, OWASP 等)                 |
|  3. カスタム開発規約の読み込み(CLAUDE.md, GEMINI.md, AGENTS.md, .bito.yaml)     |
|  4. BITO_ACCESS_KEY を介した Bito AI 推論実行(モデル学習へのコード利用ゼロ)     |
+-----------------------------------------------------------------------------------+
                                          |
                                          v
+-----------------------------------------------------------------------------------+
| GitHub Pull Request 画面                                                          |
|  - PR 概要サマリーおよびリスクスコアの提示                                        |
|  - 1 クリックでマージ可能なインラインコード修正コメント                           |
|  - 対話型コマンドの処理(/review, /review security, /resolve 等)                 |
+-----------------------------------------------------------------------------------+

主なアーキテクチャ上の特長は以下の通りです:


事前準備と認証シークレットの設定

ワークフローファイルを配置する前に、GitHub リポジトリ側で必要な認証トークンを設定します。

1. 必要なキーの取得

2. GitHub リポジトリの Secrets 登録

対象リポジトリの Settings > Secrets and variables > Actions > Secrets に移動し、以下の 2 つを登録します:

3. GitHub Actions 権限の確認

リポジトリの Settings > Actions > General を確認します:


GitHub Actions ワークフローの設定手順

リポジトリの .github/workflows/bito_code_review.yml にワークフロー定義を作成します。

実運用向けワークフロー YAML の記述例

name: Bito AI Code Review Agent

on:
  pull_request:
    types: [opened, synchronize, reopened]
  issue_comment:
    types: [created]

concurrency:
  group: bito-cra-${{ github.workflow }}-${{ github.event.pull_request.number || github.event.issue.number }}
  cancel-in-progress: true

jobs:
  bito_review:
    # PR の更新時、または PR コメントで /review コマンドが入力された時に実行
    if: >
      github.event_name == 'pull_request' ||
      (github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/review'))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write

    steps:
      - name: リポジトリのチェックアウト
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Bito AI Code Review Agent の実行
        uses: gitbito/codereviewagent@main
        env:
          BITO_ACCESS_KEY: ${{ secrets.BITO_ACCESS_KEY }}
          GIT_ACCESS_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }}
          # 静的解析ツールの有効化
          STATIC_ANALYSIS_TOOL: "fb_infer,astral_ruff,mypy"
          # PR フィルタリングとノイズ削減
          EXCLUDE_BRANCHES: "main,master,production"
          EXCLUDE_FILES: "*.min.js,*.lock,package-lock.json,yarn.lock,vendor/**,dist/**,docs/**"
          EXCLUDE_DRAFT_PR: "true"
          # 提案の粒度設定: essential (重大なバグ・脆弱性のみ) または comprehensive (全般)
          SUGGESTION_MODE: "essential"

セルフホステッドランナー(オンプレミス / 社内環境)の構成

社内ファイアウォール内や GitHub Enterprise Server で運用する場合の調整点:

  1. gitbito/codereviewagent リポジトリを組織内のプライベートリポジトリ(例: myorg/gitbito-bitocodereview)にフォークまたはミラーリングします。
  2. ワークフローの runs-on を自社ランナーのラベルに変更します(例: runs-on: [self-hosted, linux, x64])。
  3. Action の参照先を内部リポジトリに変更します(uses: myorg/gitbito-bitocodereview@main)。
  4. リポジトリの環境変数に GIT_DOMAIN を追加し、プライベートドメイン(例: github.internal.mycompany.com)を指定します。

セキュリティ監査と静的解析の連携

Bito は、静的解析ツールと LLM のセマンティック推論を融合させることで、高精度なセキュリティ監査を実現します。

1. 静的解析エンジン(Static Analysis)の統合

環境変数 STATIC_ANALYSIS_TOOL: "fb_infer,astral_ruff,mypy" を指定すると、Agent はコードを解析する前に専門ツールを実行します:

2. カバーされるセキュリティ監査領域

PR レビュー時、Bito は OWASP Top 10 を含む主要なセキュリティリスクを自動スキャンします:

3. PR コメントによる対話型コマンド一覧

開発者は PR のコメント欄からコマンドを送信して、エージェントの動作を制御できます:

コメントコマンド実行内容最適な利用シーン
/review直前のレビュー以降に追加されたコミットのみを増分レビュー。通常の開発イテレーション時。
/review fullPR に含まれるすべての変更ファイルに対して完全な再レビューを実行。大規模リファクタリング後の最終確認。
/review securityOWASP 脆弱性、認証、シークレット漏洩に特化したセキュリティ監査を実行。決済・認証基盤・決済機能の変更時。
/review performance計算量、データベース N+1 クエリ、メモリ効率に特化した性能レビュー。高負荷 API やバッチ処理の実装時。
/pause / /resume当該 PR での自動レビューの実行を一時停止 / 再開。プロトタイプ作成や実験的コミット時。
/resolveBito が過去に投稿した修正済みコメントを一括で解決済みに変更。マージ前のコメント欄の整理。

チーム固有のコーディング規約の適用

一般的な AI モデルでは判定できないチーム固有の設計方針やアーキテクチャルールも、リポジトリルートに規約ファイルを配置することで Bito に学習させることができます。

サポートされる設定ファイル

Bito はリポジトリ直下の以下の Markdown ファイルを自動検出して規約を読み込みます:

実装例:AGENTS.md の記述例

# 開発チーム コードレビュー基準

## アーキテクチャとデータアクセス
- 生の文字列連結による SQL 構築は禁止。必ず SQLAlchemy ORM またはプレースホルダを使用すること。
- FastAPI の非同期関数(async def)内で同期的なブロッキング I/O 関数を呼び出してはならない。
- ビジネスロジックは必ず `services/` レイヤーに実装し、コントローラーに直接記述しないこと。

## エラーハンドリングと可観測性
- 包括的な `except Exception:` の使用は禁止。明示的なカスタム例外を捕捉すること。
- すべての外部 HTTP 通信には 2〜5 秒の明示的なタイムアウトを設定すること。
- ログは Trace ID を含む構造化 JSON 形式で出力すること。

## セキュリティと機密データ
- ユーザーの個人情報(電話番号、クレカ情報など)はログや API レスポンスに平文で含めてはならない。

Bito は PR のコード変更をこれらのルールと照合し、違反箇所を発見した場合は規約に沿った修正案をインラインで提示します。


導入時のノイズ制御と定着化のベストプラクティス

自動レビューツールの導入において最も注意すべきは、「通知ノイズによる開発者の反発」です。円滑な運用のために以下の設定を推奨します:

  1. 初期段階では essential モードで運用:SUGGESTION_MODE: "essential" に設定し、まずは重大なバグやセキュリティリスクのみを指摘させます。微細なスタイルの指摘を抑制することで、開発者の信頼を獲得します。
  2. main ブランチ自体のレビューを除外:EXCLUDE_BRANCHES: "main,master" を設定します。PR 単位での検証が目的であるため、マージ後の main へのコミットに対する再実行はトークンとランナー時間の浪費になります。
  3. ビルド成果物とロックファイルを除外:package-lock.json やコンパイル済みの js、画像アセットなどを EXCLUDE_FILES に指定し、無駄なコンテキスト消費を防ぎます。
  4. Draft PR の除外:EXCLUDE_DRAFT_PR: "true" を有効化し、作業中のドラフト PR ではレビューを実行せず、Ready for review に切り替わった段階で起動させます。
  5. コメントでの対話の推奨:提示された修正案に対して疑問がある場合、開発者は @bitoagent または @askbito を付けて返信することで、提案の根拠を聞いたり、代替案を生成させることができます。

コスト評価と導入の判断基準

Bito AI Code Review Agent は、トークン従量課金ではなくユーザー席数ベース(Per-Seat)のサブスクリプション体系を採用しています:

導入すべき組織

15 名以上のエンジニアを抱え、PR レビューの待ち時間がボトルネックになっているチームや、リモートワークによるタイムゾーンのズレでレビューが滞りがちな組織に最適です。一次レビューを AI に任せることで、PR の平均リードタイムを 30%〜50% 短縮しながら、セキュリティと品質水準の底上げを図ることができます。


参考文献