OpenClaw
ユースケース初級10 min

OpenClaw で GitHub PR レビューを自動化する方法

OpenClaw を使って AI 駆動の PR 自動レビューワークフローを構築する方法:GitHub 連携、PR Reviewer によるコード分析、Conventional Commits による規範化で、チームのコードレビュー効率を向上させます。

最終更新: 2026-03-31

必要なSkills

GitHub (gh)
推奨

gh CLI で GitHub を操作(Issue/PR/リポジトリなど)。

ガイドを見る
PR Reviewer
推奨

Pull Request の自動コードレビュー。

ガイドを見る
Conventional Commits
推奨

Conventional Commits メッセージの生成/検証。

ガイドを見る

構築するもの

完全自動化された PR レビューパイプラインを構築します:

  1. PR の自動作成 — コミット履歴から AI が規範的な PR 説明を生成
  2. AI コードレビュー — バグ、セキュリティ脆弱性、スタイル問題を自動分析
  3. コミットの規範化 — Conventional Commits フォーマットを強制
  4. 実行可能なフィードバック — PR にインラインレビューコメントを直接投稿

構築が完了すれば、PR を作成するたびに AI レビューが自動起動し、手動作業は不要になります。

AI コードレビューが必要な理由

手動コードレビューは欠かせませんが、実際の運用には明確なボトルネックがあります:

  • レビュー品質のばらつき — レビュアーによって着目点が異なり、命名規則を見る人もいればエラーハンドリングを見る人もいます。どの問題が発見されるかは「今日の担当者」次第です
  • レビュー疲れ — 数百行のコードを読んだ後は注意力が明らかに低下します。研究によると、60分以上の継続レビューで効率が大幅に落ち、重大なバグは大きな diff の後半に潜みがちです
  • 待ち時間の長さ — レビュアーにも自分の開発タスクがあり、PR が数時間から数日放置されることも。これはブロッキングを生み、大きな PR のまとめ提出やマージコンフリクトの原因になります
  • スケーラビリティの問題 — チームが大きくなるほどレビューのボトルネックは深刻に。シニア開発者はレビューに時間を取られ、新メンバーはコードベースの理解が追いつきません

AI レビューは人間のレビューを置き換えるものではなく、システム的なチェック(セキュリティパターン、よくあるバグ、スタイル違反)を担当し、人間のレビュアーがアーキテクチャ設計やビジネスロジックに集中できるようにします。人間が見る前に、品質の最低ラインを通すフィルターだと考えてください。

前提条件

