金曜日, 5月 30, 2025
ホームニューステックニュースCoding Agentをこれから導入するならClaude Code Actionが個人的におすすめ

Coding Agentをこれから導入するならClaude Code Actionが個人的におすすめ


はじめに

こんにちは。イオンネクストで技術戦略をしています。@arairyusです。
Code with Claudeが先週ありましたね。Claude Code Action(Vertex AI)を早速触ってみました。
公式ドキュメント通りだとセットアップできない箇所があったので情報シェアと触ってみた感想です。

GitHub Copilot Coding AgentやCopilot Code Review、Devinとの使用感も比較してみました。
エンタープライズでのAI推進をされている方の一助になれば幸いです。

なぜGoogle Cloud?

エンタープライズにおいて新規ツールの導入がめんどくさく大変で、既存のクラウド費用に混ぜ込めるのがかなりでかいです。AIツールが続々とリリース・アップデートされている時代で素早く「使える状態に持っていく」のは重要です。
また、既存のクラウドのアカウント管理に乗っかれるのも導入する側として非常に楽です。
そのような理由で、Cline × Vertex AIがイオンネクスト標準の開発環境になっています。

(VS Code LM APIでClaude Sonnet 4が使えているので一旦様子見中です)

AWSかGoogle Cloudを使っている企業の方は試しでClaude Code Actionを導入できるのありがたいですね。

個人的にですが、エンタープライズのAI推進を担当している方におすすめするならGoogle Cloudです。
GeminiとClaude使えるだけでも十分でかいですが、NotebookLM Enterpriseなど世の中で評判の良いAIツールをエンタープライズ向けに導入しやすい印象です。

Claude Code Action

GitHub Actions
Claude Codeを GitHub ワークフローに統合して、自動コードレビュー、PR管理、課題の分類を行います。

Claude Code GitHub Actionsは、GitHubワークフローにAIを活用した自動化をもたらします。PRや課題で簡単に@claudeとメンションするだけで、Claudeはコードを分析し、プルリクエストを作成し、機能を実装し、バグを修正します – すべてプロジェクトの標準に従いながら行います。
https://docs.anthropic.com/ja/docs/claude-code/github-actions

正式名称がClaude Code GitHub ActionsなのかClaude Code Actionなのかよく分かりませんが、Claude CodeがGitHub上で動く機能です。(Devin的なものとイメージいただければOKです)

Claude Code同様にBedrockやVertex AIをAI Providerとして利用できます。

Vertex AI向けClaude Code Action設定手順

基本的に公式ドキュメント通りに進めればOKです。

Workload Identity Federationの設定はこんな感じでterraform module使えばいけます。

コード例
locals {
  prefix    = "hoge"
  repo_list = [
    "hoge"
  ]
}

module "sa" {
  source  = "terraform-google-modules/service-accounts/google//modules/simple-sa"
  version = "~> 4.5"

  project_id = local.project_id
  name       = "${local.prefix}-claude-code"
  project_roles = [
    "roles/aiplatform.user"
  ]
}

module "claude_code_wif" {
  source  = "terraform-google-modules/github-actions-runners/google//modules/gh-oidc"
  version = "~> 5.0"

  project_id          = local.project_id
  pool_id             = "${local.project_id}-claude-pool"
  provider_id         = "${local.project_id}-claude"
  attribute_condition = "assertion.repository_owner == ''"
  sa_mapping = {
    for repo in local.repo_list : repo => {
      sa_name   = module.sa.id
      attribute = "attribute.repository//${repo}"
    }
  }
}

公式ドキュメントのサンプルYamlファイルの修正箇所です。

./.github/actions/claude-pr-actionってどれ?となるのですが、anthropics/claude-code-actionに変更すればOKです。

モデルをSonnet 4に変えてます。anthropic_modelではなくmodelに変更しています。

DEPRECATED: Use model instead. Kept for backward compatibility.

VERTEX_REGION_CLAUDE_3_7_SONNETは公式ドキュメントに見当たらなかったので、削除してますが問題なく動いてます。

-name: Claude PR Action
+name: Claude Assistant

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:
+ claude-assistant
    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: ./.github/actions/claude-pr-action
+     - uses: anthropics/claude-code-action@beta
        with:
          trigger_phrase: "@claude"
          timeout_minutes: "60"
          github_token: ${{ steps.app-token.outputs.token }}
          use_vertex: "true"
-         anthropic_model: "claude-3-7-sonnet@20250219"
+         model: 'claude-sonnet-4@20250514'
        env:
          ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
          CLOUD_ML_REGION: us-east5
