Claude Code ベストプラクティス完全ガイド:AIペアプログラミングを最大限活用する方法

公開日: 2026-01-26 5分 / 1051文字 Claude CodeAI開発効率化CLIAnthropic

はじめに

Claude Codeは、Anthropicが提供するエージェント型のコーディングツールです。単なるチャットボットではなく、ファイルの読み書き、コマンド実行、問題の自律的な解決が可能な開発アシスタントです。

2025年2月のローンチ以来、11万5,000人以上のアクティブ開発者が利用し、週間1億9,500万行以上のコードを処理しています。本記事では、Claude Codeを最大限活用するためのベストプラクティスを解説します。

graph LR A[Claude Code] --> B[ファイル操作] A --> C[コマンド実行] A --> D[コード生成] A --> E[デバッグ] A --> F[Git操作] B --> B1[読み取り] B --> B2[編集] B --> B3[作成] C --> C1[ビルド] C --> C2[テスト] C --> C3[デプロイ]

最も重要な原則:コンテキストウィンドウの管理

Claude Codeを効果的に使う上で最も重要なのは、コンテキストウィンドウの管理です。

コンテキストウィンドウとは

コンテキストウィンドウには、会話履歴、読み込んだファイル、コマンド出力のすべてが含まれます。これが満杯になると、Claudeのパフォーマンスが低下します。

graph TB A[コンテキストウィンドウ 200K tokens] --> B[会話履歴] A --> C[読み込んだファイル] A --> D[コマンド出力] A --> E[MCPツール定義] B --> B1[ユーザーメッセージ] B --> B2[Claudeの応答] style A fill:#f9f,stroke:#333,stroke-width:2px

コンテキスト管理のベストプラクティス

戦略説明
/clearを頻繁に使用無関係なタスク間でコンテキストをリセット
サブエージェントを活用調査タスクは別コンテキストで実行
MCPツールを絞る20-30個設定しても、有効化は10個以下、ツール数80以下に
/compactで圧縮重要な情報を保持しながらコンテキストを圧縮

CLAUDE.mdの書き方

CLAUDE.mdとは

CLAUDE.mdは、Claude Codeがセッション開始時に自動的に読み込む特別なファイルです。プロジェクト固有の情報、コーディング規約、ワークフローを定義できます。

配置場所と優先順位

graph TB A[CLAUDE.md配置場所] --> B[~/.claude/CLAUDE.md
全セッション共通] A --> C[./CLAUDE.md
プロジェクトルート] A --> D[./子ディレクトリ/CLAUDE.md
サブディレクトリ固有] B --> E[優先度: 低] C --> F[優先度: 中] D --> G[優先度: 高]

良いCLAUDE.mdの例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# コードスタイル
- ES modules (import/export) を使用、CommonJS (require) は禁止
- インポートは可能な限り分割構文を使用

# ワークフロー
- コード変更後は必ず型チェックを実行
- パフォーマンスのため、テストは個別に実行

# コマンド
- ビルド: `npm run build`
- テスト: `npm test -- --watch`
- 型チェック: `npm run typecheck`

含めるべき内容と含めない内容

含めるべき含めないべき
Claudeが推測できないBashコマンドコードを読めばわかること
デフォルトと異なるコードスタイル言語の標準規約
テスト実行方法詳細なAPIドキュメント(リンクで代替)
リポジトリの作法(ブランチ命名等)頻繁に変更される情報
プロジェクト固有のアーキテクチャ決定長い説明やチュートリアル
開発環境の特殊設定(環境変数等)自明なプラクティス

/initコマンドで初期化

1
2
3
# プロジェクトでClaude Codeを初めて使う場合
claude
> /init

/initを実行すると、Claude Codeがコードベースを分析し、ビルドシステム、テストフレームワーク、コードパターンを検出してCLAUDE.mdの雛形を生成します。


効果的なプロンプトの書き方

検証方法を必ず提供する

Claude Codeの精度を劇的に向上させる最も重要なポイントは、自己検証できる手段を与えることです。