作業を始める前に、以下を準備してください:

  • OpenClaw がインストール・設定済み(スタートガイド
  • GitHub CLIgh)がインストール・認証済み(gh auth login
  • テスト用の GitHub リポジトリ(個人プロジェクトで OK)
  • Node.js 18+

ステップ 1:必要な Skills をインストール

3つの Skill を順番にインストールします:

bash
# 1. GitHub 連携(基盤となる機能)
npx clawhub@latest install github

# 2. PR Reviewer(コード分析)
npx clawhub@latest install pr-reviewer

# 3. Conventional Commits(コミットフォーマット)
npx clawhub@latest install conventional-commits

インストール確認:

bash
clawhub list

3つの Skill すべてが installed と表示されれば OK です。

ステップ 2:GitHub 認証を設定

GitHub Skill には以下のスコープを持つ Personal Access Token が必要です:

  • repo — リポジトリへの完全アクセス
  • read:org — 組織メンバー情報の読み取り(Organization リポジトリの場合、任意)

gh auth login で認証済みの場合、Skill は既存の認証情報を自動的に使用します。未認証の場合:

bash
# 現在の認証状態を確認
gh auth status

# ログインが必要な場合
gh auth login

ステップ 3:PR Reviewer を設定

PR Reviewer Skill はデフォルト設定ですぐに使えますが、動作をカスタマイズできます:

bash
# デフォルト設定を確認
clawhub inspect pr-reviewer

主な設定項目:

  • レビュー深度quick(簡易スキャン)または thorough(詳細分析)
  • フォーカスエリア:セキュリティ、パフォーマンス、スタイル、バグ、またはすべて
  • 自動コメント:PR に直接コメントを投稿するかどうか

ステップ 4:最初の自動レビュー PR を作成

実際の PR でワークフロー全体をテストしましょう:

4.1 フィーチャーブランチを作成

bash
git checkout -b feature/test-ai-review

4.2 コードを修正

プロジェクト内のファイルを編集します。テスト目的で、レビュアーが検出できる典型的な問題を意図的に入れてみましょう:

async 呼び出しの await 漏れ(非同期バグ):

javascript
// Bug:非同期呼び出しに await がない
function getUserData(userId) {
  const response = fetch(`/api/users/${userId}`);  // await が抜けている
  return response.json();  // TypeError: response.json is not a function
}

SQL インジェクション脆弱性:

python
# セキュリティ問題:ユーザー入力が SQL クエリに直接埋め込まれている
def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = '{user_id}'"  # SQL インジェクションのリスク
    return db.execute(query)

ハードコードされたシークレット:

javascript
// セキュリティ問題:API キーがソースコードに直接記載されている
const stripe = require('stripe')('sk_live_abc123secretkey');

N+1 クエリ問題:

python
# パフォーマンス問題:N+1 クエリ — 注文ごとに DB クエリが発生
def get_orders_with_items(user_id):
    orders = Order.objects.filter(user_id=user_id)
    for order in orders:
        order.items = OrderItem.objects.filter(order_id=order.id)  # N+1!
    return orders

4.3 Conventional Commits でコミット

コミットメッセージを手書きせず、OpenClaw に生成してもらいます:

bash
git add .
# OpenClaw が Conventional Commits 規約に準拠したコミットメッセージを自動生成
# 例:"feat(api): add getUserData function for user data retrieval"

4.4 PR を作成してレビュー

bash
# OpenClaw が PR を自動作成し、AI による説明を生成
# PR Reviewer が自動的に diff を分析

数秒以内に以下が表示されます:

  • フォーマットの整った PR 説明(変更内容を自動要約)
  • 具体的なコード行に対するレビューコメント
  • 全体的な評価と改善提案を含むサマリーコメント

レビューコメントの例:

🔒 セキュリティ問題 (14行目, auth.py):
  ユーザー入力が SQL クエリ文字列に直接埋め込まれています。
  SQL インジェクション攻撃のリスクがあります。
  修正案:パラメータ化クエリを使用してください。

  - query = f"SELECT * FROM users WHERE id = '{user_id}'"
  + query = "SELECT * FROM users WHERE id = %s"
  + return db.execute(query, (user_id,))

⚡ パフォーマンス問題 (8行目, orders.py):
  N+1 クエリを検出 — OrderItem.objects.filter() がループ内で
  order ごとに呼び出されています。select_related() または
  prefetch_related() を使って1回のクエリにまとめてください。

  - orders = Order.objects.filter(user_id=user_id)
  + orders = Order.objects.filter(user_id=user_id).prefetch_related('items')

🐛 バグ (3行目, api.js):
  fetch() は Promise を返しますが await されていません。
  response.json() は失敗します。response は pending の
  Promise であり、Response オブジェクトではありません。

  - const response = fetch(`/api/users/${userId}`);
  + const response = await fetch(`/api/users/${userId}`);

ステップ 5:レビューワークフローをカスタマイズ

セキュリティ重視レビュー

セキュリティに敏感なリポジトリでは、PR Reviewer にセキュリティチェックを重点的に行わせます:

  • SQL インジェクションパターン
  • ハードコードされた認証情報や API キー
  • 安全でないデータ処理(未検証の入力、サニタイズの欠如)
  • 依存関係の脆弱性
  • フロントエンドコードの XSS 脆弱性
  • 安全でないデシリアライゼーションパターン

パフォーマンス重視レビュー

パフォーマンスが重要なサービスでは、レビュアーにパフォーマンスパターンをフォーカスさせます。React プロジェクトの場合、不要な再レンダリングを検出できます:

jsx
// パフォーマンス問題:レンダリングのたびに新しいオブジェクト参照が生成され、子コンポーネントが再レンダリングされる
function ParentComponent({ items }) {
  return (
    <ChildComponent
      style={{ margin: 10 }}        // 毎回新しいオブジェクト
      onClick={() => doSomething()}  // 毎回新しい関数
    />
  );
}

チーム全体での設定

レビュー設定をチームで共有する方法:

  1. Skill の設定をリポジトリ内の .openclaw/ ディレクトリにエクスポート
  2. リポジトリにコミット
  3. チームメンバーが同じ設定でインストール — Skill がプロジェクトレベルの設定を自動的に読み込みます

応用編:レビューフォーカスの調整

自然言語の指示で PR Reviewer のレビュー方向を調整できます。

言語別のカスタマイズ

レビュー実行時に、Agent に重点を指示します:

  • Python:素の except: ブロック、型ヒントの欠如、Django ORM の N+1 クエリをチェック
  • JavaScript/TypeScript:残った console.log、async 呼び出しの await 漏れ、ハードコードされたシークレットをフラグ
  • Rust:本番コードの .unwrap() をフラグし、適切な Result ハンドリングを提案

ディレクトリ別のカスタマイズ

ディレクトリごとに異なるレビューレベルを設定:

  • コアビジネスロジックsrc/core/)— セキュリティ、バグ、パフォーマンスを網羅する完全なレビュー
  • テストファイルsrc/tests/)— 正しさのみの簡易チェック
  • ドキュメントdocs/)— 軽量なスタイルレビュー
  • スクリプトscripts/)— セキュリティとバグにフォーカス

