Skip to content
Published on

Claude Code完全ガイド:サブエージェント、フック、Agent SDK — エージェンティックコーディングのすべて

Authors

はじめに:エージェンティックコーディングの時代(じだい)

2025年(ねん)は、AIコーディングのパラダイムが根本的(こんぽんてき)に変(か)わった年(とし)です。単純(たんじゅん)なコード自動補完(じどうほかん)を超(こ)え、AIが自律的(じりつてき)にコードベースを探索(たんさく)し、計画(けいかく)を立(た)て、ファイルを編集(へんしゅう)し、テストを実行(じっこう)する**エージェンティックコーディング(Agentic Coding)**の時代(じだい)が本格的(ほんかくてき)に幕(まく)を開(あ)けました。

AnthropicのClaude Codeは、このパラダイムの最前線(さいぜんせん)に立(た)つツールです。ターミナルネイティブのインターフェースで動作(どうさ)し、プロジェクト全体(ぜんたい)のコンテキストを理解(りかい)し、開発者(かいはつしゃ)のワークフローに自然(しぜん)に統合(とうごう)されます。単(たん)なるチャットボットではなく、真(しん)の意味(いみ)でのコーディングエージェントです。

このガイドでは、Claude Codeの中核(ちゅうかく)機能(きのう)からサブエージェント、フックシステム、Agent SDK、MCPサーバー連携(れんけい)まで — エージェンティックコーディングのすべてをカバーします。

対象読者(たいしょうどくしゃ): AIコーディングツールに関心(かんしん)のある開発者(かいはつしゃ)、チームリーダー、DevOpsエンジニア。基本的(きほんてき)なターミナル操作(そうさ)とGitの知識(ちしき)を前提(ぜんてい)とします。


1. Claude Codeとは何(なに)か

1.1 中核(ちゅうかく)コンセプト

Claude Codeは、Anthropicが開発(かいはつ)したターミナルベースのエージェンティックコーディングツールです。IDEプラグインではなく、ターミナルで直接(ちょくせつ)実行(じっこう)され、3つの中核(ちゅうかく)能力(のうりょく)を持(も)っています。

能力(のうりょく)説明(せつめい)例(れい)
コードベース読(よ)み取(と)りプロジェクト全体(ぜんたい)の構造(こうぞう)とファイルを理解(りかい)依存関係(いぞんかんけい)分析(ぶんせき)、アーキテクチャ把握(はあく)
ファイル編集(へんしゅう)コード修正(しゅうせい)、作成(さくせい)、削除(さくじょ)の実行(じっこう)バグ修正(しゅうせい)、リファクタリング、新機能(しんきのう)追加(ついか)
コマンド実行(じっこう)シェルコマンドを直接(ちょくせつ)実行(じっこう)テスト実行(じっこう)、ビルド、Git操作(そうさ)

重要(じゅうよう)な差別化(さべつか)ポイントはコンテキストの深(ふか)さです。Claude Codeは単一(たんいつ)ファイルだけでなく、プロジェクト全体(ぜんたい)を理解(りかい)します。ディレクトリ構造(こうぞう)、依存関係(いぞんかんけい)、コーディング規約(きやく)、Git履歴(りれき)まですべて把握(はあく)した状態(じょうたい)で作業(さぎょう)します。

1.2 ターミナルファースト哲学(てつがく)

Claude Codeがターミナルを選(えら)んだ理由(りゆう)は明確(めいかく)です。

  • 最大(さいだい)の柔軟性(じゅうなんせい): どんなエディター、どんなワークフローとも結合(けつごう)可能(かのう)
  • 自動化(じどうか)との親和性(しんわせい): スクリプト、CI/CDパイプラインに統合(とうごう)可能(かのう)
  • 低(ひく)いオーバーヘッド: 追加(ついか)のIDE不要(ふよう)、SSH環境(かんきょう)でも動作(どうさ)
  • 透明性(とうめいせい): すべてのコマンドとファイル変更(へんこう)がターミナルに表示(ひょうじ)
# Claude Code 基本実行
claude

# 特定のプロンプトで実行
claude "このプロジェクトのアーキテクチャを分析してください"

# パイプラインモード
cat error.log | claude "このエラーの原因を分析して修正してください"

1.3 動作(どうさ)の仕組(しく)み

Claude Codeのワークフローは以下(いか)の通(とお)りです。

  1. コンテキスト収集(しゅうしゅう): プロジェクト構造(こうぞう)、CLAUDE.mdファイル、Git状態(じょうたい)の把握(はあく)
  2. 計画(けいかく)策定(さくてい): ユーザーリクエストを分析(ぶんせき)し、作業計画(さぎょうけいかく)を作成(さくせい)
  3. ツール使用(しよう): ファイル読(よ)み書(か)き、コマンド実行(じっこう)、検索(けんさく)などのツール活用(かつよう)
  4. 検証(けんしょう): 変更(へんこう)の確認(かくにん)、テスト実行(じっこう)
  5. フィードバックループ: 結果(けっか)に基(もと)づく追加修正(ついかしゅうせい)

このプロセス全体(ぜんたい)を通(つう)じて、ユーザーは各(かく)ステップを確認(かくにん)し承認(しょうにん)できます。自律性(じりつせい)と制御(せいぎょ)のバランスがClaude Codeの設計(せっけい)哲学(てつがく)です。


2. Claude Code vs Cursor vs GitHub Copilot 比較(ひかく)

エージェンティックコーディングツール市場(しじょう)の主要(しゅよう)3プレイヤーを比較(ひかく)します。

2.1 機能(きのう)比較表(ひかくひょう)

