Claude Code & エージェント
Claude Codeを使ったCLI開発と、エージェント構築パターンを学びます。
Claude Codeとは
Claude Codeは、ターミナルから直接Claudeを使える公式CLIツール。ファイル編集、コマンド実行、Git操作などをClaudeが自律的に行う。
インストール
基本的な使い方
# 対話モードで起動
claude
# ワンショットで質問
claude "このプロジェクトの構成を説明して"
# パイプで入力
cat error.log | claude "このエラーの原因を分析して"
主な機能
| 機能 | 説明 |
|---|---|
| ファイル読み書き | コードの閲覧・編集・新規作成 |
| コマンド実行 | テスト実行、ビルド、Git操作 |
| 検索 | コードベース内のグローバル検索 |
| マルチファイル編集 | 複数ファイルにまたがるリファクタリング |
| Git統合 | commit、branch、diff の操作 |
CLAUDE.md — プロジェクト設定
リポジトリのルートにCLAUDE.mdを置くと、Claude Codeがプロジェクト固有のルールを自動で読み込む。
# CLAUDE.md
## プロジェクト概要
Python製のWebアプリ。FastAPI + PostgreSQL。
## コーディング規約
- 型ヒントを必ず使う
- docstringはGoogle Style
- テストはpytest
## テスト実行
pytest tests/ -v
## よく使うコマンド
- `make dev` — 開発サーバー起動
- `make test` — テスト実行
- `make lint` — リンター実行
スラッシュコマンド
Claude Code内で使える便利なコマンド。
| コマンド | 説明 |
|---|---|
/help |
ヘルプを表示 |
/clear |
会話履歴をクリア |
/compact |
会話を要約して圧縮 |
/commit |
変更をgit commit |
/review |
コードレビュー |
Agent Skills
Claude Codeのカスタムスキル機能。繰り返し使うワークフローをスキルとして定義できる。
スキルの定義(.claude/skills/ に配置)
---
name: test-and-fix
description: テストを実行し、失敗したら修正する
---
1. `pytest tests/ -v` を実行
2. 失敗したテストがあれば:
- エラーメッセージを分析
- 対応するソースコードを修正
- 再度テストを実行して確認
3. 全テスト通過を確認
エージェント設計パターン
Claude APIを使って自律的なエージェントを構築するパターン。
パターン1: ツールループ
最も基本的なエージェントパターン。ツール呼び出しがなくなるまでループする。
import anthropic
import json
client = anthropic.Anthropic()
def run_agent(user_input: str, tools: list, tool_executor) -> str:
messages = [{"role": "user", "content": user_input}]
while True:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
tools=tools,
messages=messages,
)
# ツール呼び出しがなければ完了
if response.stop_reason == "end_turn":
return response.content[0].text
# ツールを実行して結果を追加
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = tool_executor(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": json.dumps(result, ensure_ascii=False)
})
messages.append({"role": "user", "content": tool_results})
パターン2: ルーティング
Haikuで分類 → Sonnet/Opusで処理、のコスト最適化パターン。
def route_request(user_input: str) -> str:
# Step 1: Haikuで分類(安い)
classification = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=50,
system="ユーザーの入力を以下に分類: simple / complex / creative",
messages=[{"role": "user", "content": user_input}]
)
category = classification.content[0].text.strip()
# Step 2: カテゴリに応じてモデルを選択
model_map = {
"simple": "claude-haiku-4-5-20251001",
"complex": "claude-sonnet-4-20250514",
"creative": "claude-sonnet-4-20250514",
}
response = client.messages.create(
model=model_map.get(category, "claude-sonnet-4-20250514"),
max_tokens=4096,
messages=[{"role": "user", "content": user_input}]
)
return response.content[0].text
パターン3: 検証ループ
生成 → 検証 → 修正を繰り返す品質保証パターン。
def generate_with_validation(task: str, max_attempts: int = 3) -> str:
for attempt in range(max_attempts):
# 生成
result = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
messages=[{"role": "user", "content": task}]
)
code = result.content[0].text
# 検証(テスト実行、lint等)
is_valid, errors = validate(code)
if is_valid:
return code
# エラーを含めて再生成
task = f"前回の出力にエラーがありました:\n{errors}\n\n元のタスク:\n{task}\n\n修正してください。"
raise Exception("検証に通りませんでした")
Quickstartsテンプレート
Anthropicが提供する実用テンプレート。クローンしてすぐ使える。
| テンプレート | 内容 |
|---|---|
| Customer Support Agent | カスタマーサポートBot |
| Financial Data Analyst | 財務データ分析 |
| Computer Use Demo | PC操作の自動化 |
参考リンク
- Claude Code ドキュメント — 公式CLIガイド
- Anthropic Quickstarts — スターターテンプレート
- Agent SDK — エージェント構築SDK
- Anthropic Courses — Tool Use & エージェントコース