カスタムルール

プロジェクト固有のアンチパターンをフラグさせます。例:

  • API ルートで Repository 層を経由せずに直接 DB アクセスしている
  • ページコンポーネントに Error Boundary がない
  • API エンドポイントにレートリミットがない

CI/CD との統合

すべての PR で自動レビューを実行するには、PR Reviewer を CI/CD パイプラインに統合します。

GitHub Actions

.github/workflows/ai-review.yml にワークフローファイルを作成:

yaml
name: AI PR Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  ai-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install OpenClaw and skills
        run: |
          npm install -g clawhub@latest
          clawhub install pr-reviewer

      - name: Run AI Review
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENCLAW_API_KEY: ${{ secrets.OPENCLAW_API_KEY }}
        run: |
          clawhub run pr-reviewer \
            --pr ${{ github.event.pull_request.number }} \
            --repo ${{ github.repository }} \
            --auto-comment

レビュートリガーの制御

AI レビューを特定の条件下でのみ実行し、コストを節約できます:

yaml
on:
  pull_request:
    types: [opened, synchronize]
    paths-ignore:
      - '*.md'
      - 'docs/**'
      - '.github/**'

ラベルが付与されたときのみレビューを実行する設定:

yaml
- name: Check for review label
  if: contains(github.event.pull_request.labels.*.name, 'ai-review')
  run: clawhub run pr-reviewer --pr ${{ github.event.pull_request.number }}

その他の CI プラットフォーム

Node.js をサポートする CI プラットフォームであれば同じ手順で対応できます。要点は:

  1. clawhubpr-reviewer Skill をインストール
  2. OPENCLAW_API_KEY を環境変数として設定
  3. PR 番号とリポジトリ情報を渡す
  4. CI Bot に Pull Request への書き込み権限を付与

実際の効果

このワークフローを導入したチームでは、通常以下のような改善が見られます:

  • PR 処理速度が 40% 向上 — AI が明らかな問題を先に処理し、人間のレビュー負荷を軽減
  • レビュー品質の安定化 — すべての PR が同じ基準で分析される
  • コミット履歴の規範化 — Conventional Commits によりチェンジログを自動生成
  • 本番環境のバグ減少 — 人間が見落としがちな問題を AI がキャッチ

トラブルシューティング

"GitHub CLI not found"

gh がインストール済みで PATH に含まれていることを確認:

bash
# macOS
brew install gh

# Linux
sudo apt install gh

# Windows
winget install GitHub.cli

PR 作成時に "Permission denied"

Token のスコープを確認:

bash
gh auth status

repo スコープが含まれていることを確認してください。必要に応じて再認証:

bash
gh auth login --scopes repo

PR Reviewer がコメントしない

Skill のインストールと設定を確認:

bash
clawhub inspect pr-reviewer

OpenClaw の AI プロバイダーが設定済みで、利用可能なクレジットがあることを確認してください。

よくある質問

はい。GitHub Skill は `gh` CLI をベースにしており、GitHub Enterprise Server と GitHub Enterprise Cloud に完全対応しています。`gh auth login --hostname github.yourcompany.com` でエンタープライズホストを設定するだけです。認証完了後、PR Reviewer を含むすべての GitHub 関連 Skill は github.com と同じように動作し、追加の設定は不要です。

