土曜日, 6月 7, 2025
- Advertisment -
ホームニューステックニュースClaude Code / Claude Code Action を Google Cloud Vertex AI 経由で使う

Claude Code / Claude Code Action を Google Cloud Vertex AI 経由で使う


Zenn は Google Cloud をメインで利用しています。Claude Code を Vertex AI 経由で利用することで、Google Cloud の認証・課金体系を活用できそうだと思いました。今回は、ローカルで利用する claude コマンドと、GitHub リポジトリで動く Claude Code Action を Vertex AI で使ってみます。

対象

この記事は以下の方を対象としています:

  • macOSのマシンを利用している
  • Google Cloud プロジェクトを持っている
  • ローカル環境で Claude Code を試したい
  • GitHub Actions で Claude Code Action を使いたい
  • 課金を Anthropic ではなく Google Cloud に一本化したい

なにをするか

Claude Code から Vertex AI で Claude Sonnet 4 を呼び出して使えるようにします。ベースとなる手順はこちら:

https://docs.anthropic.com/ja/docs/claude-code/bedrock-vertex-proxies

https://docs.anthropic.com/ja/docs/claude-code/github-actions

ローカルの claude コマンドも、Claude Code Action も、Claude Code のスクリプトがLLMを使ってコーディングを行うということに変わりありません。設定作業が分岐するのは、「どういう経路でLLMを使うか」という部分です。公式ドキュメントによると、2つの方法があります。

  1. Anthropic APIキーを使って呼び出す(Anthropic に課金する必要あり)
  2. Bedrock または Vertex AI 経由で呼び出す(AWS または Google Cloud プロジェクトで課金される)

ここでは 2の Vertex AI 経由で呼び出します。よって、Anthropic のAPIキーを発行したり、ログインしたりといった作業は発生しません。最初、ここがわからず戸惑いました(2の場合でもAnthropicアカウントは必要なのか、とか)。では進めていきます。

1. ローカルから Vertex AI 経由で Claude Code を使う

ローカル環境で Claude Code を Vertex AI 経由で利用する手順を説明します。

Claude Code のインストール

まず、Claude Code をインストールします。npm 経由でインストールできます。ここは変わりません。npm install -gは少し抵抗がありましたが、素直に従うのがよさそうです。

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

設定ファイルでの環境変数の設定

Vertex AI 経由で利用するための環境変数を設定ファイルに追記します。おそらくファイルは存在しないと思うので、作成してから追記します。

~/.claude/settings.json

{
  "env": {
    "CLAUDE_CODE_USE_VERTEX": 1,
    "CLOUD_ML_REGION": "us-east5",
    "ANTHROPIC_VERTEX_PROJECT_ID": "your-project-id"
  }
}

公式ドキュメントによると Vertex AIでのClaudeモデルは us-east5 リージョンでのみ使えるようです。東京リージョンは検証していないのでわからないですが、素直にus-east5を使うようにします。

https://docs.anthropic.com/ja/docs/claude-code/bedrock-vertex-proxies#google-vertex-aiへの接続

↓こちらの記述がありました。

これで claude コマンドの設定は完了です。次に、Google Cloudプロジェクトを設定します。

Google Cloud プロジェクトへアクセスできるようにする

APIの有効化

Claude Code(ローカル) では以下のAPIを利用するので、あらかじめ有効にします。

Claude Sonnet 4 の有効化

Claude Opus 4 はややオーバースペックを感じ、Claude Sonnet 4 を使うことにしました。Model Garden > Anthropic > Claude Sonnet4 と選んで有効にします。

認証の準備

ローカル環境では Application Default Credentials を設定します。

gcloud auth application-default login

Claude Code の起動

ここまで準備できたら、任意のGitHubリポジトリのローカルディレクトリでコマンドを実行します。

claude
> このプロジェクトの構成を500字程度でまとめて

正常に設定されていれば、Vertex AI 経由で Claude Sonnet4 にアクセスでき、応答が返ります。これで、ローカルで Claude Code を利用する準備ができました。快適なAIコーディングライフを楽しみましょう。

2. GitHub で使う

ローカルでのコーディングアシスタントとしても優秀な Claude Code ですが、GitHub Actions として呼び出すこともできます。以下は、GitHub Actions として Claude Code Action を利用する手順です。

大まかな作戦

