10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vertex AIでClaude CodeとClaude Code Actionを実行してセキュアなAI駆動開発環境をチームに導入しよう

Last updated at Posted at 2025-06-07

話題のClaude CodeClaude Code Actionを利用するには、Claudeモデルを呼び出すためのAnthropic APIが必要です。

組織やチームで利用するためには個人アカウントで払い出したAPIキーは管理上よろしくないですし、かといってClaudeのTeamプランやEnterpriseプランを導入するのは難しい場合があるかもしれません。

ですが、AWSのAmazon BedrockやGoogle CloudのVertex AIをモデルプロバイダーとすることで、クラウド基盤をそのまま利用してセキュアにClaude CodeおよびClaude Code Actionを利用することが可能になります。

本記事ではVertex AIを使ってチームで運用しやすくするための手順を考案してみます。

詳細なユースケースは割愛します。

Claude Codeとは

KAGのみのるんさん(@minorun365)のスライドがとても分かりやすいです。

Claude CodeをVertex AIで使えるようにする

予め自分がオーナー権限を持つGoogle Cloudプロジェクトが用意されているものとします。
Claude Code運用用のプロジェクトを一つ用意したほうが管理しやすいでしょう。
Model Gardenで利用したいClaudeモデルを有効化します。

Claudeの呼び出しコストはまあまあお値段が張るので、予算アラートは必ず設定しておきましょう。

IAMを追加してVertex AIの権限を与える

利用したいユーザーにVertex AIの権限を与えます。
Google Cloudプロジェクトの管理者を決めて運用したほうがいいと思います。

Cloud Shellで下記のコマンドを実行します。

MEMBER_EMAIL=<ユーザーのメールアドレス>
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=user:$MEMBER_EMAIL \
  --role=roles/aiplatform.user

権限があたったら利用者自身にClaude Codeをセットアップしてもらいます。

利用者がローカルでセットアップ

対象アドレスでのGoogle Cloudへのログイン。

gcloud auth application-default login

Claude Codeのインストール。

npm install -g @anthropic-ai/claude-code

環境変数の設定。

.zshrc
# Claude Code
export ANTHROPIC_MODEL='claude-opus-4@20250514'
export ANTHROPIC_SMALL_FAST_MODEL='claude-sonnet-4@20250514'
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION='us-east5'
export ANTHROPIC_VERTEX_PROJECT_ID='<利用するGoogle CloudプロジェクトID>'      

リポジトリの.claude/settings.jsonに記述して、プロジェクト内で設定を共有することもできます。
個人の設定は ~/.claude/settings.json

.claude/settings.json
{
  "env": {
    "ANTHROPIC_MODEL": "claude-opus-4@20250514",
    "ANTHROPIC_SMALL_FAST_MODEL": "claude-sonnet-4@20250514",
    "CLAUDE_CODE_USE_VERTEX": 1,
    "CLOUD_ML_REGION": "us-east5",
    "ANTHROPIC_VERTEX_PROJECT_ID": "<利用するGoogle CloudプロジェクトID>"
  }
}

Claude Codeが起動したらOKです。

claude

ターミナル以外にもVSCode拡張機能から使うこともできます。

image.png

また、認証をそのまま使ってClineを利用することもできます。

image.png

Clineならコストパフォーマンスに優れたGeminiも利用できます。

image.png

Claude Code ActionをVertex AIで使えるようにする

個人のローカル環境で動かしてAI駆動開発を実現できるのがClaude Codeでしたが、これをGitHub Actionsベースで動かせるClaude Code Actionがあります。

GitHubという開発プラットフォームを利用して、Claudeをまるでメンバーの1人のように参加させることができるのでよりチームでのAI駆動開発に適しています。

この分野はOpenAIのCodexやGoogleのJulesもありますが、GitHubとモデルプロバイダーで完結するのがClaude Code Actionの良いところです。

以下が設定手順例となります。

Google Cloudの設定

Workload Identityプールを作成する

GitHub ActionsとGoogle Cloudプロジェクトをフェデレーションしてアクセス権を付与するためにWorkload Identity連携を設定します。

  • プール名(任意):Claude Code Action Connector
  • プールID(任意):claude-code-action-connector
    • プロバイダの選択:OpenID Connect(OIDC)
    • プロバイダ名(任意):GitHub Actions
    • 発行元(URL):https://token.actions.githubusercontent.com
    • オーディエンス:デフォルトのオーディエンス
    • 属性のマッピング
      • attribute.repository:assertion.repository
      • google.repository:assertion.repository
    • 属性条件
      • assertion.repository.startsWith('<組織のGitHub Organization名>/')

ここでは不正利用を防止するため組織のGitHub Organization名以外のリポジトリからアクセスできない設定をしています。

サービスアカウントを作成し、プールに接続する

GitHub Actionsが使うためのサービスアカウントを作成します。
開発プロジェクトごとに払い出す想定をしています。

具体的な作業としては、サービスアカウントを作成し以下の権限を付与。

  • Vertex AI ユーザー
  • Workload Identity ユーザー
  • サービス アカウント トークン作成者
    プールにサービスアカウントのアクセスを許可し、subjectにリポジトリのowner/repoをマッピングする作業となりますが下記のコマンドで実行できます。