GitHub Skill は GitHub 専用ですが、PR Reviewer と Conventional Commits は任意の Git プラットフォームで使えます。GitLab ユーザーは GitLab Skill をインストールし、PR 番号の代わりに Merge Request ID を渡します。Bitbucket も同様です。コアのレビューロジックはプラットフォーム非依存で、コメント投稿の統合レイヤーだけがプラットフォームごとに異なります。

AI レビューは人間のレビューの補完であり、代替ではありません。セキュリティ脆弱性、よくあるバグパターン、スタイル違反、パフォーマンスのアンチパターンなどの系統的チェックに優れ、疲れることなく、見落としもありません。ただし、高レベルのアーキテクチャ判断、ビジネスロジックの正しさ、全体的なアプローチの妥当性は評価できません。ベストプラクティスは、AI を最初のスキャンとして機械的なチェックを処理させ、人間のレビュアーが設計と意図に集中することです。

コストは使用する AI プロバイダーとレビューする diff のサイズによります。500行程度の典型的な PR レビューで、多くのプロバイダーで約 $0.01-0.05 です。1000行以上の大きな diff では $0.10-0.15 程度になることもあります。重要でないパスには `quick` レビュー深度を設定したり、パスフィルターで自動生成ファイル、vendor ディレクトリ、ドキュメントをスキップすることでコストを制御できます。

はい。PR Reviewer は柔軟なファイルパターン設定をサポートしています。glob パターンでファイルを除外(例:`**/*.generated.ts`、`vendor/**`)、特定のディレクトリに限定したレビュー、パスごとに異なるレビュー深度の設定が可能です。`.openclaw/pr-reviewer.yml` で設定します。多くのチームは自動生成ファイル、lock ファイル、vendor の依存関係を除外し、チームが実際に書いたコードにレビューを集中させています。

PR Reviewer は大きな diff を論理的なチャンクに分割して分析します。1000行を超える PR では、高リスクファイル(認証、データベースクエリ、API エンドポイント、セキュリティに関わるロジック)を優先的に最大深度でレビューします。テストや設定変更には軽量なレビューを適用します。行数の閾値を設定して、閾値を超えた場合に PR を小さく分割するよう提案する警告を出すこともできます。

はい。JavaScript、TypeScript、Python、Go、Rust、Java、C#、Ruby、PHP など、主要なプログラミング言語すべてに対応しています。言語固有のルールが自動的に適用されます。例えば、Rust の `unwrap()` の誤用チェックや、JavaScript の非同期コードでの `await` 漏れチェックなどです。設定ファイルで言語ごとのカスタムルールも定義できます。ファイル拡張子から言語を検出し、手動設定なしで適切な分析パイプラインを適用します。

AI レビューと Linter は補完的な役割を果たし、うまく連携できます。Linter は確定的なルール(フォーマット、import 順序、未使用変数)を適用し、AI レビューは意味論的な問題(ロジックバグ、セキュリティパターン、パフォーマンス問題)をキャッチします。CI では、まず Linter でフォーマット問題を処理し、次に AI レビューで深い分析を行います。PR Reviewer は一般的な Linter ルールを認識しており、同じ問題に対する重複フィードバックを避けます。

OpenClaw はリポジトリのレビュー指標を経時的に追跡します。`clawhub stats pr-reviewer` を実行すると、カテゴリ別の検出問題数、マージ前に解決された数、コードベースの頻出パターンが確認できます。繰り返し発生する問題の特定に役立ちます。例えば、SQL インジェクション警告が頻繁に出る場合、チームトレーニングや ORM 抽象化の改善が必要なサインです。指標を JSON でエクスポートし、ダッシュボードやチームレポートツールに統合することも可能です。

はい。PR ラベル、ブランチ命名規則、変更ファイルのパスに基づいて異なるルールを適用するレビューテンプレートを定義できます。例えば、`hotfix/*` ブランチにはセキュリティ重視の最大深度レビュー、`docs/*` ブランチには軽量なスタイルチェックのみ、といった設定が可能です。`.openclaw/pr-reviewer.yml` の `templates` キーでテンプレートを定義すると、PR Reviewer が条件に基づいて自動的にマッチングします。重要な変更には徹底したレビューを、低リスクな更新は遅延なく処理できます。

関連ユースケース