さきほど、ローカルから Claude Code を使うときにVertex AI経由となるよう環境変数を設定して認証を行いました。やりたいことは Claude Code Action の場合も同じです。ただ、ローカルとの一番の違いは認証の部分ですね。Claude Code Action に限らず、GitHub Actions からなにか Google Cloud プロジェクトを操作する場合は、サービスアカウントを作成し、アクセスキーを埋め込むのが一昔前の常套手段でした。

しかし、アクセスキーを扱うのはセキュリティ上好ましくないよね、ということでAWSでもGoogle Cloudでも一時認証トークンを利用するのが王道です。よって、ここではGoogle Cloud の Workload Identity というサービスを使って、一時的にサービスアカウントの権限を借用するという流れになります。この部分についは以下の記事を参考にさせていただきました。

https://zenn.dev/cloud_ace/articles/7fe428ac4f25c8

作業は次の順番で行います:

a. カスタムプライベート GitHub Apps を作成する
b. Workload Identity の IDプールを作成する
c. Vertex AI を呼び出すためのサービスアカウントを作成する
d. Workload Identity でサービスアカウントの権限借用を許可
e. Claude Code Action のための GitHub Actions(YAMLファイル)を作成する

手順が多くてウッとなりますが、やってみるとそれほど大変ではありません。公式ドキュメントも見ながら進めましょう。

https://docs.anthropic.com/ja/docs/claude-code/github-actions#aws-bedrockおよびgoogle-vertex-aiでの使用

a. カスタム GitHub Apps を作成する

Claude Code Action に、リポジトリを安全に操作してもらうためです。限定されたリポジトリ操作のパーミッションを設定することが主目的で、Webhookなどの機能は使いません。

https://docs.github.com/ja/apps/creating-github-apps/registering-a-github-app/registering-a-github-app

GitHub の Settings > Developer settings > GitHub Apps に移動

個人のリポジトリにインストールしたい場合は個人設定から、Organizationのリポジトリにインストールしたい場合はOrganizationの設定から作成します。今回は、Zennの本体に導入したかったので、Organization側から作成しています。

New GitHub Appボタンをクリックします。

GitHub Appの情報を入力

  • GitHub App name
    • Claude 4 Sonnet(任意の名前)
  • Homepage URL
    • リポジトリないしアプリの使い方のドキュメントなどのURL(任意)
  • Webhook
    • チェックを外す(使用しない)
  • Repository permissions

    • Contents: Read & write
    • Pull requests: Read & write
    • Workflows: Read & write
  • Where can this GitHub App be installed?

Create GitHub App をクリックして作成

作成後、generate private keyをクリックしてpemファイルを作成してください。GitHub Actionsのシークレットに登録します。また、App IDも使います。

作成したGitHub Appをインストール

左サイドバーのInstall Appからアプリをインストールしてください。このとき、リポジトリは Claude Code Action を使いたい対象のリポジトリのみ選択することをおすすめします。

シークレットを追加

作成したアプリを Claude Code Action が使えるように、GitHub Actions のシークレットに追加します。リポジトリ の Settings > Secrets and variables > Actionsを選びます。

  • APP_ID: さきほどメモした App ID を指定します
  • APP_PRIVATE_KEY: ダウンロードしたpemファイルをテキストでコピペして指定します

これで GitHub Apps の準備は完了です。

b. Workload Identity の IDプールを作成する

ここから Google Cloud に移ります。利用するプロジェクトのコンソールで、Workload Identity を開いてください。

プールを作成 し、情報を入力します。

IDプールを作成する

  • 名前
    • Zenn Vertex AI Claude Connector(任意)
  • プールID
    • zenn-github-app-vertex-ai(任意)

プールにプロバイダを追加する

  • プロバイダの選択
  • プロバイダ名
    • GitHub Actions(任意)
  • 発行元
    • https://token.actions.githubusercontent.com
  • オーディエンス
    • デフォルトのオーディエンス
  • 属性のマッピング
    • google.subjectassertion.repository
  • 属性条件
    • assertion.repository == "your-organization/your-repository"

プロバイダ情報を保存します。これで、GitHub App が Google Cloud を操作するための連携ができるようになりました。じゃあID連携したときにどの権限を貸し出すの?という設定が次です。

c. サービスアカウントを作成する

最低限の権限をもつサービスアカウントを作成しましょう。コンソールで、IAMの画面 > サービスアカウント と遷移してください。サービスアカウントを作成とします。

  • 名前
    • Zenn Vertex AI Claude Connector(任意)
  • ID
    • zenn-github-app-vertex-ai(任意)

Permissions

Vertex AIユーザーのみ割り当てます。

d. Workload Identity でサービスアカウントの権限借用を許可