機能(きのう)Claude CodeCursorGitHub Copilot
インターフェースターミナル (CLI)IDE (VS Code フォーク)IDE プラグイン
コードベース理解(りかい)プロジェクト全体(ぜんたい)プロジェクト全体(ぜんたい)ファイル/タブ単位(たんい)
ファイル編集(へんしゅう)直接(ちょくせつ)編集(へんしゅう)直接(ちょくせつ)編集(へんしゅう)提案(ていあん)ベース
コマンド実行(じっこう)可能(かのう)限定的(げんていてき)不可(ふか)
エージェントモードネイティブComposer AgentAgent モード (プレビュー)
サブエージェント並列(へいれつ)サブエージェント未対応(みたいおう)未対応(みたいおう)
フックシステム内蔵(ないぞう)フック未対応(みたいおう)未対応(みたいおう)
カスタムエージェントAgent SDK未対応(みたいおう)Extensions
MCPサポートネイティブサポート限定的(げんていてき)
自動化(じどうか)/CI統合(とうごう)優秀(ゆうしゅう)限定的(げんていてき)GitHub Actions
マルチリポワークツリーサポート限定的(げんていてき)未対応(みたいおう)
料金(りょうきん)API使用量(しようりょう)ベース月(つき)20ドル / 40ドル月(つき)10ドル / 19ドル

2.2 どのツールを選(えら)ぶべきか

Claude Codeが適(てき)している場合(ばあい):

  • 大規模(だいきぼ)コードベースで複雑(ふくざつ)なリファクタリングが必要(ひつよう)な時(とき)
  • CI/CDパイプラインにAIを統合(とうごう)したい時(とき)
  • 複数(ふくすう)ファイルにまたがる変更(へんこう)が頻繁(ひんぱん)な時(とき)
  • カスタムエージェントでチームワークフローを自動化(じどうか)したい時(とき)

Cursorが適(てき)している場合(ばあい):

  • ビジュアルIDE環境(かんきょう)を好(この)む時(とき)
  • コーディング中(ちゅう)のリアルタイム提案(ていあん)が重要(じゅうよう)な時(とき)
  • VS Code エコシステムに慣(な)れている時(とき)

GitHub Copilotが適(てき)している場合(ばあい):

  • 既存(きそん)のIDEで軽(かる)く始(はじ)めたい時(とき)
  • インライン自動補完(じどうほかん)が主(しゅ)な用途(ようと)の時(とき)
  • GitHubエコシステムとの緊密(きんみつ)な統合(とうごう)が必要(ひつよう)な時(とき)

3. インストールと初期(しょき)設定(せってい)

3.1 インストール

Claude Codeのインストールはnpmで簡単(かんたん)です。

# Node.js 18以上が必要
npm install -g @anthropic-ai/claude-code

# または特定のディレクトリでnpxで実行
npx @anthropic-ai/claude-code

インストール後(ご)、認証(にんしょう)を行(おこな)います。

# 初回実行時に認証プロセスが開始
claude

# Anthropicアカウントまたは APIキーで認証
# ブラウザが開き認証完了

3.2 VS Code拡張(かくちょう)

Claude Codeはターミナルツールですが、VS Code拡張(かくちょう)も提供(ていきょう)しています。

# VS Code拡張のインストール
code --install-extension anthropic.claude-code

VS Code拡張(かくちょう)の利点(りてん):

  • エディター内(ない)でClaude Codeパネルを使用(しよう)
  • diffビューでファイル変更(へんこう)を確認(かくにん)
  • インラインコメントで特定(とくてい)コードについて質問(しつもん)

3.3 基本(きほん)設定(せってい)

# 設定の確認
claude config list

# モデル設定 (デフォルト: claude-sonnet-4-20250514)
claude config set model claude-sonnet-4-20250514

# 権限設定
claude config set permissions.allow-edit true
claude config set permissions.allow-exec true

# 自動承認パターンの設定
claude config set permissions.auto-approve-commands "npm test,npm run lint"

3.4 ターミナル環境(かんきょう)のヒント

# tmuxセッションでClaude Codeを実行(長時間の作業に有用)
tmux new-session -s claude
claude

# 作業ログの保存
claude --output-dir ./claude-logs

# 非対話モード(スクリプトで使用)
claude -p "README.mdを更新してください" --yes

4. CLAUDE.mdのマスター

4.1 CLAUDE.mdとは

CLAUDE.mdは、**プロジェクトのコンテキスト、規約(きやく)、指示(しじ)事項(じこう)**をClaude Codeに伝(つた)えるマークダウンファイルです。Claude Codeがプロジェクトを開始(かいし)する時(とき)に自動的(じどうてき)に読(よ)み込(こ)まれ、AIがプロジェクトの「ルール」を理解(りかい)するための中核(ちゅうかく)メカニズムです。

4.2 CLAUDE.mdの階層(かいそう)構造(こうぞう)

CLAUDE.mdは複数(ふくすう)の場所(ばしょ)に存在(そんざい)でき、階層的(かいそうてき)に適用(てきよう)されます。

場所(ばしょ)範囲(はんい)用途(ようと)
~/.claude/CLAUDE.mdグローバルすべてのプロジェクトに適用(てきよう)される共通(きょうつう)ルール
プロジェクトルート CLAUDE.mdプロジェクト全体(ぜんたい)アーキテクチャ、技術(ぎじゅつ)スタック、ルール
サブディレクトリ CLAUDE.mdそのディレクトリモジュール別(べつ)の特殊(とくしゅ)ルール
.claude/CLAUDE.md個人(こじん)個人設定(こじんせってい)(Gitに含(ふく)まれない)

4.3 効果的(こうかてき)なCLAUDE.mdの書(か)き方(かた)

# プロジェクト概要

このプロジェクトはNext.js 14ベースのブログプラットフォームです。
TypeScriptを使用し、Tailwind CSSでスタイリングしています。

# 技術スタック

- Framework: Next.js 14 (App Router)
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS
- Database: PostgreSQL + Prisma ORM
- Testing: Jest + React Testing Library

# コーディング規約

- コンポーネント: 関数コンポーネント + アロー関数を使用
- 命名規則: camelCase (変数/関数), PascalCase (コンポーネント/型)
- import順序: 外部ライブラリ > 内部モジュール > 相対パス
- エラーハンドリング: try-catchの代わりにResult型パターンを使用

# テストルール

- すべての新しい関数にユニットテスト必須
- テストコマンド: npm test
- リントコマンド: npm run lint
- PR前に必ず npm run build の成功を確認

# 禁止パターン

- any型の使用禁止
- console.logの使用禁止(loggerを使用)
- ハードコードされた文字列禁止(定数ファイルを使用)

# ディレクトリ構造

src/
app/ - Next.js App Router ページ
components/ - 再利用可能なコンポーネント
lib/ - ユーティリティ、ヘルパー関数
types/ - TypeScript型定義
hooks/ - カスタムReact フック

4.4 CLAUDE.mdの高度(こうど)なパターン

条件付(じょうけんつ)き指示(しじ):

# ファイル別ルール

- /src/api/ 配下のファイル修正時: 必ずAPIドキュメントも更新
- /src/components/ 配下のファイル修正時: Storybookストーリーも更新
- データベーススキーマ変更時: マイグレーションファイルを自動生成

ワークフロー指示(しじ):

# 作業順序

1. まず関連コードを探索して理解する
2. 実装計画を説明する
3. 変更を実装する
4. テストを実行して確認する
5. 関連ドキュメントを更新する

4.5 CLAUDE.md管理(かんり)コマンド

# 会話中にCLAUDE.mdに追加
claude /add-memory "APIレスポンスは常にsnake_caseを使用します"

# 現在適用されているメモリの確認
claude /memory

# プロジェクト初期化時にCLAUDE.mdを自動生成
claude /init

5. コアワークフロー

5.1 探索(たんさく) - 計画(けいかく) - 実装(じっそう) - 検証(けんしょう) サイクル

Claude Codeの基本(きほん)的(てき)な作業(さぎょう)サイクルは4段階(だんかい)です。

第(だい)1段階(だんかい): 探索(たんさく)(Explore)

> このプロジェクトの認証システム構造を分析してください

Claude Codeが行う作業:
- プロジェクトディレクトリ構造のスキャン
- auth関連ファイルの検索 (grep, glob)
- 依存関係の分析 (package.json, importの追跡)
- 設定ファイルの確認

第(だい)2段階(だんかい): 計画(けいかく)(Plan)

> JWTトークン更新ロジックにリフレッシュトークンローテーションを追加したい

Claude Codeが行う作業:
- 現在のトークン更新ロジックの分析
- 変更が必要なファイル一覧の提示
- 実装計画の説明
- 予想される影響範囲の分析

第(だい)3段階(だんかい): 実装(じっそう)(Implement)

ユーザーが計画(けいかく)を承認(しょうにん)すると、Claude Codeがコードを直接(ちょくせつ)修正(しゅうせい)します。各(かく)ファイル変更前(へんこうまえ)にdiffを表示(ひょうじ)し、承認(しょうにん)を求(もと)めます。

第(だい)4段階(だんかい): 検証(けんしょう)(Verify)

> 変更を検証してください

Claude Codeが行う作業:
- npm test の実行
- リントチェック
- 型チェック
- ビルドの確認

5.2 実践(じっせん)シナリオ: バグ修正(しゅうせい)

# エラーログをパイプで渡す
cat error.log | claude "このエラーを分析して修正してください"

# Claude Codeのワークフロー:
# 1. エラーメッセージの分析
# 2. 関連ソースコードの検索
# 3. 原因の特定
# 4. 修正コードの作成
# 5. テスト実行で修正の確認

5.3 実践(じっせん)シナリオ: 新機能(しんきのう)追加(ついか)

> ユーザープロフィールページにアクティビティ履歴タイムラインを追加してください。
> 過去30日間のアクティビティを時系列で表示し、
> 無限スクロールで以前のアクティビティをロードできるようにしてください。

Claude Codeの作業:
1. 既存のプロフィールページコードの分析
2. アクティビティデータAPIエンドポイントの確認/作成
3. タイムラインコンポーネントの実装
4. 無限スクロールロジックの実装
5. スタイリング
6. テストの作成と実行

5.4 Gitワークフロー統合(とうごう)

# 現在の変更でコミットを作成
claude commit

# PRの作成
claude "現在のブランチの変更でPRを作成してください"

# コードレビュー
claude "PR #42の変更をレビューしてください"

# マージコンフリクトの解決
claude "現在のマージコンフリクトを解決してください"

6. サブエージェント ディープダイブ

6.1 サブエージェントとは

サブエージェントはClaude Codeの最(もっと)も強力(きょうりょく)な機能(きのう)の一(ひと)つです。メインエージェントが複雑(ふくざつ)なタスクを複数(ふくすう)の独立(どくりつ)したサブタスクに分割(ぶんかつ)し、**並列(へいれつ)**で実行(じっこう)します。

メインエージェント(オーケストレーター)
├── サブエージェント 1: APIエンドポイント実装
├── サブエージェント 2: フロントエンドコンポーネント作成
├── サブエージェント 3: データベースマイグレーション
└── サブエージェント 4: テストコード作成

6.2 サブエージェントの仕組(しく)み

サブエージェントには以下(いか)の特性(とくせい)があります。

