GitHub OrganizationにClaude Codeでコードレビューする仕組みを導入~GitHub Actions x Amazon Bedrock版~

GitHub OrganizationにClaude Codeでコードレビューする仕組みを導入~GitHub Actions x Amazon Bedrock版~

Clock Icon2025.06.09

2025年5月に発表されたClaude Codeはエージェント型のコーディングツールです。

ClaudeのMax/Proプランを契約することで、ターミナル上からエージェントコーディングをシームレスに体験できます。

この Claude Code と同時に、 Claude Code SDK をラップしたサーバーサイドで動作する Claude Code GitHub Actions もベータ発表されました。

@claude とメンションしたり、プルリクエスト作成などのイベントをトリガーに自律的にコード作成・レビューします。

前者が開発者個人レベルのボトムアップなAIコーディングとすれば、後者は組織レベルのトップダウンなAIコーディングです。

本記事では、後者のClaude Codeのトップダウンな導入、より具体的には、プルリクエストに対してClaude Codeで自動的にコードレビューする方法をGitHub Organizationレベルで導入する手順を紹介します。

開発者はローカルの開発環境を変えることなく従来通りにプルリクエストを作成し、プルリクエスト作成・更新のイベントをトリガーに、Claude Codeでの自動的なコードレビューをGitHub Organizationレベルで導入できます。

Claudeのモデル呼び出しはサーバー(GitHub)側に集約し、Anthropic APIキーの代わりにAmazon Bedrock(AWS)にオフロードするため、AWSアカウントを1つ用意するだけですみます。

開発者全員に大胆な開発体験の変更を迫ることなく、コードレビューという重いタスクの負荷をAIの力を借りて組織レベルで軽減したいようなケースに向いています。

設定チェックリスト

設定が少し込み入っているため、チェックリスト的に、作成・設定するリソース一覧を列挙します。

  • AWS
    • OpenID Connectプロバイダー
      • GitHub Actions用 ※ 作成済みの場合、流用
    • IAMロール
      • Bedrock呼び出し用
    • Bedrock
      • 利用するClaudeのモデルの有効化
        • クロスリージョン推論するため、複数リージョンで有効化
  • GitHub
    • 組織単位
      • GitHub App
        • 以下のどちらかでOK
          • Claude Code GitHub Actions用のアプリの作成&インストール
          • Claude(3rdパーティー) のインストール
      • Secrets
        • GitHub App 用
          • CLAUDE_CODE_APP_ID
          • CLAUDE_CODE_APP_PRIVATE_KEY
        • AWS OIDC 用
          • CLAUDE_CODE_AWS_ROLE_TO_ASSUME
    • リポジトリ単位
      • GitHub Actionsワークフローファイルの作成
  • Anthropic
    • 無し

AWS設定

GitHub Actionsからはアクション aws-actions/configure-aws-credentials を利用して OpenID Connect(OIDC) でAmazon BedrockのClaudeモデルを呼び出します。

そのためのリソースを作成します。

GitHub Actions用OIDCプロバイダーの作成

以下のOIDCプロバイダーリソースを作成します

  • OIDCプロバイダー : token.actions.githubusercontent.com
  • オーディエンス : sts.amazonaws.com

参考

作成済みがある場合は、既存のものを流用し、 OIDCプロバイダーのArnを控えます

Bedrock 呼び出し用のIAMロールの作成

GitHub ActionsがOIDCでBedrock APIを呼び出すためのIAMロールを作成します。
そのためには、次のCloudFormationテンプレートを実行します。

IAMポリシーとして、BedrockのAPI全体を許可するAWSマネージドの AmazonBedrockFullAccess を利用しています。

2つのパラメーターがあります

  • GitHubOrg : リポジトリを制限するために、GitHub Organization名を指定
  • OIDCProviderArn : このロールを assume する principal を制限するために、先ほど作成した OIDCプロバイダーを指定
AWSTemplateFormatVersion: '2010-09-09'
Description: 'CloudFormation template for GitHub Actions with Amazon Bedrock access using OIDC authentication'

Parameters:
  GitHubOrg:
    Description: Name of GitHub organization/user (case sensitive)
    Type: String
    Default: YOUR-GITHUB-ORG
  OIDCProviderArn:
    Description: Arn for the GitHub OIDC Provider.
    Default: ""
    Type: String