graph LR A[検証手段] --> B[テストコード] A --> C[スクリーンショット] A --> D[期待される出力] A --> E[リンターチェック] B --> F[高精度な実装] C --> F D --> F E --> F
戦略BeforeAfter
検証基準を提供「メールアドレスを検証する関数を実装して」「validateEmail関数を書いて。テストケース: [email protected]はtrue、invalidはfalse、[email protected]はfalse。実装後にテストを実行して」
UI変更は視覚的に確認「ダッシュボードを改善して」「[スクリーンショット貼付] このデザインを実装して。結果のスクリーンショットを撮って比較し、差異を修正して」
根本原因を解決「ビルドが失敗してる」「ビルドがこのエラーで失敗: [エラー貼付]。修正してビルド成功を確認して。エラー抑制ではなく根本原因を解決して」

探索→計画→実装→コミット

複雑なタスクは4フェーズに分けます。

graph LR A[1. 探索
Plan Mode] --> B[2. 計画
Plan Mode] B --> C[3. 実装
Normal Mode] C --> D[4. コミット
Normal Mode] A --> A1[ファイル読み込み
質問への回答] B --> B1[詳細な実装計画
変更ファイル特定] C --> C1[コード実装
テスト実行] D --> D1[コミット
PR作成]

Plan Modeでは、Claudeはファイルを読んで質問に答えるのみで、変更は行いません。これにより、間違った方向に進むリスクを減らせます。

# Plan Modeで探索
> /plan
> src/authを読んで、セッションとログイン処理を理解して。
> 環境変数でのシークレット管理方法も確認して。

# 計画を作成
> Google OAuthを追加したい。変更が必要なファイルは?
> セッションフローは?計画を作成して。

# Normal Modeで実装
> /normal
> 計画通りにOAuthフローを実装して。コールバックハンドラのテストを書いて、
> テストスイートを実行して失敗を修正して。

# コミット
> 説明的なメッセージでコミットしてPRを作成して。

具体的なコンテキストを提供

戦略BeforeAfter
タスクを限定「foo.pyにテストを追加して」「foo.pyにログアウト時のエッジケースをカバーするテストを書いて。モックは使わないで」
情報源を指定「ExecutionFactoryのAPI変な理由は?」「ExecutionFactoryのgit履歴を見て、APIがこうなった経緯をまとめて」
既存パターンを参照「カレンダーウィジェットを追加して」「ホームページの既存ウィジェット実装を見てパターンを理解して。HotDogWidget.phpが良い例。そのパターンに従って、月選択とページネーションができるカレンダーウィジェットを新規実装して」

リッチコンテンツの提供方法

  • @でファイル参照: @src/config.tsのように指定
  • 画像を直接貼り付け: ドラッグ&ドロップまたはコピペ
  • URLを提供: ドキュメントやAPI仕様へのリンク
  • パイプでデータ入力: cat error.log | claude

セッション管理

早期かつ頻繁に軌道修正

最良の結果は、タイトなフィードバックループから生まれます。

操作説明
EscClaudeを途中で停止(コンテキストは保持)
Esc × 2 または /rewind巻き戻しメニューを開き、以前の状態に復元
"それを元に戻して"Claudeに変更を取り消させる
/clear無関係なタスク間でコンテキストをリセット

2回修正しても直らない場合

同じセッションで2回以上同じ問題を修正した場合、コンテキストが失敗したアプローチで汚れています。

解決策: /clearして、学んだことを含めたより具体的なプロンプトで新しいセッションを開始。

サブエージェントで調査を分離

# サブエージェントに調査を委任
> サブエージェントを使って、認証システムのトークンリフレッシュ方法と、
> 再利用できる既存のOAuthユーティリティがあるか調査して。

サブエージェントは別のコンテキストウィンドウで実行され、結果のサマリーのみを返します。メインの会話を汚さずに調査できます。

セッションの再開

1
2
3
4
5
# 最新の会話を再開
claude --continue

# 過去のセッションから選択
claude --resume

/renameでセッションに名前を付けておくと、後で見つけやすくなります。


フック(Hooks)

フックは、Claude Codeのワークフローの特定のポイントで自動的にスクリプトを実行する機能です。CLAUDE.mdの指示とは異なり、フックは確実に実行されます。

フックのライフサイクル

