はじめに

ソフトウェア開発において、Issue対応からPull Request(PR)作成までの一連のワークフローは、多くのエンジニアにとって日常的な作業です。しかし、Issue内容の把握、ブランチ作成、実装、コミット、PR作成、レビュー対応と、多くのステップを経る必要があり、時間と認知負荷がかかります。

Claude Codeは、公式ドキュメントの「Create pull requests」ワークフローで示されているように、この一連の作業を自然言語の指示だけで効率化できます。

Ask Claude directly to make a PR for you

本記事では、Claude Codeを活用してIssue対応からPR作成までのワークフローを一気通貫で実行する方法を解説します。この記事を読むことで、以下のことができるようになります。

  • GitHub IssueをClaude Codeで読み込み、対応方針を立てる
  • Issue対応の実装をClaude Codeで効率的に行う
  • PRの作成と変更内容のサマリーを自動生成する
  • コードレビュー指摘への対応を効率化する
  • GitHub ActionsでClaude Codeを活用した自動化ワークフローを構築する

実行環境

  • オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
  • ハードウェア: 4GB以上のRAM
  • Node.js 18以上(npmインストールの場合のみ必要)
  • インターネット接続(認証およびAI処理に必要)
  • シェル環境: Bash、Zsh、またはFish推奨

前提条件

  • コマンドライン操作の基礎知識
  • Gitの基本操作(clone、commit、push等)
  • プログラミングの基礎知識(言語は問わない)
  • Claude.aiまたはAnthropic Consoleアカウント
  • Claude Codeのインストールと認証が完了していること
  • GitHub CLIのインストールと認証が完了していること

PRワークフローの全体像

Claude Codeを使ったIssue対応からPR作成までの全体的なワークフローを確認しましょう。

flowchart TD
    A[GitHub Issueの確認] --> B[対応方針の策定]
    B --> C[ブランチ作成]
    C --> D[実装]
    D --> E[テスト実行]
    E --> F{テスト成功?}
    F -->|Yes| G[変更のコミット]
    F -->|No| H[修正]
    H --> E
    G --> I[PRの作成]
    I --> J[PRサマリー自動生成]
    J --> K[レビュー待ち]
    K --> L{レビュー指摘あり?}
    L -->|Yes| M[指摘対応]
    M --> E
    L -->|No| N[マージ]

このワークフローの特徴は、Claude Codeが各ステップで具体的な支援を提供できる点です。Issue内容の把握から実装、PR作成、レビュー対応まで、一貫してサポートします。

GitHub Issueの読み込みと対応方針の策定

Issue対応の第一歩は、Issueの内容を正確に把握し、適切な対応方針を立てることです。

GitHub CLIを使ったIssue情報の取得

Claude CodeはGitHub CLIと連携して、Issue情報を直接取得できます。

1
> gh issue view 123 を実行して、Issue #123の内容を確認して

Claude Codeはghコマンドを実行し、Issue情報を取得します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
⏺ 実行: gh issue view 123

Issue #123: ユーザー認証時のエラーハンドリング改善

状態: Open
作成者: @developer
ラベル: bug, priority-high

■ 内容:
ログイン失敗時のエラーメッセージが不明確で、ユーザーが原因を特定できない。
以下の改善が必要:
1. 具体的なエラー理由の表示
2. リトライ可能な場合の案内
3. サポートへの問い合わせ導線

■ 再現手順:
1. ログイン画面で間違ったパスワードを入力
2. 「エラーが発生しました」というメッセージのみ表示される

対応方針の策定

Issue内容を把握したら、Claude Codeに対応方針を提案させます。

1
2
> このIssueに対応するための実装方針を提案して。
> 既存のエラーハンドリングの実装も確認して。

Claude Codeはコードベースを分析し、以下のような提案を行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
⏺ 実装方針を提案します:

■ 現状分析:
- src/services/AuthService.ts でエラーを catch して一般的なメッセージを返却
- エラー種別(パスワード不一致、アカウントロック等)が区別されていない

■ 提案する変更:

1. AuthError クラスの拡張(src/errors/AuthError.ts)
   - エラーコードと詳細メッセージを保持
   - リトライ可能かどうかのフラグを追加

2. AuthService の改修(src/services/AuthService.ts)
   - 認証失敗時に具体的なエラー種別を特定
   - AuthError をスローするように変更

3. LoginForm コンポーネントの改修(src/components/LoginForm.tsx)
   - エラー種別に応じたメッセージ表示
   - リトライボタンの条件付き表示
   - サポートリンクの追加

4. テストの追加
   - AuthService のエラーハンドリングテスト
   - LoginForm のエラー表示テスト

