55
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

追加コストゼロでClaude Codeの個人サブスクでGitHub Actions自動化

55
Last updated at Posted at 2026-03-02

この記事について

この記事は、「PRレビュー、順番待ちやめました — AI時代の"交通整理"を自動化した話」の続編です。

ai-pr-review-github-actions.png

前回の記事では、Claude Code を使った ローカル環境でのコードレビュー 手法を紹介しました。自作の review-pr コマンドを活用し、手動で Claude にレビューを依頼する方法を解説しています。

本記事では、前回記事の「今後の展望: GitHub Actions による完全自動化」セクションの続きとして、実際に GitHub Actions で Claude Code を活用する方法を詳しく解説します。PR レビューの自動化だけでなく、Issue での質問やコード調査など、様々な用途に対応できます。

目次

  1. 前回記事からの発展
  2. 今後の展望(実現編): GitHub Actions による完全自動化
  3. まとめ

前回記事からの発展

前回の記事で言及していた「今後の展望」について、GitHub Actions による自動化自体は従来から 別料金で API キーを発行すれば実現可能 でした。

しかし、2025年7月のアップデートにより、よりコスパの良い方法が登場しました。

  • 個人 Subscription でのトークン共有が可能に(別途 API 課金不要)
  • 簡単なセットアップコマンド/install-github-app)の提供
  • PR レビュー以外の用途にも対応(Issue での @claude コメント等)

これにより、追加コストを抑えながら Claude Code を活用できるようになりました。

今後の展望(実現編): GitHub Actions による完全自動化

個人 Subscription とトークンの共有

2025年7月のアップデート以降、Claude Code Action with OAuth を使用することで、個人の Claude subscription とトークンを共有できるようになりました。

従来の方法 vs 新しい方法

方法 コスト セットアップ
従来: API キー方式 別途 API 課金が必要 API キーの発行・管理
新しい: OAuth 方式 個人 Subscription のみ /install-github-app で完了

対応する用途

以下のワークフローを追加することで、様々な用途で Claude を活用できます。

  • .github/workflows/claude-code-review.yml - PR の自動レビュー
  • .github/workflows/claude.yml - Issue や PR での @claude コメントによる各種タスク実行
    • コードの説明・質問
    • バグ調査の支援
    • ドキュメント生成
    • リファクタリング提案
    • など

セットアップ手順

1. GitHub App のインストール

Claude Code CLI から以下のコマンドを実行します。

/install-github-app

このコマンドにより、必要な GitHub App の認証とセットアップが自動的に行われます。

2. ワークフローファイルの作成

.github/workflows/claude-code-review.yml
PR オープン時の自動レビュー用ワークフロー
name: Claude Code Review

on:
  pull_request:
    types: [opened] # ⚠️ 重要: opened のみに限定
    # 特定のディレクトリの変更のみ監視(オプション)
    paths:
      - "frontend/src/**"

jobs:
  claude-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude Code Review
        id: claude-review
        uses: anthropics/claude-code-action@v1
        with:
          # 個人の Claude subscription の OAuth トークンを使用
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          prompt: |
            REPO: ${{ github.repository }}
            PR NUMBER: ${{ github.event.pull_request.number }}

            `.claude/commands/review-pr.md`の指示に従ってこのPRをレビューしてください。

            重要な点:
            - フロントエンド: `frontend/CLAUDE.md` を参照
            - バックエンド: `api/CLAUDE.md` を参照
            - インラインコメントはGitHub APIを使用して投稿
            - レビューサマリーは `gh pr review` で投稿
            - 良い実装への賞賛コメントは不要(改善提案と確認事項のみ)

          # 許可するツールを制限(セキュリティのため)
          claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr review:*),Bash(gh api:*),Bash(cat *)"'

ポイント:

  • claude_code_oauth_token を使用(anthropic_api_key ではない)
  • カスタムプロンプトで .claude/commands/review-pr.md を参照
  • paths フィルターで特定のディレクトリの変更のみ監視(オプション)
  • claude_args でセキュリティのため実行可能なツールを制限
.github/workflows/claude.yml

PR レビューだけでなく、Issue での質問やコード調査など多用途に対応します。

@\claude コメント経由での各種タスク実行用ワークフロー
name: Claude Code

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

jobs:
  claude:
    # @claude を含むコメントや Issue のみ実行
    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') || contains(github.event.issue.title, '@claude')))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
      actions: read # CI結果を読むために必要

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

          # Claude が PR の CI 結果を読めるようにする(オプション)
          additional_permissions: |
            actions: read

          # カスタムプロンプト(オプション)
          prompt: |
            REPO: ${{ github.repository }}

            コメントの指示に従ってタスクを実行してください。

            PRレビューを依頼された場合は、`.claude/commands/review-pr.md`の指示に従ってレビューしてください。
            - フロントエンド: `frontend/CLAUDE.md` を参照
            - バックエンド: `api/CLAUDE.md` を参照
            - インラインコメントはGitHub APIを使用して投稿
            - レビューサマリーは `gh pr review` で投稿
            - 良い実装への賞賛コメントは不要(改善提案と確認事項のみ)

            その他のタスクの場合は、CLAUDE.mdのガイドラインに従ってください。

          # 許可するツールを制限(セキュリティのため)
          claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr review:*),Bash(gh api:*),Bash(cat *)"'

ポイント:

  • 複数のトリガーイベントに対応(Issue コメント、PR レビューコメント、Issue 作成など)
  • @claude を含むコメントや Issue で自動実行
  • actions: read permission で CI 結果を読める
  • カスタムプロンプトで PR レビューとその他のタスクを両方カバー

使用例

PR でのレビュー依頼:

@claude このPRをレビューしてください

Issue での質問:

@claude このエラーの原因を調査してください

コードの説明:

@claude src/services/user.ts の実装を説明してください

リファクタリング提案:

@claude この関数をもっと読みやすくリファクタリングする方法を提案してください

3. Secrets の設定

/install-github-app コマンドを実行すると、OAuth トークンが自動的に設定されます。

手動で設定する場合は、GitHub リポジトリの Settings > Secrets and variables > Actions から、以下の Secret を追加します:

  • CLAUDE_CODE_OAUTH_TOKEN: Claude Code の OAuth トークン(個人の subscription から取得)

注意: 従来の API キー方式(ANTHROPIC_API_KEY)とは異なり、OAuth トークンを使用します。

⚠️ 重要: PR トリガータイミングの最適化

問題点

以下のように複数のトリガーを設定すると、subsequent pushes(追加のプッシュ)のたびにレビューが走り、あっという間に session トークンが枯渇します

# ❌ 非推奨: トークンがすぐに切れる
on:
  pull_request:
    types: [opened, synchronize, reopened]

推奨運用方法

pr-review-workflow.png

  1. PR オープン時の自動レビュー(1回のみ)

    • types: [opened] のみに限定
    • PR が作成された時点で一度だけ自動レビューが実行される
       
  2. 追加レビューは手動でトリガー

    • PR のコメント欄で @claude このPRをレビューしてください とコメント
    • 必要な時だけレビューを実行できるため、トークン消費を最小限に抑えられる

まとめ

前回の記事「PRレビュー、順番待ちやめました — AI時代の"交通整理"を自動化した話」で紹介した ローカル環境でのレビュー手法 に加え、本記事で紹介した GitHub Actions による自動化 を組み合わせることで、ハイブリッド運用が可能になります。

参考資料

55
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?