graph TB A[SessionStart] --> B[UserPromptSubmit] B --> C[PreToolUse] C --> D{ツール実行} D --> E[PostToolUse] E --> F{継続?} F -->|Yes| C F -->|No| G[Stop] H[SubagentStart] --> I[SubagentStop]

利用可能なフックイベント

フック発火タイミング
SessionStartセッション開始・再開時
UserPromptSubmitユーザーがプロンプトを送信時
PreToolUseツール実行前
PostToolUseツール成功完了後
StopClaudeが応答完了時
SubagentStartサブエージェント起動時
SubagentStopサブエージェント完了時
PreCompactコンテキスト圧縮前
SessionEndセッション終了時
Notification通知送信時

フックの設定例

.claude/settings.jsonに設定します。

 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
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npm run lint --fix"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/validate-command.sh"
          }
        ]
      }
    ]
  }
}

フック活用例

ユースケースフック説明
自動リントPostToolUse (Write|Edit)ファイル編集後に自動でリンター実行
危険なコマンドブロックPreToolUse (Bash)rm -rfなどの危険なコマンドを防止
セッション開始時の環境設定SessionStart環境変数の設定、依存関係の確認
特定フォルダの保護PreToolUse (Write)migrationsフォルダへの書き込みをブロック

MCP(Model Context Protocol)

MCPを使うと、Claude Codeに外部ツールやサービスを接続できます。

MCP設定

.mcp.jsonをプロジェクトルートに配置します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    }
  }
}

MCP活用例

graph TB A[Claude Code] --> B[MCPサーバー] B --> C[GitHub] B --> D[Notion] B --> E[Figma] B --> F[Database] B --> G[Sentry] B --> H[Slack] C --> C1[Issue管理] C --> C2[PR作成] D --> D1[ドキュメント参照] E --> E1[デザイン取得] F --> F1[データクエリ] G --> G1[エラー分析] H --> H1[通知送信]

MCP注意点

重要: MCPツールを有効にしすぎると、200Kのコンテキストウィンドウが70K程度まで縮小することがあります。

  • 20-30個設定しても問題なし
  • プロジェクトごとに有効化は10個以下
  • アクティブツール数は80以下に

カスタムスラッシュコマンド

.claude/commands/フォルダにMarkdownファイルを追加すると、カスタムコマンドを作成できます。

コマンド作成例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!-- .claude/commands/fix-issue.md -->
---
name: fix-issue
description: GitHub issueを修正する
---

GitHub issue $ARGUMENTS を分析して修正してください。

1. `gh issue view` でissueの詳細を取得
2. 問題を理解
3. 関連ファイルをコードベースから検索
4. 修正を実装
5. テストを書いて実行
6. リントと型チェックを通過させる
7. 説明的なコミットメッセージを作成
8. プッシュしてPRを作成

使用方法:

> /fix-issue 1234

スキルとサブエージェント

スキル(Skills)

スキルは、特定のタスク用の知識やワークフローを定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!-- .claude/skills/api-conventions/SKILL.md -->
---
name: api-conventions
description: REST API設計規約
---

# API規約
- URLパスはkebab-caseを使用
- JSONプロパティはcamelCaseを使用
- リストエンドポイントには必ずページネーションを含める
- APIバージョンはURLパスに含める (/v1/, /v2/)

カスタムサブエージェント

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<!-- .claude/agents/security-reviewer.md -->
---
name: security-reviewer
description: セキュリティ脆弱性をレビュー
tools: Read, Grep, Glob, Bash
model: opus
---

あなたはシニアセキュリティエンジニアです。以下の観点でコードをレビューしてください:
- インジェクション脆弱性(SQL, XSS, コマンドインジェクション)
- 認証・認可の欠陥
- コード内のシークレットや認証情報
- 安全でないデータ処理

具体的な行番号と修正提案を提示してください。

使用方法:

> サブエージェントを使ってこのコードのセキュリティ問題をレビューして

プラグイン

プラグインは、スキル、フック、サブエージェント、MCPサーバーをパッケージ化したものです。

プラグインのインストール

> /plugin

プラグインマーケットプレイスから選択してインストールできます。

プラグイン構造

plugin-name/
├── .claude-plugin/
│   └── plugin.json    # プラグインメタデータ
├── commands/          # スラッシュコマンド
├── agents/            # サブエージェント
├── skills/            # スキル
├── hooks/             # フック
├── .mcp.json          # MCP設定
└── README.md

並列実行とヘッドレスモード

ヘッドレスモード

CI/CD、pre-commitフック、自動化スクリプトで使用します。

1
2
3
4
5
6
7
8
# 単発クエリ
claude -p "このプロジェクトが何をするか説明して"

# JSON出力
claude -p "すべてのAPIエンドポイントをリストして" --output-format json

# ストリーミング
claude -p "このログファイルを分析して" --output-format stream-json

ファイル一括処理

1
2
3
4
5
6
7
8
# マイグレーション対象ファイルのリストを生成
claude -p "マイグレーションが必要なPythonファイルを全てリストして" > files.txt

# 各ファイルを処理
for file in $(cat files.txt); do
  claude -p "$file をReactからVueにマイグレーションして。OKまたはFAILを返して。" \
    --allowedTools "Edit,Bash(git commit:*)"
done

Writer/Reviewerパターン

セッションA(Writer)セッションB(Reviewer)
APIエンドポイントにレートリミッターを実装して
@src/middleware/rateLimiter.tsのレートリミッター実装をレビューして。エッジケース、競合状態、既存のミドルウェアパターンとの一貫性を確認して
レビューのフィードバック: [セッションBの出力]。これらの問題を修正して

避けるべきパターン

1. キッチンシンクセッション

一つのタスクを始めて、無関係なことを聞いて、最初のタスクに戻る。コンテキストが無関係な情報で埋まります。

対策: タスク間で/clearを使用

2. 繰り返し修正

Claudeが間違えて、修正して、また間違えて、また修正。コンテキストが失敗アプローチで汚染されます。

対策: 2回失敗したら/clearして、学んだことを含めた新しいプロンプトで再開

3. 過剰なCLAUDE.md

CLAUDE.mdが長すぎると、重要なルールがノイズに埋もれて無視されます。

対策: 定期的に剪定。Claudeが既に正しくやっていることは削除またはフックに変換

4. 信頼後検証ギャップ

Claudeが妥当に見える実装を出すが、エッジケースを処理していない。

対策: 常に検証手段(テスト、スクリプト、スクリーンショット)を提供。検証できないものは出荷しない

5. 無限探索

スコープを定めずに「調査して」と依頼。Claudeが何百ものファイルを読んでコンテキストが埋まる。

対策: 調査範囲を狭く限定、またはサブエージェントを使用


便利なキーボードショートカット

ショートカット動作
EscClaudeを停止(コンテキスト保持)
Esc × 2巻き戻しメニュー
Ctrl + V画像を貼り付け(Command+Vではない)
Ctrl + O詳細出力モード切替
Tabファイルパス補完

GitHub Actions連携

Claude CodeはGitHub Actionsと統合でき、バックグラウンドで自動的にコード作業を行えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# .github/workflows/claude-code.yml
name: Claude Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Code Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "このPRの変更をレビューして、問題点があればコメントして"

まとめ

重要ポイントの振り返り

graph TB A[Claude Code
ベストプラクティス] --> B[コンテキスト管理] A --> C[検証の提供] A --> D[CLAUDE.mdの活用] A --> E[セッション管理] A --> F[自動化と拡張] B --> B1[/clearを頻繁に] B --> B2[サブエージェント活用] B --> B3[MCPツールを絞る] C --> C1[テストコード] C --> C2[スクリーンショット] C --> C3[期待出力] D --> D1[簡潔に保つ] D --> D2[推測できないことのみ] D --> D3[定期的に剪定] E --> E1[早期軌道修正] E --> E2[2回失敗したら/clear] E --> E3[計画→実装] F --> F1[フック] F --> F2[MCP] F --> F3[プラグイン]

今後の展望

2026年のClaude Codeは、Swarming機能(複数エージェントの協調動作)の強化が予定されています。並列実行パターンを早期に習得しておくことで、今後の機能強化に備えることができます。


参考リンク


更新履歴:

  • 2026-01-26: 初版作成(2025-2026年の最新情報を反映)