メインコンテンツに移動

builders.flash

ウェブサービス・SaaS 企業における生成 AI 活用例

「それ、AI にやらせてみよう」Claude Code Action 活用テクニック with Amazon Bedrock

2025-10-02 | Author : 田中 星佳 (ニフティ株式会社), 小林 雅幸 (ニフティ株式会社)

はじめに

こんにちは。ニフティ株式会社の小林と田中です。普段は@nifty光のシステム開発・運用をしています。

弊社では Claude Code Action を導入し、業務の効率化に役立てています。

今回は、基本的な使い方に加え、実際に使ってみて分かった良いところをご紹介します。


X ポスト »
| Facebook シェア » | はてブ »

builders.flash メールメンバー登録

builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。

今すぐ登録 »

Claude Code Action とは

Claude Code Action とは、GitHub Actions のワークフロー上で Claude を動かして、AIにタスクを実施してもらうことができる仕組みです。

issue や PR のコメントで @claude とメンションするだけで、指示した通りにコードを実装し、PR の作成まで行ってくれます。

Claude の API のエンドポイントとして Amazon Bedrock の Claude のモデルを選択することができるため、AWS アカウントがあればすぐに使い始めることができます。
 

Claude Code Action の利点

最低限の環境構築をすれば簡単に使い始められる

GitHub リポジトリにワークフローの設定を追加するだけで、そのリポジトリで開発をするチームメンバー全員が使うことができます。

設定手順は以下になります。

  1. GitHub リポジトリに専用のアプリをインストール
  2. AWS アカウントにClaudeにアクセスするための IAM ロールを発行
  3. リポジトリにワークフロー用の yml ファイルを追加

と、簡単です。

エディタを開かなくて良い

Claude Code Action を使用すると、コード生成から PR の作成まで全て自動で行ってくれます。

テキストエディタや、専用のアプリ上で動く AI エージェントを使う場合は、AI が変更してくれたソースコードの差分を確認してからリポジトリにコミットし、更にそのブランチの PR を作成し…、とまだまだ手動でやらなければいけない作業が多いですが、Claude Code Action を使えば、人間がやることは PR 上での差分の確認のみです。

また、ジョブを走らせている間、エディタや PC そのものを起動しておく必要も無いので、家を出る前、会議の前、家に帰る前、などにジョブを開始しておけば時間の節約にもなります。

基本的な使い方

Claude Code Action を使えるようにする

1. Github の Claude にアクセスして、Claude Code Action を動かしたいリポジトリにアプリをインストールする

まず、こちら にアクセスし、Configure ボタンからリポジトリの選択に進み、インストールします。

インストール後、リポジトリの Settings タブの「GitHub Apps」に Claude が表示されていれば OK です。
 

Missing alt text value

2. AWSアカウントで、Claudeを使えるようにする

基盤モデルへのアクセスを許可する

今回は us-west-2 で Claude Sonnet 4 を使います。まだ Amazon Bedrock でモデルへのアクセスを許可をしていない場合は、許可します。

コンソールで「Amazon Bedrock」の「モデルアクセス」から「Claude Sonnet 4」を選択して許可します。

Missing alt text value

GitHub Action から AWS への認証を行うための OIDC を作成する

bash
export ACCOUNT_ID=(AWSアカウントID)
aws iam create-open-id-connect-provider --url https://token.actions.githubusercontent.com
aws iam add-client-id-to-open-id-connect-provider \
--open-id-connect-provider-arn arn:aws:iam::${ACCOUNT_ID}:oidc-provider/token.actions.githubusercontent.com \
--client-id sts.amazonaws.com

モデル呼び出しの際に使う IAM ロールを作成する

アカウントIDなどを設定します。リポジトリ名と ref:refs/heads/ (ブランチ名) には `*` も使用できます。

bash
export ACCOUNT_ID=(AWS アカウント ID)
export REPOSITORY=repo:(GITHUB ユーザー名)/(リポジトリ名):ref:refs/heads/(ブランチ名)
export ROLE_NAME=claude-code-action-role

IAM ロールの信頼関係とポリシーを設定するための json ファイルを作成する

bash
cat > trust-policy.json << EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RoleForGitHubActions",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::${ACCOUNT_ID}:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
        },
        "StringLike": {
          "token.actions.githubusercontent.com:sub": "${REPOSITORY}"
        }
      }
    }
  ]
}
EOF

インラインポリシーを作成する