■ 影響範囲:
- 認証関連のエラー表示が変わるため、E2Eテストの更新が必要
- 既存のエラーログ形式との互換性を確認する必要あり

ブランチ作成と実装

対応方針が決まったら、ブランチを作成して実装に入ります。

ブランチの作成

1
2
> Issue #123 に対応するブランチを作成して。
> ブランチ名は fix/issue-123-auth-error-handling にして。

Claude Codeはgitコマンドを実行してブランチを作成します。

1
2
3
⏺ 実行: git checkout -b fix/issue-123-auth-error-handling

Switched to a new branch 'fix/issue-123-auth-error-handling'

実装の依頼

Claude Codeに実装を依頼する際は、具体的な要件を伝えます。

1
2
> 先ほど提案した実装方針に基づいて、Issue #123 の対応を実装して。
> まず AuthError クラスから始めて。

Claude Codeは段階的に実装を進め、各ステップで承認を求めます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
⏺ AuthError クラスを実装します。

■ 作成: src/errors/AuthError.ts

export enum AuthErrorCode {
  INVALID_CREDENTIALS = 'INVALID_CREDENTIALS',
  ACCOUNT_LOCKED = 'ACCOUNT_LOCKED',
  ACCOUNT_NOT_FOUND = 'ACCOUNT_NOT_FOUND',
  SESSION_EXPIRED = 'SESSION_EXPIRED',
  UNKNOWN = 'UNKNOWN',
}

export interface AuthErrorOptions {
  code: AuthErrorCode;
  message: string;
  retryable: boolean;
  supportUrl?: string;
}

export class AuthError extends Error {
  readonly code: AuthErrorCode;
  readonly retryable: boolean;
  readonly supportUrl?: string;

  constructor(options: AuthErrorOptions) {
    super(options.message);
    this.name = 'AuthError';
    this.code = options.code;
    this.retryable = options.retryable;
    this.supportUrl = options.supportUrl;
  }

  static invalidCredentials(): AuthError {
    return new AuthError({
      code: AuthErrorCode.INVALID_CREDENTIALS,
      message: 'メールアドレスまたはパスワードが正しくありません',
      retryable: true,
    });
  }

  static accountLocked(): AuthError {
    return new AuthError({
      code: AuthErrorCode.ACCOUNT_LOCKED,
      message: 'アカウントがロックされています',
      retryable: false,
      supportUrl: '/support/account-locked',
    });
  }
}

この変更を適用しますか? [y/n]

カスタムコマンドによるIssue対応の効率化

頻繁にIssue対応を行う場合は、カスタムコマンドを作成すると便利です。

1
2
3
4
5
6
7
8
9
# .claude/commands/fix-issue.md の内容
Find and fix issue #$ARGUMENTS. Follow these steps:
1. Read the issue description using gh issue view
2. Understand the requirements and acceptance criteria
3. Analyze the relevant code in our codebase
4. Create a branch named fix/issue-$ARGUMENTS-<brief-description>
5. Implement the solution following our coding standards
6. Add appropriate tests
7. Prepare a concise commit message referencing the issue

このコマンドを使えば、以下のように簡潔にIssue対応を開始できます。

1
> /fix-issue 123

PRの作成と変更サマリーの自動生成

実装が完了したら、PRを作成します。Claude Codeは変更内容を自動的に分析し、適切なPR説明文を生成できます。

変更内容のサマリー作成

1
> 今回の変更内容をサマリーして。PRの説明文に使えるように整理して。

Claude Codeは差分を分析し、サマリーを生成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
⏺ 変更内容サマリー:

■ 概要:
Issue #123 に対応し、ユーザー認証時のエラーハンドリングを改善しました。

■ 変更ファイル:
- src/errors/AuthError.ts (新規)
- src/services/AuthService.ts (修正)
- src/components/LoginForm.tsx (修正)
- src/tests/AuthService.test.ts (新規)
- src/tests/LoginForm.test.tsx (新規)

■ 主な変更点:
1. AuthError クラスの追加
   - エラーコードによる種別管理
   - リトライ可能フラグの追加
   - サポートURL保持機能

2. AuthService の改修
   - 認証失敗時の詳細なエラー判定
   - AuthError をスローする形式に変更

3. LoginForm の改善
   - エラー種別に応じたメッセージ表示
   - リトライボタンの条件付き表示
   - サポートページへのリンク追加

■ テスト:
- AuthService: 5ケース追加(全パス)
- LoginForm: 8ケース追加(全パス)

PRの作成

Claude Codeに直接PRの作成を依頼できます。

1
> create a pr

または、より詳細な指示を与えることもできます。

1
2
> PRを作成して。タイトルは「feat: 認証エラーハンドリングの改善」にして。
> Issue #123 をクローズするようにリンクして。

Claude Codeはgh pr createコマンドを実行してPRを作成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
⏺ 実行: gh pr create --title "feat: 認証エラーハンドリングの改善" \
  --body "## 概要
Issue #123 に対応し、ユーザー認証時のエラーハンドリングを改善しました。

## 変更内容
- AuthError クラスの追加
- AuthService でのエラー種別判定
- LoginForm でのユーザーフレンドリーなエラー表示

## テスト
- AuthService: 5ケース追加(全パス)
- LoginForm: 8ケース追加(全パス)

## 関連Issue
Closes #123"

Creating pull request for fix/issue-123-auth-error-handling into main

https://github.com/your-org/your-repo/pull/456

PRサマリーの充実化

PRの説明文をさらに充実させたい場合は、追加の情報を依頼できます。

1
> enhance the PR description with more context about the security improvements
1
> PRの説明文に、テスト方法の詳細を追加して

Claude Codeは既存のPR説明文を更新するコマンドを実行します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
⏺ 実行: gh pr edit 456 --body "..."

PR #456 の説明文を更新しました。

追加した内容:
■ テスト方法:
1. ログイン画面で間違ったパスワードを入力
2. 「メールアドレスまたはパスワードが正しくありません」と表示されることを確認
3. リトライボタンが表示されることを確認

4. 5回連続でログインに失敗
5. 「アカウントがロックされています」と表示されることを確認
6. サポートページへのリンクが表示されることを確認

コードレビュー対応

PRを作成した後は、コードレビューを受けてフィードバックに対応する必要があります。Claude Codeはこのプロセスも効率化できます。

レビューコメントの確認

1
> gh pr view 456 --comments を実行して、レビューコメントを確認して
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
⏺ 実行: gh pr view 456 --comments

PR #456 のレビューコメント:

■ @reviewer (2時間前):
src/services/AuthService.ts L45-50:
「エラーメッセージが日本語固定になっていますが、i18n対応は考慮されていますか?」

■ @reviewer (2時間前):
src/components/LoginForm.tsx L78:
「サポートURLのハードコードは避けて、環境変数から取得するようにしてください」

レビュー指摘への対応

1
2
3
> レビューコメントに対応して。
> 1. エラーメッセージをi18n対応する
> 2. サポートURLを環境変数から取得するように修正する

Claude Codeはレビュー指摘に対応した修正を実装します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
⏺ レビュー指摘に対応します。

■ 変更1: AuthError.ts のi18n対応

- import { t } from '@/i18n';
+ import { t } from '@/i18n';

  static invalidCredentials(): AuthError {
    return new AuthError({
      code: AuthErrorCode.INVALID_CREDENTIALS,
-     message: 'メールアドレスまたはパスワードが正しくありません',
+     message: t('auth.error.invalidCredentials'),
      retryable: true,
    });
  }

■ 変更2: LoginForm.tsx のサポートURL修正

- supportUrl: '/support/account-locked',
+ supportUrl: process.env.NEXT_PUBLIC_SUPPORT_URL || '/support',

これらの変更を適用しますか? [y/n]

修正コミットとプッシュ

1
> 修正をコミットしてプッシュして。コミットメッセージは「fix: address review comments」で
1
2
3
4
5
6
7
8
⏺ 実行: git add -A && git commit -m "fix: address review comments

- Add i18n support for error messages
- Use environment variable for support URL"

実行: git push

修正をプッシュしました。レビュアーに確認を依頼できます。

GitHub Actionsでの自動化

Claude Code GitHub Actionsを使用すると、Issue対応やPR作成のワークフローをさらに自動化できます。

Claude Code GitHub Actionsのセットアップ

Claude Codeターミナルで以下のコマンドを実行すると、簡単にセットアップできます。

1
> /install-github-app

このコマンドは、GitHubアプリのインストールと必要なシークレットの設定をガイドします。

基本的なワークフロー設定

PRやIssueで@claudeをメンションするだけで、Claude Codeが応答するワークフローを設定できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# .github/workflows/claude.yml
name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
jobs:
  claude:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

この設定により、IssueやPRのコメントで@claudeをメンションすると、Claude Codeが自動的に応答します。

1
2
# Issue #200 のコメント例
@claude このIssueを分析して、実装方針を提案してください

自動コードレビューワークフロー

PRが作成されたときに自動的にコードレビューを実行するワークフローも設定できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# .github/workflows/code-review.yml
name: Code Review
on:
  pull_request:
    types: [opened, synchronize]
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "/review"
          claude_args: "--max-turns 5"