特性(とくせい)説明(せつめい)
独立(どくりつ)コンテキスト各(かく)サブエージェントが独自(どくじ)のコンテキストウィンドウを持(も)つ
並列実行(へいれつじっこう)複数(ふくすう)のサブエージェントが同時(どうじ)に作業(さぎょう)
結果統合(けっかとうごう)メインエージェントがサブエージェントの結果(けっか)を統合(とうごう)
障害分離(しょうがいぶんり)1つの失敗(しっぱい)が他(ほか)の作業(さぎょう)に影響(えいきょう)しない
読(よ)み取(と)り専用(せんよう)オプション分析(ぶんせき)/探索用(たんさくよう)サブエージェントは読(よ)み取(と)り専用(せんよう)で実行(じっこう)可能(かのう)

6.3 サブエージェント活用(かつよう)パターン

パターン1: 大規模(だいきぼ)リファクタリング

> プロジェクト全体でクラスコンポーネントを関数コンポーネントに変換してください

メインエージェントの作業:
1. クラスコンポーネントを使用する全ファイルの検索
2. ファイルをグループに分割
3. 各グループをサブエージェントに割り当て
4. サブエージェントが並列で変換を実行
5. 結果の統合とテスト

パターン2: マルチファイル分析(ぶんせき)

> このプロジェクトのセキュリティ脆弱性を分析してください

サブエージェント 1: 認証/認可コードの分析
サブエージェント 2: SQLインジェクションの可能性チェック
サブエージェント 3: XSS脆弱性のチェック
サブエージェント 4: 依存関係のセキュリティ監査

パターン3: コード生成(せいせい) + テスト

> ユーザー管理のCRUD APIを作成してください

サブエージェント 1: APIルートとコントローラーの生成
サブエージェント 2: データモデルとマイグレーションの生成
サブエージェント 3: 統合テストの作成
サブエージェント 4: APIドキュメントの生成

6.4 バックグラウンドエージェント

Claude Codeはバックグラウンドで作業(さぎょう)を継続(けいぞく)できます。

# バックグラウンドエージェントの開始
claude --background "テストカバレッジを80%以上に引き上げてください"

# バックグラウンドエージェントの状態確認
claude --list-backgrounds

# 結果の確認
claude --resume <session-id>

バックグラウンドエージェントの活用(かつよう)例(れい):

  • 長時間(ちょうじかん)のリファクタリング作業(さぎょう)
  • 大規模(だいきぼ)コードマイグレーション
  • テストカバレッジの向上(こうじょう)
  • ドキュメンテーション作業(さぎょう)

6.5 ワークツリーを活用(かつよう)した並列(へいれつ)作業(さぎょう)

Gitワークツリーと組(く)み合(あ)わせると、より強力(きょうりょく)な並列作業(へいれつさぎょう)が可能(かのう)です。

# ワークツリーを作成して独立した作業を実行
claude "ワークツリーを作成して、feature-authブランチで認証モジュールをリファクタリングしてください"

# メインブランチでは別の作業を継続
claude "バグ修正を続けてください"

ワークツリーの利点(りてん):

  • 隔離(かくり)された作業環境(さぎょうかんきょう): メインコードに影響(えいきょう)なく実験(じっけん)可能(かのう)
  • 並列開発(へいれつかいはつ): 複数(ふくすう)の機能(きのう)を同時(どうじ)に開発(かいはつ)
  • 安全(あんぜん)な実験(じっけん): 失敗(しっぱい)してもワークツリーを削除(さくじょ)するだけ

7. フック(Hooks)システム

7.1 フックとは

フックは、Claude Codeの特定(とくてい)のイベントに反応(はんのう)して自動的(じどうてき)に実行(じっこう)されるカスタムアクションです。開発(かいはつ)ワークフローを自動化(じどうか)するための中核(ちゅうかく)メカニズムです。

7.2 フックの種類(しゅるい)

フックイベントトリガータイミング活用例(かつようれい)
PreToolUseツール実行前(じっこうまえ)危険(きけん)なコマンドのブロック、ファイルバックアップ
PostToolUseツール実行後(じっこうご)自動(じどう)フォーマット、リント実行(じっこう)
Notification通知発生時(つうちはっせいじ)Slack通知(つうち)、メール送信(そうしん)
Stopエージェント終了時(しゅうりょうじ)最終検証(さいしゅうけんしょう)、レポート生成(せいせい)

7.3 フックの設定方法(せっていほうほう)

フックは .claude/settings.json ファイルで設定(せってい)します。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit",
        "command": "cp \"$CLAUDE_FILE_PATH\" \"$CLAUDE_FILE_PATH.bak\" 2>/dev/null || true"
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
      },
      {
        "matcher": "Write",
        "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\""
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "command": "terminal-notifier -message \"$CLAUDE_NOTIFICATION\" -title \"Claude Code\""
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "command": "npm test 2>&1 | tail -20"
      }
    ]
  }
}

7.4 実践(じっせん)フックレシピ

レシピ1: 自動(じどう)テスト実行(じっこう)

ファイルが修正(しゅうせい)されるたびに関連(かんれん)テストを自動(じどう)で実行(じっこう)します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit",
        "command": "if [[ \"$CLAUDE_FILE_PATH\" == *.ts ]]; then npx jest --findRelatedTests \"$CLAUDE_FILE_PATH\" --passWithNoTests; fi"
      }
    ]
  }
}

レシピ2: 自動(じどう)フォーマットパイプライン

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" && npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
      }
    ]
  }
}

レシピ3: セキュリティガードレール

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "if echo \"$CLAUDE_COMMAND\" | grep -qE 'rm -rf|DROP TABLE|DELETE FROM'; then echo 'BLOCKED: 危険なコマンドが検出されました' && exit 1; fi"
      }
    ]
  }
}

レシピ4: 変更(へんこう)ロギング

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "echo \"$(date): $CLAUDE_FILE_PATH modified\" >> .claude/change.log"
      }
    ]
  }
}

7.5 フックのデバッグ

# フック実行ログの確認
claude --verbose

# 特定フックの無効化
claude config set hooks.PostToolUse.enabled false

# フックをスキップ(一時的)
claude --no-hooks

8. Agent SDK

8.1 Agent SDKの概要(がいよう)

Agent SDKは、Claude Codeのコア機能(きのう)をプログラム的(てき)に使用(しよう)できるようにする開発(かいはつ)キットです。これによりカスタムAIエージェントを構築(こうちく)できます。

import { AgentSDK } from '@anthropic-ai/claude-code-sdk'

const agent = new AgentSDK({
  model: 'claude-sonnet-4-20250514',
  permissions: {
    fileRead: true,
    fileWrite: true,
    commandExec: ['npm test', 'npm run lint'],
  },
})

8.2 コアコンセプト

コンセプト説明(せつめい)
セッション(Session)エージェントとの会話(かいわ)コンテキスト
ツール(Tools)エージェントが使用(しよう)できる機能(きのう)
権限(けんげん)(Permissions)エージェントの作業範囲(さぎょうはんい)の制限(せいげん)
イベント(Events)エージェント作業中(さぎょうちゅう)に発生(はっせい)するイベント

8.3 カスタムエージェントの構築例(こうちくれい)

例(れい)1: コードレビューエージェント

import { AgentSDK } from '@anthropic-ai/claude-code-sdk'

async function createCodeReviewAgent() {
  const agent = new AgentSDK({
    model: 'claude-sonnet-4-20250514',
    systemPrompt: `あなたはシニアコードレビュアーです。
    以下の観点からコードをレビューします:
    1. セキュリティ脆弱性
    2. パフォーマンスの問題
    3. コーディング規約の遵守
    4. テストカバレッジ`,
    permissions: {
      fileRead: true,
      fileWrite: false,
      commandExec: ['git diff'],
    },
  })

  const session = await agent.createSession()
  const result = await session.send('現在のPRの変更をレビューしてください')

  console.log(result.response)
  console.log('検出された問題:', result.issues)
}

例(れい)2: 自動(じどう)ドキュメンテーションエージェント

async function createDocAgent() {
  const agent = new AgentSDK({
    model: 'claude-sonnet-4-20250514',
    systemPrompt: `関数とモジュールのJSDoc/TSDocドキュメントを自動生成します。
    既存のドキュメントがあれば更新し、なければ新規作成します。`,
    permissions: {
      fileRead: true,
      fileWrite: true,
      commandExec: ['npm run build'],
    },
  })

  const session = await agent.createSession()
  await session.send('src/lib/ ディレクトリの全exportされた関数にドキュメントを追加してください')
}

例(れい)3: データベースマイグレーションエージェント

async function createMigrationAgent() {
  const agent = new AgentSDK({
    model: 'claude-sonnet-4-20250514',
    systemPrompt: `Prismaマイグレーションを管理する専門エージェントです。
    スキーマ変更を分析し、安全なマイグレーションを生成します。`,
    permissions: {
      fileRead: true,
      fileWrite: true,
      commandExec: ['npx prisma migrate dev', 'npx prisma generate', 'npx prisma db push'],
    },
  })

  const session = await agent.createSession()
  await session.send(
    'UserモデルにprofileImageフィールドを追加するマイグレーションを作成してください'
  )
}

8.4 イベントハンドリング

const session = await agent.createSession()

session.on('toolUse', (event) => {
  console.log(`ツール使用: ${event.tool} - ${event.description}`)
})

session.on('fileChange', (event) => {
  console.log(`ファイル変更: ${event.path} - ${event.type}`)
})

session.on('commandExec', (event) => {
  console.log(`コマンド実行: ${event.command}`)
  console.log(`結果: ${event.output}`)
})

session.on('error', (event) => {
  console.error(`エラー発生: ${event.message}`)
})

8.5 権限(けんげん)モデル

セキュリティはAgent SDKの中核的(ちゅうかくてき)な設計原則(せっけいげんそく)です。

const agent = new AgentSDK({
  permissions: {
    // ファイルアクセス制御
    fileRead: true,
    fileWrite: true,
    fileGlob: ['src/**/*.ts', 'tests/**/*.ts'], // 許可パターン
    fileExclude: ['*.env', 'secrets/**'], // ブロックパターン

    // コマンド実行制御
    commandExec: ['npm test', 'npm run lint', 'npx prisma migrate dev'],

    // ネットワークアクセス制御
    networkAccess: false,

    // MCPサーバーアクセス
    mcpServers: ['filesystem', 'database'],
  },
})

9. MCPサーバー連携(れんけい)

9.1 MCP(Model Context Protocol)とは

MCPは、AIモデルが外部(がいぶ)ツールやデータソースにアクセスできるようにする標準(ひょうじゅん)プロトコルです。Claude CodeはMCPをネイティブでサポートし、様々(さまざま)な外部(がいぶ)システムとの連携(れんけい)を可能(かのう)にします。

Claude Code <--MCP--> データベースサーバー
Claude Code <--MCP--> GitHub API
Claude Code <--MCP--> Slack API
Claude Code <--MCP--> ファイルシステム
Claude Code <--MCP--> カスタムAPI

9.2 MCPサーバーの設定(せってい)

プロジェクトレベルで .claude/settings.json にMCPサーバーを登録(とうろく)します。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxxxxxxxxxxx"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
      }
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_TOKEN": "xoxb-xxxxxxxxxxxx"
      }
    }
  }
}

