コンテンツにスキップ

Claude Code 完全ガイド

Claude Code GitHub Actions自動化完全ガイド:Hooks連携とCI/CD設定方法

この記事のポイント

  • AIコードレビュー

    PRの変更内容を自動分析し、改善提案やバグ検出を実施

  • 自動コード実装

    自然言語の指示から機能追加やバグ修正のPRを自動生成

  • インタラクティブサポート

    Issue・PRコメントでClaudeと対話し、リアルタイムで開発支援

  • CI/CD統合

    既存のGitHub Actionsワークフローに簡単統合可能

📖 概要

Claude Code GitHub Actionsは、Anthropic社が提供するAI駆動の開発自動化ツールです。GitHubのPull RequestやIssueで@claudeとメンションするだけで、Claudeがコードのレビュー、機能実装、バグ修正を自動実行します。

2025年9月現在ベータ版として提供されており、従来の手動コードレビューやタスク実装を大幅に効率化できる革新的なツールとして注目を集めています。最新のClaude Opus 4.1およびSonnet 4モデルに対応し、より高度な開発支援が可能になりました。

重要な制限事項: - 正式なPRレビューの提出不可 - PR承認機能なし - 1つのインタラクションにつき1コメントに限定

主要機能

1. PR・Issue統合

  • コメント連携: @claudeメンションで即座にAIアシスタントを呼び出し
  • 自動PR作成: 要件記述から完全なPull Requestを自動生成
  • リアルタイム対話: コメント欄でClaudeと直接やり取り可能
  • アーティファクト証明: 2025年より導入されたビルド証明書機能で信頼性向上

2. コードレビュー機能

  • 変更内容分析: PRの全ファイルを横断的に分析
  • 改善提案: コード品質向上のための具体的なアドバイス
  • バグ検出: 潜在的な問題やセキュリティリスクを特定

3. 自動実装機能

  • 機能追加: 新機能の要件から実装コードまで自動生成
  • バグ修正: エラー内容から適切な修正コードを提案
  • テスト生成: 実装に合わせたテストコードも自動作成

基本的な動作フロー

graph LR
    A[Issue/PR Comment] --> B[@claude trigger]
    B --> C[GitHub Action]
    C --> D[Claude Code]
    D --> E[Code Analysis]
    E --> F[Implementation]
    F --> G[PR Creation]
    G --> H[Review & Merge]

🔧 セットアップ手順

前提条件

  • リポジトリの管理者権限
  • AnthropicのAPIキーまたはOAuthトークン
  • GitHub Actions有効化済みリポジトリ

1. 簡単セットアップ(推奨)

ターミナルでClaude Codeを使用している場合:

# Claude Codeターミナルで実行
/install-github-app

このコマンドにより、GitHub Appのインストールと必要なシークレット設定が自動化されます。

注意: このコマンドはAnthropicの直接APIユーザーのみ利用可能です。

2. 手動セットアップ

ステップ1: リポジトリシークレット設定

GitHubリポジトリの Settings > Secrets and variables > Actions で以下を追加:

# OAuth認証使用の場合(推奨)
CLAUDE_CODE_OAUTH_TOKEN: your_oauth_token_here

# または Anthropic API使用の場合
ANTHROPIC_API_KEY: your_api_key_here

CLAUDECODEOAUTH_TOKENの取得方法: 1. Claude Codeターミナルで /install-github-app を実行 2. または Claude Code設定でOAuthトークンを生成

ステップ2: ワークフローファイル作成

.github/workflows/claude.ymlを作成:

name: Claude Code Action
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, edited]
  pull_request:
    types: [opened, edited]
  pull_request_review:
    types: [submitted]
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: write  # OIDC認証に必須