Resources:
  GitHubBedrockRole:
    Type: AWS::IAM::Role
    Properties:
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonBedrockFullAccess
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Action: sts:AssumeRoleWithWebIdentity
            Principal:
              Federated: !Ref OIDCProviderArn
            Condition:
              StringEquals:
                token.actions.githubusercontent.com:aud: "sts.amazonaws.com"
              StringLike:
                token.actions.githubusercontent.com:sub: !Sub repo:${GitHubOrg}/*

Outputs:
  GitHubBedrockRole:
    Value: !GetAtt GitHubBedrockRole.Arn

Amazon Bedrock

Claude Code SDKBedrock の InvokeModelWithResponseStream API でクロスリージョン推論します。

クロスリージョン推論は、グルーピングされたリージョン内で、モデルが有効化されているかを気にすることなく各リージョンにルーティングします。

例えば、オレゴン(us-west-2) をメインリージョンとして Claude Sonnet 4 モデルを利用したい場合、推論プロファイル名は US Claude Sonnet 4 となり、以下の3リージョンで Claude Sonnet 4 を有効化する必要があります。

  • US East (Virginia) us-east-1,
  • US East (Ohio) us-east-2,
  • US West (Oregon) us-west-2

東京(ap-northeast-1)をメインリージョンとする場合、APAC Claude Sonnet 4 という推論プロファイルが利用され、名前の通り、日本国内に限らず、

  • 韓国 : ap-northeast-2
  • シンガポール : ap-southeast-1
  • シドニー : ap-southeast-2

など、APAC全域にルーティングされます。データを日本国内に閉じたい場合はご注意ください。

参考

https://dev.classmethod.jp/articles/amazon-bedrock-cross-region-inference-support/

https://dev.classmethod.jp/articles/understanding-amazon-bedrock-cross-region-inference/

GitHub : Organization設定

次にレビューの仕組みを導入するGitHub Organization側の設定です。

GitHub個人アカウントへの導入手順ではないこと、及び、リポジトリ側の設定は後ほど設定する点にご留意ください。

GitHub Appsのインストール

GitHub Organizationに対してGitHub Appsのインストールは2通りあります。

Claude

細かい権限を気にしたくない場合、Anthropicsが提供するサードパーティーのClaude を次のURLから設定画面に移動し、組織を指定してインストールしてください。

https://github.com/apps/claude

github-app-claude-install

インストール後は "Configure" の文字が表示されます。

GitHub Apps(Organization固有)の作成&インストール

細かい権限管理をしたい場合、Organization固有のGitHub Appsを作成しインストールします。

GitHub Appの作成

OrganizationのSettings画面で Developer settings → GitHub Appsとたどり、新しいGitHub Appを作成します。

Third-party AccessではなくDeveloper settingsのGitHub Appsであることに、ご注意ください。

  • GitHub App name : ユニークな名前を入力
  • Homepage URL : Organization、あるいは、リポジトリのURLを入力
  • Webhook : 「Active」のチェックを外す ※ デフォルトでは有効化されています
  • Permissions: Repository permissionsの以下を有効化
    • Contents: Read & Write
    • Issues: Read & Write
    • Pull requests: Read & Write
GitHub AppのGeneralタブの操作

GitHub AppのGeneralタブに移動し、「App ID」を控えます。

github-app-id

また、「Private keys」セクションの「Generate a private key」から秘密鍵を作成し、 .pemファイルをダウンロードします。

github-app-ssh-private-key

GitHub Appのインストール

GitHub Appの Install App タブに移動し、組織全体、あるいは、特定のリポジトリにインストールします。

github-app-claude-assistant-install

Secret の設定

GitHub OrganizationのSettings→ Secrets and variables → Actionsに移動します。

Secretsタブから、以下の3つのSecretを設定します。

  • CLAUDE_CODE_APP_ID : 作成&インストールしたGitHub AppのApp ID
  • CLAUDE_CODE_APP_PRIVATE_KEY : 「Generate a private key」から作成した秘密鍵(.pemファイル)の中身
  • CLAUDE_CODE_AWS_ROLE_TO_ASSUME : Bedrock 呼び出し用に作成したIAMロールのARN

フリープランの場合、プライベートリポジトリからこれらシークレットを参照できないため、Teamsプラン以上へのアップグレードを検討しましょう。

GitHub : リポジトリ設定

リポジトリにCI用のGitHub Actionsワークフローファイルを作成

最後に、プルリクエストの作成・更新時に、Claude Codeによるコードレビューが走るよう、以下のようなワークフローファイルを .github/workflows/claude-auto-review.yml に作成します。

ルート/src 以下のファイルを含んだプルリクエストで発火するようにしています。

コードレビューの観点は「Automatic PR Review」ステップの direct_prompt で指示してください。
このサンプルは、Claude Codeのサンプルを日本語に訳したものであり、日本語で指示することで、コードレビューも日本語で行われます。

name: Claude Auto Review

on:
  pull_request:
    types: [opened, synchronize]
    paths:
      - "src/**"
jobs:
  auto-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      id-token: write
    env:
      AWS_REGION: us-west-2
      ANTHROPIC_BEDROCK_BASE_URL: "https://bedrock-runtime.us-west-2.amazonaws.com"
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Configure AWS Credentials (OIDC)
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.CLAUDE_CODE_AWS_ROLE_TO_ASSUME }}
          aws-region: us-west-2

      - name: Generate GitHub App token
        id: app-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.CLAUDE_CODE_APP_ID }}
          private-key: ${{ secrets.CLAUDE_CODE_APP_PRIVATE_KEY }}

      - name: Automatic PR Review
        uses: anthropics/claude-code-action@beta
        with:
          model: "us.anthropic.claude-sonnet-4-20250514-v1:0"
          use_bedrock: "true"
          timeout_minutes: "60"
          direct_prompt: |
            このプルリクエストをレビューし、包括的なフィードバックを日本語で提供してください。

            以下の点に重点を置いてください。
            - コードの品質とベストプラクティス
            - 潜在的なバグや問題
            - パフォーマンスに関する考慮事項
            - セキュリティへの影響
            - テストカバレッジ
            - 必要に応じてドキュメントの更新

            具体的な改善提案を含む建設的なフィードバックを提供してください。
            インラインコメントを使用して、懸念事項を具体的に強調してください。

            # allowed_tools: "mcp__github__add_pull_request_review_comment"

プルリクエストを作成し、レビューの確認

新規ファイル src/factorial.py を作成し、プルリクエストを出してみましょう。

def factorial(n):
    if n <= 1:
        return 1

    result = 1

    for i in range(2, n + 1):
        result *= i

    return result

PRを作成すると、Claude Codeが動き出します(Claude Code is working...)

しばらくすると、網羅的なコードレビューを返してくれます

最終的には、コードの改善やテストファイルの作成などを提案されました。

このワークフローはレビューのみのため、ソース更新や改善PRの作成等は行いません。

Bedrock のAPIログを確認

Amazon BedrockのModel invocation loggingを有効にすると、実際のAPI呼び出しを簡単に確認できます。

このログから

  • GitHubの通信先リージョン : "region": "us-west-2"
  • モデル呼び出しのルーティング先リージョン : "inferenceRegion": "us-west-2"

などを確認できます。

{
    "schemaType": "ModelInvocationLog",
    ...
    "identity": {
        "arn": "arn:aws:sts::123456789012:assumed-role/itHubBedrockRole-k4hA03mczj7f/GitHubActions"
    },
    "region": "us-west-2",
    "requestId": "96e6c57a-6945-423e-9d69-382a9bdd4344",
    "operation": "InvokeModelWithResponseStream",
    "modelId": "arn:aws:bedrock:us-west-2:205912345678901274338614:inference-profile/us.anthropic.claude-3-5-haiku-20241022-v1:0",
    "input": {
        "inputContentType": "application/json",
        "inputBodyJson": {
            "max_tokens": 512,
            "messages": [
                {
                    "role": "user",
                    "content": "Files modified by user:\n      3 src/factorial.py\n      2 \n\n\nFiles modified by other users:\n      3 src/factorial.py\n      2 \n"
                }
            ],
            ...
            "anthropic_version": "bedrock-2023-05-31"
        },
        ...
    },
    ...
    "inferenceRegion": "us-west-2"
}

利用費

Claude Max/Pro の場合、月額利用費が固定されますが、本記事のようにClaudeのモデル呼び出しにAmazon Bedrockを利用する場合、従量課金です。

AWSコンソールのBiling and Cost ManagementのBillsから "Claude Sonnet 4 (Amazon Bedrock Edition) (sold by Anthropic, PBC)" というような明細を確認できます。

より具体的には、以下の通りです

  • AWS Marketplace software usage|us-west-2|Million Cache Read Input Tokens
  • AWS Marketplace software usage|us-west-2|Million Cache Write Input Tokens
  • AWS Marketplace software usage|us-west-2|Million Input Tokens
  • AWS Marketplace software usage|us-west-2|Million Response Tokens

レポジトリやソースコードのツリーを限定しながら小さく導入し、コスト感を確認しながら、継続利用の判断、適用範囲の拡大、トークンの減らし方などを検討するとよいでしょう。

最後に

GitHub Organizationレベルでプルリクエストに対してClaude Codeで自動的にコードレビューする方法を紹介しました。
このClaude Code GitHub Actionsはまだベータのため、今後大きな変更が入る可能性が高いです。

Claude Codeは非常に高機能、高品質であり、@claude メンションで仕様をもとにコード作成タスクを依頼するといったよりメインストリームな使い方は、Anthropic社が公開している次の ”How Anthropic teams use Claude Code" を参考にするとよいでしょう。

https://www-cdn.anthropic.com/58284b19e702b49db9302d5b6f135ad8871e7658.pdf

AIコーディングはいろいろな手法が日々開発されている状態であり、組織全体に導入するのは大変です。
一方で、コーディングと同様に負荷の高いコードレビューについては、効果を感じやすい導入方法が確立されつつあります。

将来のAIコーディング本格導入を見据えた第一歩として、Claude Codeを活用したコードレビューはお手頃です。

開発者全体のメンタルシフト無しに組織に導入でき、一度Claude Codeを導入してしまえば、前のめりな人に発展的な機能を試してもらうのも容易です。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.