9.3 人気(にんき)MCPサーバー一覧(いちらん)

MCPサーバー用途(ようと)提供機能(ていきょうきのう)
filesystemファイルシステムファイル読(よ)み書(か)き、ディレクトリ探索(たんさく)
githubGitHub連携(れんけい)PR、Issue、コード検索(けんさく)、レビュー
postgresPostgreSQLクエリ実行(じっこう)、スキーマ照会(しょうかい)
sqliteSQLiteローカルDB操作(そうさ)
slackSlack連携(れんけい)メッセージ送信(そうしん)、チャンネル照会(しょうかい)
puppeteerWebブラウザWebスクレイピング、E2Eテスト
memory永続(えいぞく)メモリセッション間(かん)データ保持(ほじ)
brave-searchWeb検索(けんさく)リアルタイムWeb検索(けんさく)
sentryエラー追跡(ついせき)エラーログ照会(しょうかい)、分析(ぶんせき)
linearプロジェクト管理(かんり)イシュー追跡(ついせき)、スプリント管理(かんり)

9.4 カスタムMCPサーバーの構築(こうちく)

自社(じしゃ)APIや社内(しゃない)システムを連携(れんけい)するためにカスタムMCPサーバーを構築(こうちく)できます。

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

const server = new McpServer({
  name: 'my-internal-api',
  version: '1.0.0',
})

// ツール定義
server.tool(
  'getDeployStatus',
  'デプロイステータスを取得',
  {
    environment: { type: 'string', enum: ['staging', 'production'] },
  },
  async (params) => {
    const status = await fetchDeployStatus(params.environment)
    return {
      content: [
        {
          type: 'text',
          text: JSON.stringify(status, null, 2),
        },
      ],
    }
  }
)

server.tool(
  'triggerDeploy',
  'デプロイをトリガー',
  {
    environment: { type: 'string' },
    version: { type: 'string' },
  },
  async (params) => {
    const result = await triggerDeploy(params.environment, params.version)
    return {
      content: [
        {
          type: 'text',
          text: `デプロイがトリガーされました: ${result.id}`,
        },
      ],
    }
  }
)

// サーバー起動
const transport = new StdioServerTransport()
await server.connect(transport)

9.5 MCPサーバーの活用(かつよう)シナリオ

シナリオ1: データベース連携(れんけい)開発(かいはつ)

> usersテーブルのスキーマを確認して、新しいAPIエンドポイントを作成してください

Claude Codeの作業:
1. MCP postgresサーバーでスキーマを照会
2. 既存のAPIパターンを分析
3. 新しいエンドポイントのコードを生成
4. マイグレーションファイルを生成
5. テストを作成

シナリオ2: GitHub連携(れんけい)ワークフロー

> 最近オープンされたissueの中でbugラベルがあるものを確認し、
> 最も優先度の高いものを修正してください

Claude Codeの作業:
1. MCP githubサーバーでissue一覧を照会
2. 優先度を分析
3. 関連コードの探索と修正
4. PRの作成

10. 高度(こうど)なパターン

10.1 マルチリポジトリ作業(さぎょう)

複数(ふくすう)のリポジトリにまたがる作業(さぎょう)を実行(じっこう)できます。

# モノレポ環境で
claude "packages/shared ライブラリの変更が packages/web と packages/api に
与える影響を分析し、必要な更新をすべて実行してください"

10.2 Gitワークツリーの活用(かつよう)

# 複数の機能を同時に開発
claude "ワークツリーを作成して、以下のタスクを並列で実行してください:
1. feature/auth - 認証モジュールのリファクタリング
2. feature/dashboard - ダッシュボードのパフォーマンス最適化
3. fix/memory-leak - メモリリークの修正"

10.3 スケジュールタスク

Claude Codeで繰(く)り返(かえ)しのタスクをスケジューリングできます。

# 毎朝のコード品質レポート生成
claude schedule --cron "0 9 * * *" "コード品質レポートを生成してSlackで共有してください"

# 毎週月曜日の依存関係更新チェック
claude schedule --cron "0 10 * * 1" "npm outdatedを確認して安全なアップデートを適用してください"

10.4 ヘッドレスモードとCI/CD統合(とうごう)

# GitHub Actionsの例
name: Claude Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Claude Code Review
        run: |
          npx @anthropic-ai/claude-code -p \
            "このPRの変更をレビューしてコメントを残してください" \
            --yes --output-format json
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

10.5 コンテキストウィンドウの最適化(さいてきか)

大規模(だいきぼ)プロジェクトでコンテキストを効率的(こうりつてき)に使(つか)うための戦略(せんりゃく)です。

  1. CLAUDE.mdでプロジェクトコンテキストを事前(じぜん)提供(ていきょう): 毎回(まいかい)探索(たんさく)する必要(ひつよう)なく核心(かくしん)情報(じょうほう)を提供(ていきょう)
  2. サブエージェントでコンテキストを分散(ぶんさん): 大(おお)きなタスクを小(ちい)さな独立(どくりつ)タスクに分割(ぶんかつ)
  3. /compact コマンドで会話(かいわ)を圧縮(あっしゅく): 長(なが)い会話(かいわ)で核心(かくしん)のみ保持(ほじ)
  4. ファイルフィルタリング: .claudeignore で不要(ふよう)なファイルを除外(じょがい)
# .claudeignore の例
node_modules/
dist/
.next/
coverage/
*.lock
*.log

11. 実際(じっさい)の事例(じれい)と生産性(せいさんせい)データ

11.1 Anthropic社内(しゃない)の使用(しよう)データ

Anthropic社内(しゃない)の開発(かいはつ)チームが共有(きょうゆう)したClaude Code使用(しよう)データです。

指標(しひょう)数値(すうち)
コード作成(さくせい)時間(じかん)の短縮(たんしゅく)約(やく)40-60%
コードレビュー時間(じかん)の短縮(たんしゅく)約(やく)30-50%
バグ修正(しゅうせい)平均(へいきん)時間(じかん)従来比(じゅうらいひ)50%削減(さくげん)
テストカバレッジの向上(こうじょう)平均(へいきん)15-20%増加(ぞうか)
日次(にちじ)コミット数(すう)平均(へいきん)2-3倍(ばい)増加(ぞうか)

11.2 事例(じれい)1: 大規模(だいきぼ)マイグレーション

状況(じょうきょう): Reactクラスコンポーネント200個(こ)を関数(かんすう)コンポーネントにマイグレーション

  • 手動(しゅどう)作業(さぎょう)の見積(みつも)り: 2-3週間(しゅうかん)(1人(にん)基準(きじゅん))
  • Claude Code活用(かつよう): 2日(にち)(サブエージェント並列処理(へいれつしょり))
  • 変換成功率(せいこうりつ): 95%(残(のこ)り5%は手動(しゅどう)レビュー)

11.3 事例(じれい)2: API統合(とうごう)開発(かいはつ)

状況(じょうきょう): 外部(がいぶ)決済(けっさい)API統合(とうごう)(Stripe)

  • Claude Codeが実行(じっこう)した作業(さぎょう):
    • APIドキュメントの分析(ぶんせき)(MCP brave-search活用(かつよう))
    • インターフェース型(かた)の定義(ていぎ)
    • サービスレイヤーの実装(じっそう)
    • Webhookハンドラーの実装(じっそう)
    • エラーハンドリング
    • 単体(たんたい)/統合(とうごう)テストの80%を作成(さくせい)
  • 所要時間(しょようじかん): 4時間(じかん)(手動(しゅどう)対比(たいひ)2-3日(にち))

11.4 事例(じれい)3: レガシーコードの現代化(げんだいか)

状況(じょうきょう): jQuery + PHPアプリをNext.js + TypeScriptに現代化(げんだいか)

  • CLAUDE.mdにマイグレーションルールを定義(ていぎ)
  • サブエージェントでコンポーネント別(べつ)に並列(へいれつ)変換(へんかん)
  • フックで自動(じどう)型(かた)チェックとテスト
  • 6週間(しゅうかん)のプロジェクトを2週間(しゅうかん)に短縮(たんしゅく)

11.5 生産性(せいさんせい)を最大化(さいだいか)するヒント

  1. CLAUDE.mdを詳細(しょうさい)に書(か)く: 投資対効果(とうしたいこうか)が最(もっと)も高(たか)い部分(ぶぶん)
  2. 小(ちい)さなタスクから始(はじ)める: バグ修正(しゅうせい)やテスト追加(ついか)で信頼(しんらい)を築(きず)いてから大(おお)きな作業(さぎょう)へ
  3. フックを積極的(せっきょくてき)に活用(かつよう)する: 繰(く)り返(かえ)しの検証作業(けんしょうさぎょう)を自動化(じどうか)
  4. サブエージェントを活用(かつよう)する: 大(おお)きなタスクは分割(ぶんかつ)して並列処理(へいれつしょり)
  5. 結果(けっか)を常(つね)に検証(けんしょう)する: AI出力(しゅつりょく)を盲信(もうしん)せずレビューする習慣(しゅうかん)

12. ヒントとトリック

12.1 キーボードショートカット

ショートカット機能(きのう)
Ctrl+C現在(げんざい)のタスクを中断(ちゅうだん)
Ctrl+Dセッション終了(しゅうりょう)
Esc現在(げんざい)の入力(にゅうりょく)をキャンセル
Tab自動補完(じどうほかん)
Up/Down以前(いぜん)のコマンドを参照(さんしょう)

12.2 スラッシュコマンド

/help          # ヘルプ
/clear         # 会話のクリア
/compact       # 会話内容の圧縮
/memory        # メモリ(CLAUDE.md)の確認
/add-memory    # メモリにルールを追加
/model         # モデルの変更
/cost          # 現在のセッションコストの確認
/diff          # 現在の変更の確認
/undo          # 最後の変更を元に戻す
/review        # コードレビューのリクエスト
/init          # プロジェクトの初期化
/bug           # バグレポート
/config        # 設定の変更

12.3 メモリシステムの活用(かつよう)

Claude Codeのメモリシステムはセッション間(かん)で学習(がくしゅう)した内容(ないよう)を保持(ほじ)します。

# 会話中にメモリを追加
/add-memory "このプロジェクトでAPIレスポンスは常にcamelCaseを使用します"
/add-memory "テストファイルは__tests__ディレクトリに配置されています"
/add-memory "Prismaマイグレーション後は常にnpx prisma generateを実行します"

12.4 効果的(こうかてき)なプロンプトの書(か)き方(かた)

悪(わる)いプロンプト:

ログイン機能を作ってください

良(よ)いプロンプト:

NextAuth.jsを使用してGoogle OAuthログイン機能を追加してください。
- /app/api/auth/[...nextauth]/route.ts に設定
- Google Providerを使用
- セッションにユーザーIDを含める
- ログイン/ログアウトボタンコンポーネントを作成
- 既存のNavbarコンポーネントに統合

12.5 デバッグ戦略(せんりゃく)

# 詳細ログモード
claude --verbose

# ツール使用ログ
claude --debug-tools

# セッション履歴のエクスポート
claude --export-session ./session-log.json

# 特定のモデルに切り替えて比較
claude --model claude-opus-4-20250514