Issue対応の自動化

Issueに特定のラベルが付いたときに、自動的に実装を開始するワークフローも構築できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# .github/workflows/auto-implement.yml
name: Auto Implement
on:
  issues:
    types: [labeled]
jobs:
  implement:
    if: github.event.label.name == 'auto-implement'
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            Implement the feature described in this issue.
            Create a branch, implement the solution, and open a PR.
          claude_args: "--max-turns 20"

GitLab連携

Claude CodeはGitLabとも連携できます。GitLab CI/CDを使用した自動化ワークフローの設定例を紹介します。

GitLab CI/CDでの基本設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# .gitlab-ci.yml
stages:
  - review

code_review:
  stage: review
  image: node:20
  script:
    - npm install -g @anthropic-ai/claude-code
    - claude -p "Review the changes in this merge request and provide feedback"
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  variables:
    ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY

MRでのClaude Code活用

GitLabのMerge Requestでも、Claude Codeを活用した効率的なワークフローを構築できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# .gitlab-ci.yml
implement_feature:
  stage: implement
  script:
    - |
      claude -p "
        Read the issue description from $CI_MERGE_REQUEST_DESCRIPTION
        and implement the requested changes.
      "
  rules:
    - if: $CI_MERGE_REQUEST_LABELS =~ /auto-implement/

効果的なPRワークフローのベストプラクティス

Claude Codeを使ったPRワークフローを最大限活用するためのベストプラクティスを紹介します。

CLAUDE.mdでプロジェクト規約を定義

プロジェクトのルートにCLAUDE.mdファイルを配置し、コーディング規約やPR作成のルールを定義しておくと、Claude Codeがそれに従って動作します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# CLAUDE.md

## PR作成ルール
- PRタイトルは Conventional Commits 形式に従う(feat:, fix:, docs: 等)
- PR説明文には必ず「概要」「変更内容」「テスト」セクションを含める
- 関連Issueは「Closes #XXX」形式でリンクする

## コミットメッセージ規約
- 日本語で記述
- 1行目は50文字以内で変更の要約
- 必要に応じて本文で詳細を説明

## レビュー対応
- レビュー指摘への対応は個別コミットで行う
- 対応完了後はレビュアーにメンションで通知

段階的な承認モードの活用

重要な変更を行う場合は、Auto-Accept Modeではなく通常のAccept Modeを使用し、各変更を確認しながら進めることを推奨します。

1
2
3
4
# Shift+Tab でモードを切り替え
# ⏵⏵ accept edits on → Auto-Accept Mode
# ⏵ accept edits → Accept Mode(推奨)
# ⏸ plan mode on → Plan Mode(分析のみ)

Git Worktreesを使った並列作業

複数のIssueに同時に対応する場合は、Git Worktreesを活用すると効率的です。

1
2
3
4
5
6
# 別のIssue対応用にworktreeを作成
git worktree add ../project-issue-124 -b fix/issue-124

# 各worktreeで別のClaude Codeセッションを起動
cd ../project-issue-124
claude

トラブルシューティング

gh コマンドが認識されない

GitHub CLIがインストールされていない、または認証されていない可能性があります。

1
2
3
4
5
6
7
8
# インストール確認
gh --version

# 認証状態確認
gh auth status

# 認証実行
gh auth login

PRの作成に失敗する

リポジトリへのプッシュ権限がない、またはブランチ保護ルールに違反している可能性があります。

1
2
3
4
5
6
7
> gh pr create の実行に失敗しました。
> エラー: Permission denied

確認事項:
1. リポジトリへの書き込み権限があるか
2. ブランチがプッシュされているか
3. ブランチ保護ルールに違反していないか

GitHub Actionsが動作しない

以下の点を確認してください。

  • GitHubアプリが正しくインストールされているか
  • ANTHROPIC_API_KEYシークレットが設定されているか
  • ワークフローファイルの構文が正しいか

まとめ

Claude Codeを活用することで、Issue対応からPR作成までのワークフローを大幅に効率化できます。

本記事で紹介した主なポイントは以下の通りです。

  • GitHub CLIと連携してIssue情報を取得し、対応方針を策定できる
  • カスタムコマンドを使ってIssue対応のワークフローを標準化できる
  • PRの作成と変更サマリーの自動生成で、ドキュメンテーションの手間を削減できる
  • レビュー指摘への対応もClaude Codeがサポートしてくれる
  • GitHub Actionsと連携することで、さらなる自動化が可能

Claude Codeは単なるコード生成ツールではなく、開発ワークフロー全体を支援するエージェントです。日々の開発作業に取り入れることで、より創造的な作業に集中できる時間を確保できます。

参考リンク