GitHub OrganizationにClaude Codeでコードレビューする仕組みを導入~GitHub Actions x Amazon Bedrock版~
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のモデルの有効化
- クロスリージョン推論するため、複数リージョンで有効化
- 利用するClaudeのモデルの有効化
- OpenID Connectプロバイダー
- GitHub
- 組織単位
- GitHub App
- 以下のどちらかでOK
- Claude Code GitHub Actions用のアプリの作成&インストール
- Claude(3rdパーティー) のインストール
- 以下のどちらかでOK
- Secrets
- GitHub App 用
- CLAUDE_CODE_APP_ID
- CLAUDE_CODE_APP_PRIVATE_KEY
- AWS OIDC 用
- CLAUDE_CODE_AWS_ROLE_TO_ASSUME
- GitHub App 用
- GitHub App
- リポジトリ単位
- 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
参考
- https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services
- https://github.com/aws-actions/configure-aws-credentials
作成済みがある場合は、既存のものを流用し、 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 SDK は Bedrock の 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全域にルーティングされます。データを日本国内に閉じたい場合はご注意ください。
参考
GitHub : Organization設定
次にレビューの仕組みを導入するGitHub Organization側の設定です。
GitHub個人アカウントへの導入手順ではないこと、及び、リポジトリ側の設定は後ほど設定する点にご留意ください。
GitHub Appsのインストール
GitHub Organizationに対してGitHub Appsのインストールは2通りあります。
Claude
細かい権限を気にしたくない場合、Anthropicsが提供するサードパーティーのClaude を次のURLから設定画面に移動し、組織を指定してインストールしてください。
インストール後は "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」を控えます。
また、「Private keys」セクションの「Generate a private key」から秘密鍵を作成し、 .pem
ファイルをダウンロードします。
GitHub Appのインストール
GitHub Appの Install App タブに移動し、組織全体、あるいは、特定のリポジトリにインストールします。
Secret の設定
GitHub OrganizationのSettings→ Secrets and variables → Actionsに移動します。
Secretsタブから、以下の3つのSecretを設定します。
CLAUDE_CODE_APP_ID
: 作成&インストールしたGitHub AppのApp IDCLAUDE_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" を参考にするとよいでしょう。
AIコーディングはいろいろな手法が日々開発されている状態であり、組織全体に導入するのは大変です。
一方で、コーディングと同様に負荷の高いコードレビューについては、効果を感じやすい導入方法が確立されつつあります。
将来のAIコーディング本格導入を見据えた第一歩として、Claude Codeを活用したコードレビューはお手頃です。
開発者全体のメンタルシフト無しに組織に導入でき、一度Claude Codeを導入してしまえば、前のめりな人に発展的な機能を試してもらうのも容易です。