12.6 コスト最適化(さいてきか)

# 現在のセッションコストの確認
/cost

# エコノミーモード(Haikuを使用)
claude --model claude-haiku

# 自動コストアラートの設定
claude config set cost.alert-threshold 5.00

13. クイズ

Claude Codeについてどれだけ理解(りかい)できたかテストしてみましょう。

Q1. Claude Codeの3つの中核(ちゅうかく)能力(のうりょく)は何(なん)ですか?

A1. Claude Codeの3つの中核(ちゅうかく)能力(のうりょく)は:

  1. コードベースの読(よ)み取(と)り: プロジェクト全体(ぜんたい)の構造(こうぞう)とファイルの理解(りかい)
  2. ファイル編集(へんしゅう): コードの修正(しゅうせい)、作成(さくせい)、削除(さくじょ)の実行(じっこう)
  3. コマンド実行(じっこう): シェルコマンドの直接(ちょくせつ)実行(じっこう)

この3つの能力(のうりょく)の組(く)み合(あ)わせにより、Claude Codeは単(たん)なるチャットボットではなく、真(しん)のコーディングエージェントとなります。

Q2. サブエージェントの4つの重要(じゅうよう)な特性(とくせい)は?

A2. サブエージェントの4つの重要(じゅうよう)な特性(とくせい):

  1. 独立(どくりつ)コンテキスト: 各(かく)サブエージェントが独自(どくじ)のコンテキストウィンドウを保持(ほじ)
  2. 並列実行(へいれつじっこう): 複数(ふくすう)のサブエージェントが同時(どうじ)に作業(さぎょう)
  3. 結果統合(けっかとうごう): メインエージェントが結果(けっか)を統合(とうごう)
  4. 障害分離(しょうがいぶんり): 1つの失敗(しっぱい)が他(ほか)のタスクに影響(えいきょう)しない
Q3. CLAUDE.mdの階層(かいそう)構造(こうぞう)で最(もっと)も優先度(ゆうせんど)が高(たか)いのはどれですか?

A3. サブディレクトリのCLAUDE.mdが最(もっと)も高(たか)い優先度(ゆうせんど)を持(も)ちます。階層(かいそう)は:

  1. グローバルCLAUDE.md(最(もっと)も低(ひく)い)
  2. プロジェクトルートCLAUDE.md
  3. サブディレクトリCLAUDE.md(最(もっと)も高(たか)い — そのディレクトリ内(ない)で)

より具体的(ぐたいてき)な場所(ばしょ)の設定(せってい)が一般的(いっぱんてき)な設定(せってい)をオーバーライドします。

Q4. MCP(Model Context Protocol)の役割(やくわり)と連携(れんけい)可能(かのう)な外部(がいぶ)システムは?

A4. MCPはAIモデルが外部(がいぶ)ツールやデータソースにアクセスできるようにする標準(ひょうじゅん)プロトコルです。連携(れんけい)可能(かのう)なシステム例(れい):

  • データベース: PostgreSQL、SQLite、MySQL
  • バージョン管理(かんり): GitHub、GitLab
  • コミュニケーション: Slack、Discord
  • プロジェクト管理(かんり): Linear、Jira
  • Webブラウザ: Puppeteer
  • 検索(けんさく): Brave Search
  • エラー追跡(ついせき): Sentry
  • カスタムAPI: 独自(どくじ)のMCPサーバーを構築(こうちく)可能(かのう)
Q5. Claude CodeのフックシステムでPostToolUseフックはいつ実行(じっこう)され、代表的(だいひょうてき)な活用(かつよう)事例(じれい)は?

A5. PostToolUseフックは、Claude Codeがツール(ファイル編集(へんしゅう)、コマンド実行(じっこう)など)を**使用(しよう)した直後(ちょくご)**に実行(じっこう)されます。

代表的(だいひょうてき)な活用(かつよう)事例(じれい):

  • 自動(じどう)フォーマット: ファイル修正後(しゅうせいご)にPrettier/ESLintを自動実行(じどうじっこう)
  • 自動(じどう)テスト: ファイル変更後(へんこうご)に関連(かんれん)テストを自動実行(じどうじっこう)
  • 変更(へんこう)ロギング: ファイル変更履歴(へんこうりれき)の自動記録(じどうきろく)
  • 型(かた)チェック: TypeScriptファイル修正後(しゅうせいご)に型(かた)チェックを自動実行(じどうじっこう)

これにより、コード品質(ひんしつ)を自動的(じどうてき)に維持(いじ)できます。


参考資料(さんこうしりょう)

公式(こうしき)ドキュメント

  1. Anthropic Claude Code 公式(こうしき)ドキュメント
  2. Claude Code GitHub リポジトリ
  3. Model Context Protocol (MCP) 公式(こうしき)サイト
  4. MCPサーバーディレクトリ
  5. Anthropic API ドキュメント

ブログと技術記事(ぎじゅつきじ)

  1. Anthropicブログ - Claude Code紹介(しょうかい)
  2. Claude Code ベストプラクティス
  3. CLAUDE.md 作成(さくせい)ガイド
  4. Claude Code フックドキュメント
  5. Agent SDK ガイド

コミュニティと関連資料(かんれんしりょう)

  1. Awesome Claude Code - コミュニティリソース
  2. Claude Code Discord コミュニティ
  3. MCPサーバー開発(かいはつ)ガイド
  4. エージェンティックコーディングのトレンド分析(ぶんせき)
  5. Claude Code vs 従来(じゅうらい)のAIコーディングツール比較(ひかく)
  6. Anthropic Cookbook - Claude Code サンプル
  7. Claude Code スラッシュコマンドリファレンス