-         VERTEX_REGION_CLAUDE_3_7_SONNET: us-east5

PR Review用はこんな感じにしています。
promptがinputになさそうだったのでdirect_promptにしています。

      - uses: anthropics/claude-code-action@beta
        with:
          direct_prompt: 'PR変更をレビューしてください。コード品質、潜在的なバグ、パフォーマンスの問題に焦点を当ててください。適切な改善点を提案してください。マージしてよいかどうかを明確に示してください。'
          timeout_minutes: '60'
          github_token: ${{ steps.app-token.outputs.token }}
          use_vertex: 'true'
          model: 'claude-sonnet-4@20250514'
        env:
          ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
          CLOUD_ML_REGION: us-east5

他Coding Agentとの比較

GitHub Copilot Coding Agent

すぐにDraft PRを作成して、実行計画もPR Descriptionに更新されます。
作成されたコードは正常に実行できました。

README.md、README_ja.mdやヘルパースクリプトがpushされており気が利いている印象です。
PR Descriptionも丁寧に書かれています。

GitHub Copilot Coding Agentの処理の流れ

Draft PRを作成

実行計画の立案

実装

Claude Code Action

Issueにコメントし、実行計画を更新して最後にユーザーがPRを作成します。
※作成されたコードはAPI エラーで動きませんでした。

このリポジトリはサンドボックス用でGitHubアカウント名でディレクトリを作成するのがルールです。CLAUDE.mdがpush済みだったためCLAUDE.mdを考慮した実装になっています。(フェアじゃなかった)

Claude Code Actionの処理の流れ

Issueにコメントが書かれる

実行計画の立案

実装(PR作成はユーザーが実施)

Devin

基本的な機能テストを実施済み

とPR Descriptionに記載がありますが、Devin Sessionを見てみましたがテストしてません。嘘ついてます。

requirements.txtくらいはpushしてほしいです。
※作成されたコードはArgumentErrorで動きませんでした。
argsが--output--orgがどっちも-oでconflict起こしてました。。。

def parse_arguments():
    """コマンドライン引数をパースします"""
    parser = argparse.ArgumentParser(description='PRレビュー時間分析ツール')
    parser.add_argument('--org', '-o', required=True, help='GitHub Organization名')
    parser.add_argument('--repo', '-r', help='特定のリポジトリ名(指定しない場合はOrganization内の全リポジトリを分析)')
    parser.add_argument('--days', '-d', type=int, default=30, help='過去何日分のPRを分析するか(デフォルト: 30日)')
    parser.add_argument('--token', '-t', help='GitHub APIトークン(環境変数 GITHUB_TOKEN でも設定可能)')
    parser.add_argument('--output', '-o', default='pr_review_times.csv', help='出力CSVファイル名(デフォルト: pr_review_times.csv)')
    
    return parser.parse_args()

※ 普段Devinの品質は良さげな印象なのですが、今回は少しいまいちでした。

Devinの処理の流れ

※コンソールで指示しています。
PRが作成されます。

他レビューツールとの比較

PR Agentは導入していないのでCopilot Code ReviewとClaude Code Actionのレビューを比較してみました。
Devinが作成したPull Requestをレビューさせてみました。

Copilot Code Review

通常のPRレビューのように該当行へのコメント、Suggested changeを出してくれて良きです。

Copilot Review結果

Claude Code Action

プロンプト次第かもしれませんが、公式ドキュメントのプロンプトをベースとした場合、どのコードに対する指摘なのか視覚的に分かりづらい印象です。
Copilotと同様の箇所について指摘がされていました。

Claude Codeレビュー結果


まとめ

他ツールと比較しても、細かな違いはあるものの実用できそうな品質でした。
プロンプトの見直しやCLAUDE.mdへのナレッジ蓄積で精度はもう少し向上すると思います。
また、今回はClaude Sonnet 4を使いましたが、Claude Opus 4に切り替えることで結果も変わると思います。

月額ライセンスや新しいAIツールへの課金などコスト面でのエージェント型AIの導入にハードルを感じている方は、まずはClaude Code Action & (Vertex AI or Bedrock)でどんなものか試してみるとよいかと思います。
※もちろんVertex AIは従量課金なのでコストコントロールは必要です。

参考

イオングループで、一緒に働きませんか?

イオングループでは、エンジニアを積極採用中です。少しでもご興味もった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。
皆さまとお話できるのを楽しみにしています!



Source link

Views: 0

RELATED ARTICLES

返事を書く

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

- Advertisment -