jobs:
  claude:
    if: |
      github.actor == 'your-username' &&
      (
        (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' && contains(github.event.pull_request.body, '@claude')) ||
        (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
        github.event_name == 'workflow_dispatch'
      )
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Claude Code Action Official
        uses: anthropics/claude-code-action@beta
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          trigger_phrase: "@claude"

重要な設定ポイント: - permissionsセクションで必要な権限を明示的に指定 - id-token: writeはOIDC認証のために必須 - checkoutステップでリポジトリのクローンが必要 - github.actorで使用者を制限(セキュリティ対策)

3. 認証オプション

Claude Code GitHub Actionsは複数の認証方法をサポート:

OAuth認証(推奨)

with:
  claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
  github_token: ${{ secrets.GITHUB_TOKEN }}

Anthropic API直接認証

with:
  anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
  github_token: ${{ secrets.GITHUB_TOKEN }}

エンタープライズ向けオプション

  • Amazon Bedrock: AWS OIDC認証経由
  • Google Vertex AI: Workload Identity Federation経由

エンタープライズ環境では、独自のクラウドインフラを使用してデータ管理と請求を制御できます。

4. 高度な設定オプション

- uses: anthropics/claude-code-action@beta
  with:
    claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
    github_token: ${{ secrets.GITHUB_TOKEN }}
    trigger_phrase: "@claude"  # トリガーフレーズのカスタマイズ
    direct_prompt: "Fix all linting errors"  # 自動化ワークフロー用
    timeout_minutes: 30  # タイムアウト設定(デフォルト30分)
    model: "claude-opus-4-1-20250805"  # 使用するモデルの指定(Opus 4.1、Sonnet 4も利用可能)
    allowed_tools: "edit,create"  # 使用可能なツールの制限
    max_turns: 20  # 最大ターン数の設定

5. 動作確認手順

1. Secretsが正しく設定されているか確認

# GitHubリポジトリページで確認
Settings  Secrets and variables  Actions

# 以下が設定されていることを確認 CLAUDE_CODE_OAUTH_TOKEN または ANTHROPIC_API_KEY

2. GitHub Actionsの実行確認

# Actions タブで最新の実行を確認
Actions  Claude Code Action  最新の実行

# 成功時のログ確認ポイント "Using provided GITHUB_TOKEN for authentication" "Permission level retrieved: admin" "Actor has write access" "Created initial comment with ID"

3. テスト実行

Issueまたは既存のPRでコメント:

@claude テストです。このメッセージに返信してください。

6. CLAUDE.md設定ファイル

プロジェクトルートにCLAUDE.mdを作成し、プロジェクト固有のガイドラインを設定:

# プロジェクト設定

## コーディング規約
- TypeScript strict mode使用
- ESLint + Prettier設定に従う
- async/await優先、Promiseチェーンは避ける

## レビュー基準
- セキュリティチェック必須
- パフォーマンス影響の評価
- テストカバレッジ80%以上維持

## 禁止事項
- console.logの本番コード混入
- ハードコードされたAPI キー
- 非同期エラーハンドリング省略

💡 実践的な使用例

コードレビュー依頼

@claude このPRのセキュリティ面をレビューしてください。
特にSQL injection脆弱性がないかチェックお願いします。

機能実装依頼

@claude ユーザー認証のエンドポイントを実装してください。
JWT トークンベースで、ログイン・ログアウト・リフレッシュ機能が必要です。

バグ修正依頼

@claude このTypeErrorを修正してください:
TypeError: Cannot read property 'length' of undefined at line 45

テスト生成依頼

@claude 新しく追加したAPIエンドポイントのテストケースを作成してください。
正常系・異常系の両方をカバーしたいです。

🔄 ワークフロー例

1. 開発者がIssueを作成

# Issue: ユーザー管理機能の追加

@claude 以下の機能を実装してください:
- ユーザー登録・編集・削除機能
- 権限管理(admin, user)
- APIエンドポイント設計

2. Claudeが自動応答・実装

  • 要件分析とアーキテクチャ設計提案
  • 実装コードの自動生成
  • 完全なPull Requestの作成
  • テストコードの同時生成

3. 開発者がレビュー・フィードバック

# PRコメント
@claude ログイン試行回数制限を追加してください。
5回失敗でアカウントロック機能をお願いします。

4. Claudeが追加実装

  • フィードバックに基づく機能追加
  • セキュリティ強化の実装
  • 関連テストの更新

📊 メリット・デメリット比較

✅ メリット

項目詳細
開発効率向上手動コーディング時間を最大70%削減
コード品質AI による一貫したコードレビューと品質チェック
学習支援初心者でも高品質なコード実装が可能
24/7対応時間を問わずコード支援を受けられる
既存統合GitHub Actionsとのシームレス連携

❌ デメリット・制限事項

項目詳細
処理速度複雑な変更は25分程度かかる場合がある
メッセージ制限5時間ごとにリセットされる使用制限
コンテキスト制限200Kトークンの制約でプロジェクト全体は処理不可
ベータ版制限機能・API変更の可能性
コストAnthropic APIの従量課金が発生

🔐 セキュリティとベストプラクティス

セキュリティ考慮事項

  • データ保護: コードはGitHubランナー上で処理、外部流出なし
  • 権限管理: 必要最小限の権限でGitHub App設定
  • API キー管理: リポジトリシークレットで安全に管理

ベストプラクティス

  1. 段階的導入: 小規模プロジェクトで試用後、本格運用
  2. CLAUDE.md活用: プロジェクト固有ルールの明文化
  3. 人間レビュー: AIの提案は必ず人間が最終チェック
  4. バックアップ: 重要な変更前はブランチ保護設定

2. PR の自動レビュー

# PR 作成時の自動レビュー
name: Auto Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  claude-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Code Review
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          review_mode: true
          focus_areas: |
            - Security vulnerabilities
            - Performance issues
            - Code quality
            - Test coverage

3. 機能追加の自動化

<!-- PR コメント -->
@claude この機能を追加してください:

## 新機能: ダークモード切り替え

### 要件
- ヘッダーにダークモード切り替えボタンを追加
- ユーザーの設定を localStorage に保存
- 全てのコンポーネントでダークモードに対応

### 技術要件
- Material-UI の ThemeProvider を使用
- React Context でテーマ状態を管理
- CSS-in-JS でスタイリング

🔍 高度な活用例

1. 複数環境での自動テスト

name: Cross-Platform Testing

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  claude-test-generation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Generate Tests
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            Generate comprehensive tests for the changes in this PR:
            - Unit tests for all new functions
            - Integration tests for API endpoints
            - E2E tests for UI components
            - Edge case testing
        env:
          TEST_FRAMEWORKS: "jest,cypress,playwright"

  run-tests:
    needs: claude-test-generation
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        node: [16, 18, 20]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Run Tests
        run: npm test

2. セキュリティ監査の自動化

name: Security Audit

on:
  schedule:
    - cron: '0 2 * * *'  # 毎日午前2時
  pull_request:
    types: [opened, synchronize]

jobs:
  security-audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Security Review
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            Perform a comprehensive security audit:
            - Check for common vulnerabilities (XSS, SQL injection, etc.)
            - Review authentication and authorization
            - Analyze dependency security
            - Check for hardcoded secrets
            - Review API security
        env:
          SECURITY_TOOLS: "npm audit,snyk,semgrep"

3. ドキュメント自動生成

name: Documentation Update

on:
  push:
    branches: [main]
    paths: ['src/**/*.ts', 'src/**/*.tsx']

jobs:
  update-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Generate Documentation
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            Update the documentation based on code changes:
            - Generate API documentation
            - Update README.md
            - Create component documentation
            - Update changelog
        env:
          DOC_FORMATS: "markdown,jsdoc,typedoc"

🎯 ベストプラクティス

1. 効果的なプロンプト設計

<!-- 良い例 -->
@claude この機能を実装してください:

## 目的
ユーザーが商品を検索できる機能

## 詳細要件
- 検索バーをヘッダーに追加
- リアルタイム検索(入力時に結果を表示)
- カテゴリでのフィルタリング
- 検索履歴の保存

## 技術仕様
- TypeScript + React
- Material-UI コンポーネント
- Redux Toolkit for state management
- React Query for API calls

## 制約
- モバイルフレンドリー
- アクセシビリティ準拠
- 1秒以内の応答速度

2. 段階的な実装

# 段階的な機能実装
jobs:
  phase-1:
    name: "Phase 1: Basic Implementation"
    runs-on: ubuntu-latest
    steps:
      - name: Implement Core Features
        uses: anthropics/claude-code-action@beta
        with:
          prompt: "Implement basic search functionality"

  phase-2:
    name: "Phase 2: Enhanced Features"
    needs: phase-1
    runs-on: ubuntu-latest
    steps:
      - name: Add Advanced Features
        uses: anthropics/claude-code-action@beta
        with:
          prompt: "Add filtering and sorting capabilities"

  phase-3:
    name: "Phase 3: Optimization"
    needs: phase-2
    runs-on: ubuntu-latest
    steps:
      - name: Optimize Performance
        uses: anthropics/claude-code-action@beta
        with:
          prompt: "Optimize search performance and UX"

3. エラーハンドリング

jobs:
  claude-with-fallback:
    runs-on: ubuntu-latest
    steps:
      - name: Primary Claude Action
        id: claude-primary
        uses: anthropics/claude-code-action@beta
        continue-on-error: true
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

      - name: Fallback Action
        if: steps.claude-primary.outcome == 'failure'
        run: |
          echo "Claude action failed, falling back to manual review"
          gh pr comment ${{ github.event.pull_request.number }} \
            --body "🤖 Claude Code action failed. Manual review required."

📊 効果測定

導入効果の例

指標改善結果
開発速度3倍高速化
バグ発見率早期発見 80% 向上
コードレビュー時間60% 短縮
テストカバレッジ95% 達成

監視とアラート

name: Claude Performance Monitor

on:
  workflow_run:
    workflows: ["Claude Code Assistant"]
    types: [completed]

jobs:
  monitor:
    runs-on: ubuntu-latest
    steps:
      - name: Check Performance
        run: |
          if [[ "${{ github.event.workflow_run.conclusion }}" == "failure" ]]; then
            curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
              -H 'Content-type: application/json' \
              --data '{"text":"🚨 Claude Code action failed in ${{ github.repository }}"}'
          fi

🔧 トラブルシューティング

よくあるエラーと解決方法

1. "Did you remember to add id-token: write to your workflow permissions?"

# 解決策: permissionsセクションに追加
permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: write  # ← これを追加

2. "fatal: not a git repository"

# 解決策: checkoutステップを追加
steps:
  - name: Checkout repository
    uses: actions/checkout@v4
    with:
      fetch-depth: 0
      token: ${{ secrets.GITHUB_TOKEN }}

  - name: Claude Code Action Official
    uses: anthropics/claude-code-action@beta
    # ...

3. "Bad credentials"エラー

# 解決策: Secretsの設定を確認
1. Settings  Secrets and variables  Actions
2. CLAUDE_CODE_OAUTH_TOKEN が正しく設定されているか確認
3. トークンの有効期限を確認

4. Claudeが反応しない

# 解決策: if条件を確認
if: |
  github.actor == 'your-username' &&  # ← ユーザー名を確認
  (
    (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
    # ... 他の条件
  )

デバッグ方法

1. GitHub Actionsログの確認

# 詳細ログの確認手順
1. Actions タブ  失敗したワークフロー
2. jobの詳細を展開
3. エラーメッセージと該当行を特定

2. ローカルでのテスト

# actを使用したローカルテスト
act -j claude -s CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN

3. 段階的なデバッグ

# デバッグ用のステップを追加
- name: Debug Info
  run: |
    echo "Event Name: ${{ github.event_name }}"
    echo "Actor: ${{ github.actor }}"
    echo "Trigger: ${{ github.event.comment.body }}"

🔗 関連リソース

公式ドキュメント

実装例・ブログ記事

関連記事