ふたたび Workload Identity の画面で、こんどは作成したIDプールを開きます。+アクセスを許可ボタンを押して、さきほど作成したサービスアカウントを指定します。

これで、GitHub Actions から一時的に Zenn Vertex AI Claude Connector のサービスアカウント権限で Vertex AI を呼び出す準備が整いました。

シークレットを追加

あとはGitHub ActionsがIDプールに対して借用を要求できるように、GitHub Actionsのシークレットを追加します。リポジトリ の Settings > Secrets and variables > Actionsを選びます。

  • GCP_SERVICE_ACCOUNT

    • zenn-github-app-vertex-ai@.iam.gserviceaccount.com
    • 作成したサービスアカウントの「メール」がそれです(ややこしい)
  • GCP_WORKLOAD_IDENTITY_PROVIDER

    • projects//locations/global/workloadIdentityPools//providers/
    • 例: projects/9999999999/locations/global/workloadIdentityPools/zenn-github-app-vertex-ai/providers/github-actions
    • Google Cloud 側でコピペして使える値はなかったですが、プロバイダの編集からコピーできる値が一番それっぽいです。

e. GitHub Actions(YAMLファイル)を作成する

シークレットを整理しておきます。公式ドキュメントのとおり、ここまでで合計4つのGitHub Actionsシークレットが追加されているはずです。

Secret 名 説明
APP_ID カスタムGitHubアプリのID
APP_PRIVATE_KEY カスタムGitHubアプリのpem
GCP_SERVICE_ACCOUNT Vertex AIにアクセスするためのサービスアカウントのメールアドレスです
GCP_WORKLOAD_IDENTITY_PROVIDER Workload Identity プロバイダーの識別テキスト

設定漏れがある場合は、GitHub リポジトリの Settings > Secrets and variables > Actions から設定してください。

GitHub Actions ワークフローの作成

.github/workflows/claude-code.yml ファイルを作成します。

.github/workflows/claude-code.yml

name: Claude Code Action

permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: write

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]

jobs:
  claude-pr:
    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'))
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

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

      - name: Authenticate to Google Cloud
        id: auth
        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
        with:
          model: "claude-sonnet-4@20250514"
          use_vertex: "true"
          github_token: ${{ steps.app-token.outputs.token }}
          trigger_phrase: "@claude"
          timeout_minutes: "60"
        env:
          ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
          CLOUD_ML_REGION: us-east5
          BASE_BRANCH: develop

uses: anthropics/claude-code-action@beta部分に注目してほしいです。

  • model: Claude Sonnet4 を指定しています
  • use_vertex: trueとすることでVertex AI経由での利用となります
  • trigger_phrase: ISSUEなど、特定のコメントに反応して Claude Code Action を起動させます。ここでは @claude に反応するようにしました
  • CLOUD_ML_REGION: 例によってus-east5を指定しておきます
  • BASE_BRANCH: Claude Code Action がプルリクエストを作成するボタンを用意してくれるのですが、このときのベースブランチを指定できます

CLAUDE.md をつくる

任意で Claude Code Action へのガイドを指定できるファイルです。リポジトリの設定に合わせて育てていってもらえれば、と思いますが、日本語で応答するよう以下は指定しておくとよさそうでした:

# CLAUDE.md

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

## 原則

- ユーザーへの応答は日本語で行ってください

動作確認

適当なISSUEを用意し、@claudeに指示してみましょう。

うまくいけばこのように反応し、ブランチを作って実装してくれます。プルリクエストのコメントにも反応してくれるそうです。いろいろ試してきたいですね。

料金について

Vertex AI 経由での利用では、Vertex AI の料金体系が適用されます。Claude モデルの利用料金は以下のページで確認できます:

https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja#claude-models

一般的に、Anthropic API の直接利用と比較して料金体系が異なる場合があるため、利用前に料金を確認することをおすすめします。料金表を見る限りですが、やっぱり Claude Opus 4 はちょっと高く感じます。

おわりに

Claude Code / Claude Code Action を Google Cloud Vertex AI 経由で利用する方法を説明しました。Vertex AI 経由での利用により、Google Cloud の既存インフラとの統合が容易になり、企業での導入障壁を下げられそうです。

Zennチームでは Devin もヘビーユース していますが、Devinとの違いとして、実装完了までの時間は Claude Code Action のほうが早いです。もっとも、実装精度や、実務に耐えうるかなどの検証はまだまだこれからです。強力なコーディングアシスタントと一緒に、引き続き楽しんで行きたいと思います。

参考リンク



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -