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 を呼び出して使えるようにします。ベースとなる手順はこちら:
ローカルの claude
コマンドも、Claude Code Action も、Claude Code のスクリプトがLLMを使ってコーディングを行うということに変わりありません。設定作業が分岐するのは、「どういう経路でLLMを使うか」という部分です。公式ドキュメントによると、2つの方法があります。
- Anthropic APIキーを使って呼び出す(Anthropic に課金する必要あり)
- 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
を使うようにします。
↓こちらの記述がありました。
これで 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 というサービスを使って、一時的にサービスアカウントの権限を借用するという流れになります。この部分についは以下の記事を参考にさせていただきました。
作業は次の順番で行います:
a. カスタムプライベート GitHub Apps を作成する
b. Workload Identity の IDプールを作成する
c. Vertex AI を呼び出すためのサービスアカウントを作成する
d. Workload Identity でサービスアカウントの権限借用を許可
e. Claude Code Action のための GitHub Actions(YAMLファイル)を作成する
手順が多くてウッとなりますが、やってみるとそれほど大変ではありません。公式ドキュメントも見ながら進めましょう。
a. カスタム GitHub Apps を作成する
Claude Code Action に、リポジトリを安全に操作してもらうためです。限定されたリポジトリ操作のパーミッションを設定することが主目的で、Webhookなどの機能は使いません。
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.subject
–assertion.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 モデルの利用料金は以下のページで確認できます:
一般的に、Anthropic API の直接利用と比較して料金体系が異なる場合があるため、利用前に料金を確認することをおすすめします。料金表を見る限りですが、やっぱり Claude Opus 4 はちょっと高く感じます。
おわりに
Claude Code / Claude Code Action を Google Cloud Vertex AI 経由で利用する方法を説明しました。Vertex AI 経由での利用により、Google Cloud の既存インフラとの統合が容易になり、企業での導入障壁を下げられそうです。
Zennチームでは Devin もヘビーユース していますが、Devinとの違いとして、実装完了までの時間は Claude Code Action のほうが早いです。もっとも、実装精度や、実務に耐えうるかなどの検証はまだまだこれからです。強力なコーディングアシスタントと一緒に、引き続き楽しんで行きたいと思います。
参考リンク
Views: 0