json
cat > inline-policy.json << EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:us-west-2:420466380198:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0",
        "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-7-sonnet-20250219-v1:0",
        "arn:aws:bedrock:*::foundation-model/anthropic.claude-sonnet-4-20250514-v1:0"
      ]
    }
  ]
}
EOF

ロールを作成する

bash
aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://./trust-policy.json
aws iam put-role-policy --role-name $ROLE_NAME --policy-name allow-bedrock-invoke-model --policy-document file://./inline-policy.json

ロールの ARN を登録する

作ったロールの ARN を取得して、リポジトリの「Repository secrets」に新しいシークレット「CLAUDE_CODE_ACTION_ROLE」として登録しておきます。

aws iam get-role —role-name $ROLE_NAME | jq -r '.Role.Arn'

Missing alt text value

3. リポジトリにワークフロー用の yml ファイルを作成する

以下の yml ファイルを GitHub のメインブランチの .github/workflows/claude-code.yml に push します。ANTHROPIC_BEDROCK_BASE_URL, aws-region の 2 ヶ所に、モデルアクセスを許可したリージョンと同じリージョン名を記載してください。(今回は us-west-2)

xml
name: Claude PR Assistant

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

jobs:
  claude-code-action:
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 == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
  (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
runs-on: ubuntu-latest
env:
  ANTHROPIC_BEDROCK_BASE_URL: "https://bedrock-runtime.us-west-2.amazonaws.com“
permissions:
  contents: read
  pull-requests: read
  issues: read
  id-token: write
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_ACTION_ROLE 
      aws-region: us-west-2

uses: anthropics/claude-code-action@beta
    with:
      model: "us.anthropic.claude-sonnet-4-20250514-v1:0"
      use_bedrock: "true"

コードを書いてもらう

準備が終わったら動作させてみましょう ! issue や PR のコメントで @claude とメンションしたら動き始めます。

例えばコードを実装させる場合は以下の手順で効率的に進めることができます。

  1. issue のコメントでメンションして、実装を依頼する
  2. Claude Code Action が処理中であることを示すコメントを投稿するため、終わるまで待つ
Missing alt text value

PR を作成する

終わったら、2 のコメント内に PR 作成用のリンクができるので、クリックして PR を作成します。

Missing alt text value

PR の差分を確認する

もし不十分な箇所があれば、ソースコードの特定の行へのコメントでも、PR 全体へのコメントでも、再度 @claude とメンションして修正の依頼をすれば、同じブランチ内に修正をコミットをしてくれます。(issue へコメントしてしまうと、新たなブランチが作られるので、微修正であれば PR のコメントで依頼して、同じブランチにコミットしてもらうのがベターです。)

修正が終わったらマージする

AI は間違える可能性があります。レビューや動作確認は必ず実施しましょう。

うまく動いていなさそうな時は

コードの修正を依頼したのにコミットしてくれない、など、お願いしたタスクが上手く実施できていない時がまれにあります。そのような場合は、ジョブの詳細を確認することを推奨します。

Claude Code Action が書いたコメント内の「View job」というリンクから、そのジョブで何をやろうとして、どこで失敗したのかを確認することができます。

タイムアウトなどで失敗してしまっている場合は、単純にジョブを再実行するだけで上手くいくこともあります。

Claude Code Action がやりたかった操作への権限が付与されていない場合もあります。
画像の例では、Bash に対する権限を与えていなかったため、そこでジョブが失敗していました。

Missing alt text value

ジョブが失敗した場合

このような場合は、以下のように、ワークフローの yml ファイルに allowed_tool という項目を追加すれば、権限を与えることができます。

xml
- name: Run Claude PR Action
uses: anthropics/claude-code-action@beta
with:
  timeout_minutes: "60"
  use_bedrock: "true"
  model: "us.anthropic.claude-sonnet-4-20250514-v1:0"
  allowed_tools: "Bash"

どんなことができる ?

時間が掛かる大変なタスクを任せられる

@nifty光では、バッチ処理のAWS移行時に、Claude Code Actionを使用して、リポジトリ内のスクリプトファイル約60件に変更を加えました。

弊システムには約 90 個の Javaのバッチがあり、それぞれをキックする shell ファイルが存在します。また、バッチによってはファイルを出力するのですが、パターン 1 のように Java の処理の中でファイルを作るものと、パターン 2 のように、Java の処理の結果を受けた shell がファイルを作るものがあります。

Missing alt text value

shell から出力ファイルを Amazon S3 に転送

これらの処理をオンプレミス環境から Amazon ECS に移行したのですが、バッチ実行の終了と共にタスクが終了し、コンテナ内にある出力ファイルも消えてしまうため、ファイルの永続化が必要になりました。

今回の移行では「まずは全ての処理を AWS 上で動かすこと」を目標としていましたので、大規模なリファクタリングは実施せず、shell から出力ファイルを Amazon S3 に転送することにしました。

しかし、全てのバッチでこのS3への転送を手動で実装するとなると、仕様書やソースを見て「このバッチはファイル出力があるのか」「出力はどこでしているのか」「ファイル名は何なのか」を全て確認してから転送処理を書く必要があり、非常に時間が掛かることは明らかです。

ただ、裏を返せば、ソースを見ないとどう実装するべきか判断できないということは、ソースを見れば判断できるということです。

そこで、Claude Code Actionに実装をさせてみることにしました。

Missing alt text value

Claude Code Action に実装をさせてみる

まずは、どれか1つバッチを選んで、それについて実装していきます。 以下のようにファイルのパスと処理の流れを与え、shellファイルの末尾に転送用のCLIコマンドを書いてもらうよう依頼しました。

xml
@claude

### hoge バッチのフロー
- まず path/to/shell/batch.sh が呼ばれます。
- shell ファイルの 30 行目で Java の実行ファイルが呼び出されます。その Java ファイルは path/to/java/BatchExec.java です。
- BatchExec.java の 50 行目でファイルが出力されます。

### タスク
- この出力ファイルを S3 に転送する CLI コマンドを、shell ファイルの最後に追記してください
- バケット名は〇〇です

Claude Code Action の実行が終わったら、結果を確認し、思い通りの実装でなければ修正を依頼し、完成させます。

他のバッチも依頼する

1 つのバッチについて実装ができたら、「他のバッチもよろしく」と依頼をします。

xml
@claude
`path/to/shell/` 配下の他のバッチも同様に、出力ファイルがあればshellファイルの最後でS3に転送してください

バッチの数が多いからか、全てのバッチを実装する前にジョブが終わってしまったりもしましたが、何度か回すことで全て実装してくれました。
最終的には全ての修正を人の目でレビューし、いくつか間違いを発見したりもしましたが、リポジトリ内を駆けずり回りながら 60 件ものファイルを修正するという大変な作業をだいぶ軽減することができました。

リポジトリについて教えてもらう

詳細を把握できていないリポジトリについて教えてもらうこともできます。今回は、IaC のリポジトリに Claude Code Action を導入して、AWS の構成図を描いてもらいました。どのディレクトリにどんな情報があるかを教えて作ってみます。

xml
@claude
drawio の xml 形式で AWS の構成図を作ってください
アカウントは2つあり、それぞれの定義は path/to/def/` 配下にあります

出来上がった構成図

出来た図がこちらです。(公開用に、実際の出力から一部内容を変更しています。) アイコンの配置や、線の繋ぎ方が不自然だったり、Amazon EFS のみ公式アイコンではなくオレンジの四角形で表示されるなど、人間が描くより見づらい図ではありますが、全体の概要を把握するには十分ではないでしょうか。また、プロンプト、AI の思考プロセス、実装の結果、などの履歴が全て GitHub 上に残るので、簡単にチームメンバーに共有できるのも良いところです。私は、弊社のOrganization内のリポジトリで、効果的な使用例を検索して参考にしています。

まとめ

Claude Code Actionを使用すると、実装やレビューなど、様々なタスクを効率的に進めることができます。また、初期設定も非常に簡単で、すぐに導入できます。

今回紹介した使い方以外にも、様々なことに活用できると思いますので、皆さまも導入してみてはいかがでしょうか。

筆者プロフィール

Missing alt text value

田中 星佳 (たなかせいか)

ニフティ株式会社

@nifty光のシステム開発・運用に従事しながら、アプリケーションやデータベースの AWS への移行を推進。業務では勿論、趣味の英語の勉強でも生成 AI を活用しています。

Missing alt text value

小林 雅幸 (こばやしまさゆき)

ニフティ株式会社

ニフティ株式会社にて、回線サービスの開発と運用を担当しています。
生成 AI の活用においては、運用業務に多くの工数を費やしていることに課題を感じており、その解決策として着目し、効率化に向けた PoC を実現しています。現在はシステムの AWS 移行を進める中で、生成 AI を導入することで、移行作業の効率化と時間短縮を図っています。