POOL_ID="<プールID>"
GITHUB_OWNER="<オーナー名(hoge_owner/hoge_repoならhoge_owner)>"
REPO_NAME="<リポジトリ名(hoge_owner/hoge_repoならhoge_repo)>"
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")
PROJECT_ID=$(gcloud config get-value project)

# サービスアカウントの作成
gcloud iam service-accounts create $REPO_NAME \
  --display-name $REPO_NAME
SA_EMAIL="${REPO_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

# 権限を付与
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:${SA_EMAIL}" \
  --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:${SA_EMAIL}" \
  --role="roles/iam.workloadIdentityUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:${SA_EMAIL}" \
  --role="roles/iam.serviceAccountTokenCreator"

# サービスアカウントをプールに接続
gcloud iam service-accounts add-iam-policy-binding "${SA_EMAIL}" \
  --role="roles/iam.workloadIdentityUser" \
  --member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_ID}/subject/${GITHUB_OWNER}/${REPO_NAME}"
 
echo $SA_EMAIL

もしモノレポ構成ではなくポリレポ構成をとっていて複数のリポジトリでサービスアカウントを使いまわしたい場合は、下記のコマンドをリポジトリ数ぶん書き換えて実行します。

REPO_NAME="<他のリポジトリ>"

gcloud iam service-accounts add-iam-policy-binding "${SA_EMAIL}" \
  --role="roles/iam.workloadIdentityUser" \
  --member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${POOL_ID}/subject/${GITHUB_OWNER}/${REPO_NAME}"

# 確認
gcloud iam service-accounts get-iam-policy $SA_EMAIL

GitHubの設定

GitHub Appをインストール

Claude Code Actionsを動作させるためのGitHub Appをインストールします。
公式はこちらですが、自前で用意することもできます。

リポジトリシークレットの設定

  • GCP_SERVICE_ACCOUNT:前段で作成したサービスアカウントのメールアドレス
  • GCP_WORKLOAD_IDENTITY_PROVIDERprojects/<your-project-number>/locations/global/workloadIdentityPools/<your-identity-pool-id>/providers/<workload-identity-provider-id>
    ※前段で作成したWorkload Identityプールのコンソール画面から取得
  • GCP_PROJECT_ID:Google CloudプロジェクトID

ワークフローを追加

GitHub Actionsワークフローファイルをリポジトリに設置。

.github/workflows/claude_code_vertex.yaml
name: Claude Code with Vertex AI

on:
  issues:
    types: [opened, edited]
  issue_comment:
    types: [created, edited]
  pull_request_review:
    types: [submitted, edited]
  pull_request_review_comment:
    types: [created, edited]

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

jobs:
  claude:
    if: |
      (github.event_name == 'issue_comment' &&
       contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' &&
       contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'issues' &&
       contains(github.event.issue.body, '@claude')) ||
      (github.event_name == 'pull_request_review' &&
       contains(github.event.review.body, '@claude'))
    runs-on: ubuntu-latest
    timeout-minutes: 30
    
    permissions:
      id-token: write
      contents: write
      issues: write
      pull-requests: write
    
    steps:     
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Authenticate to Google Cloud
        uses: google-github-actions/auth@v2
        with:
          workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
          service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
      
      - uses: anthropics/claude-code-action@beta
        env:
          ANTHROPIC_VERTEX_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
          CLOUD_ML_REGION: us-east5     
          CLAUDE_CODE_PRIMARY_MODEL: claude-opus-4-20250514
          CLAUDE_CODE_ASSISTANT_MODEL: claude-sonnet-4-20250514
          ANTHROPIC_VERTEX_ENABLE_PROMPT_CACHING: true
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          use_vertex: "true"
          max_turns: 30
          timeout_minutes: 20
          trigger_phrase: "@claude"
          allowed_tools: "Bash"

これで、イシューやプルリク上で @claude とメンションし指示することで、GitHub Actionsが動作し、イシューやプルリク、コードの内容を読み取り、Claudeによるタスク実行やレビュー、提案が受けられるようになります!

ワークフローはサンプルなので用途でアレンジしてください。
ユーザーのメンショントリガーだけではなく、他のトリガーで動作を行わせることも可能です。

また、プロジェクトルートにClaudeにコンテキストを提供するためのCLAUDE.mdを追加します。

CLAUDE.md
# CLAUDE.md
このファイルは、このリポジトリでコードを扱う際にClaude Code (claude.ai/code) に対してガイダンスを提供します。

## 原則
- ユーザーへの応答は必ず日本語で行うこと

こちらにプロジェクトのコーディングルールや、仕様などを記述することでより精度の高いアウトプットが期待できます。

ユーザー個別の設定は~/.claude/CLAUDE.mdこちらでできます。


これで、Claude Codeを関単にチームに導入する準備が整いました!
レッツAI駆動開発🚀

後日談

70人ほどの部署で使ったら大人気となり、1週間であっという間に利用料が$2000を超えました…。
今はなるべくClaude Sonnet 4を使ってmことで値段を抑えていますが参考まで。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?