この記事はClaude Code CLI(2026年3月時点の最新情報)に基づいています。
はじめに
Claude Code は Anthropic が提供するエージェント型コーディングCLIツールです。単なるコード補完ツールではなく、コードベース全体を理解し、ファイルを編集し、コマンドを実行し、gitと連携して開発タスクを自律的に遂行できます。
本記事では、上級者向けの視点から Claude Code の真の力を引き出す方法を解説します。インストールから始まり、CLAUDE.md によるメモリ管理、Hooks、MCPサーバー連携、マルチエージェント運用、CI/CD統合まで網羅します。
アーキテクチャ概要
インストール
macOS / Linux / WSL(推奨)
curl -fsSL https://claude.ai/install.sh | bash
ネイティブインストールはバックグラウンドで自動更新されます。
Windows PowerShell
irm https://claude.ai/install.ps1 | iex
注意: Windowsでは Git for Windows が必要です。
Homebrew(自動更新なし)
brew install --cask claude-code
# 手動更新
brew upgrade claude-code
WinGet
winget install Anthropic.ClaudeCode
# 手動更新
winget upgrade Anthropic.ClaudeCode
認証設定
# ブラウザ認証(デフォルト)
claude auth login
# メールアドレスを指定してSSO認証
claude auth login --email user@example.com --sso
# 認証状態確認
claude auth status # JSON形式
claude auth status --text # 人間が読みやすい形式
# ログアウト
claude auth logout
APIキーを使う場合(CI/CDや自動化向け):
export ANTHROPIC_API_KEY="sk-ant-xxxx"
claude -p "タスクを実行"
基本的な使い方
# プロジェクトディレクトリで対話セッション開始
cd your-project
claude
# 初期プロンプトを指定してセッション開始
claude "このプロジェクトのアーキテクチャを説明して"
# 非対話モード(スクリプト/CI向け)
claude -p "認証モジュールのテストを書いて実行し、失敗を修正して"
# 直前の会話を継続
claude -c
claude -c -p "型エラーを確認して"
# セッションIDまたは名前で再開
claude -r "auth-refactor" "このPRを完成させて"
CLIフラグ詳細リファレンス
上級者が知っておくべき重要なフラグを分類して解説します。
モデル・セッション制御
| フラグ | 説明 | 例 |
|---|---|---|
--model |
使用モデル指定 | claude --model claude-opus-4-6 |
--resume, -r |
セッション再開 | claude -r "feature-branch" |
--continue, -c |
直近の会話を継続 | claude -c |
--fork-session |
再開時に新しいセッションIDを生成 | claude -r abc123 --fork-session |
--session-id |
特定のセッションIDを使用 | claude --session-id "uuid" |
--no-session-persistence |
セッションを保存しない | claude -p --no-session-persistence "query" |
--fallback-model |
デフォルトモデルが過負荷時のフォールバック | claude -p --fallback-model sonnet "query" |
権限・セキュリティ制御
| フラグ | 説明 | 用途 |
|---|---|---|
--permission-mode |
権限モード設定 | --permission-mode plan |
--allowedTools |
確認なしで実行可能なツール | "Bash(git log *)" "Read" |
--disallowedTools |
使用禁止ツール | "Edit" "Write" |
--tools |
使用可能なツールを制限 | --tools "Bash,Read" |
--dangerously-skip-permissions |
全権限プロンプトをスキップ | CI環境でのみ使用 |
# 計画モードで実行(コードを変更せず計画のみ提示)
claude --permission-mode plan "認証システムをリファクタリングして"
# 読み取り専用モード(セキュリティレビュー向け)
claude --tools "Bash(cat *),Read,Glob,Grep" "セキュリティ脆弱性を検索して"
出力・フォーマット制御
# JSON形式で出力(スクリプト連携向け)
claude -p "バグを分析して" --output-format json
# ストリーミングJSON
claude -p "コードを解析して" --output-format stream-json
# JSON Schemaで構造化出力を強制
claude -p --json-schema '{
"type": "object",
"properties": {
"bugs": {"type": "array"},
"severity": {"type": "string"}
}
}' "このファイルのバグを分析して"
# 詳細ログ(デバッグ向け)
claude --verbose "タスク実行"
claude --debug "api,mcp" "タスク実行"
システムプロンプト制御
# システムプロンプトを完全に置き換え
claude --system-prompt "あなたはPythonの型アノテーション専門家です"
# ファイルからシステムプロンプトを読み込み
claude --system-prompt-file ./prompts/security-review.txt
# デフォルトに追記(推奨)
claude --append-system-prompt "常にTypeScriptを使用し、JSDocコメントを含めること"
# ファイルから追記
claude --append-system-prompt-file ./prompts/style-guide.txt
ベストプラクティス:
--system-promptはデフォルトの Claude Code 機能を完全に無効化するため、特別な理由がない限り--append-system-promptを推奨します。
マルチディレクトリ・ワークツリー
# 追加ディレクトリへのアクセスを許可
claude --add-dir ../shared-lib ../common-utils
# 追加ディレクトリのCLAUDE.mdも読み込む
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config
# 孤立したgit worktreeで実行
claude -w feature-auth
claude --worktree feature-auth
CLAUDE.md によるプロジェクトメモリ管理
CLAUDE.md はセッション開始時に自動的に読み込まれる設定ファイルです。チームの開発規約、アーキテクチャ決定、よく使うワークフローを記述します。
ファイル配置と優先度
/init による自動生成
cd your-project
claude
/init
Claude がコードベースを分析して CLAUDE.md を自動生成します。
効果的な CLAUDE.md の書き方
# プロジェクト: ECサイトバックエンド
## ビルド・テストコマンド
- ビルド: `npm run build`
- テスト: `npm test -- --coverage`
- Lint: `npm run lint`
- 本番デプロイ: `npm run deploy:prod`(必ず承認を取ること)
## アーキテクチャ
- フレームワーク: Express.js + TypeScript
- DB: Oracle 19c(ORM: TypeORM)
- APIはRESTful設計、バージョニングは /api/v1/ プレフィックス
- ハンドラーは src/api/handlers/ 配下に配置
## コーディング規約
- インデント: 2スペース
- 型アノテーション必須(any禁止)
- コミット前に `npm test` を実行すること
- エラーハンドリングは src/middleware/errorHandler.ts を使用
## 重要な注意事項
- 本番DBへの直接変更は禁止
- シークレットは .env ファイルに記載し、コミットしないこと
- セキュリティ修正はQAチームへの通知が必要
## @ファイルインポート
- @docs/api-design-guide.md
- @.claude/rules/security.md
パスベースのルール(.claude/rules/)
mkdir -p .claude/rules
<!-- .claude/rules/api-rules.md -->
---
paths:
- "src/api/**/*.ts"
---
# APIハンドラーのルール
- すべてのエンドポイントで入力バリデーションを実施
- 標準エラーレスポンス形式を使用: `{ error: string, code: string }`
- OpenAPIドキュメントコメントを含めること
- レート制限ミドルウェアを適用すること
<!-- .claude/rules/test-rules.md -->
---
paths:
- "**/*.test.ts"
- "**/*.spec.ts"
---
# テスト規約
- テストはAAAパターンに従う(Arrange / Act / Assert)
- モックは jest.mock() を使用
- カバレッジ80%以上を維持
Auto Memory(自動記憶)
Claude が自動的に学習した内容を保存します:
# 現在のメモリ状況を確認
/memory
# 明示的に記憶させる
# セッション内で「これを覚えておいて」と伝えると自動保存
# または「CLAUDE.mdに追加して」と指示
メモリの保存場所:
~/.claude/projects/<project>/memory/
├── MEMORY.md # インデックス(毎セッション読み込み、200行制限)
├── debugging.md # デバッグパターン
├── api-conventions.md # API設計の決定事項
└── ...
Hooks による自動化
Hooks は Claude Code のライフサイクルの特定ポイントで自動実行されるシェルコマンドです。
主要なHookイベント
| イベント | タイミング |
|---|---|
PreToolUse |
ツール実行前 |
PostToolUse |
ツール実行後 |
Stop |
エージェントが停止前 |
Notification |
通知送信時 |
InstructionsLoaded |
指示ファイル読み込み時 |
Hooksの設定方法
.claude/settings.json または ~/.claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run lint --fix && npm run format"
}
]
}
],
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo '$(cat)' >> ~/.claude/bash_history.log"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Codeが完了しました\" with title \"Claude Code\"'"
}
]
}
]
}
}
実践的なHooksユースケース
1. ファイル編集後の自動フォーマット
# .claude/hooks/post-edit.sh
#!/bin/bash
INPUT=$(cat)
FILE=$(echo "$INPUT" | jq -r '.tool_input.path // empty')
if [[ "$FILE" == *.ts ]] || [[ "$FILE" == *.tsx ]]; then
npx prettier --write "$FILE"
npx eslint --fix "$FILE"
fi
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "bash .claude/hooks/post-edit.sh"
}]
}]
}
}
2. 危険なコマンドの実行前チェック
# .claude/hooks/pre-bash.sh
#!/bin/bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
# rm -rf や本番DB操作を検知
if echo "$COMMAND" | grep -qE "rm -rf|DROP TABLE|DELETE FROM.*prod"; then
echo '{"decision": "block", "reason": "危険なコマンドをブロックしました"}'
exit 0
fi
# 通常は許可
echo '{"decision": "allow"}'
3. コミット前テスト実行
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash(git commit *)",
"hooks": [{
"type": "command",
"command": "npm test || echo '{\"decision\": \"block\", \"reason\": \"テストが失敗しています\"}'"
}]
}]
}
}
MCP(Model Context Protocol)サーバー連携
MCPはClaudeが外部サービスと通信するための標準プロトコルです。
MCPサーバーの追加
# 対話形式で追加
claude mcp add
# 直接コマンドで追加
claude mcp add my-server -e API_KEY=xxx -- node /path/to/server.js
# SSEサーバーとして追加
claude mcp add remote-server --transport sse https://api.example.com/mcp
# 設定ファイルから読み込み
claude --mcp-config ./mcp.json
# 指定したMCP設定のみを使用(他の設定を無視)
claude --strict-mcp-config --mcp-config ./mcp.json
mcp.json の例
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}",
"SLACK_TEAM_ID": "${SLACK_TEAM_ID}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
}
}
}
# MCPサーバーに接続して開発
claude --mcp-config ./mcp.json "Slackの#dev-channelで今週の問題を確認して、GitHubにissueを作成して"
サブエージェント・マルチエージェント運用
Claude Code は複数のエージェントを並列実行できます。
サブエージェントの定義
claude --agents '{
"code-reviewer": {
"description": "コード品質・セキュリティ・ベストプラクティスをレビュー。コード変更後に積極的に使用。",
"prompt": "あなたはシニアコードレビュアーです。品質・セキュリティ・パフォーマンスに注目してください。",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
},
"test-writer": {
"description": "ユニットテストと統合テストを作成する専門家。",
"prompt": "あなたはテスト設計の専門家です。エッジケースを考慮した包括的なテストを書いてください。",
"tools": ["Read", "Edit", "Write", "Bash"],
"model": "sonnet"
},
"security-auditor": {
"description": "セキュリティ脆弱性の検出と修正を担当。",
"prompt": "あなたはセキュリティ専門家です。OWASP Top 10を基準に脆弱性を分析してください。",
"tools": ["Read", "Grep", "Glob"],
"model": "opus"
}
}'
git worktreeを使った並列実行
# 複数の機能を並列で開発
claude -w feature-auth # 認証機能の開発
claude -w feature-payment # 決済機能の開発(別ターミナル)
claude -w bug-fix-api # バグ修正(別ターミナル)
エージェントチームのワークフロー
パイプライン・スクリプト統合
Claude Code は Unix哲学に従い、パイプやスクリプトと組み合わせられます。
# ログ監視とSlack通知
tail -f app.log | claude -p "異常を検知したらSlackで通知して"
# セキュリティレビュー自動化
git diff main --name-only | claude -p "変更ファイルのセキュリティ問題をレビューして"
# バルク翻訳
find ./src/locales/en -name "*.json" | \
xargs -I{} claude -p "{}を日本語に翻訳してja/{}に保存して"
# コスト上限付き自動化
claude -p --max-budget-usd 2.00 --max-turns 10 "テストスイートを実行して失敗を修正して"
# 構造化JSON出力をjqで処理
claude -p --output-format json "依存関係の脆弱性を分析して" | \
jq '.content[0].text | fromjson | .vulnerabilities[] | select(.severity == "critical")'
CI/CD統合
GitHub Actions
# .github/workflows/claude-review.yml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
claude-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Claude Code
run: curl -fsSL https://claude.ai/install.sh | bash
- name: Run Security Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
git diff origin/main...HEAD | \
claude -p \
--dangerously-skip-permissions \
--max-budget-usd 1.00 \
--output-format json \
"このdiffのセキュリティ問題をJSONで報告して" \
| tee review-result.json
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const result = require('./review-result.json');
// PRにコメント投稿...
ローカル開発での自動化スクリプト
#!/bin/bash
# scripts/ai-pr-review.sh
PR_NUMBER=$1
echo "PR #$PR_NUMBER のレビューを開始..."
gh pr checkout $PR_NUMBER
git diff main...HEAD | claude -p \
--append-system-prompt "日本語で回答してください" \
--output-format json \
--max-budget-usd 0.50 \
"このPRをレビューして: バグ、セキュリティ、パフォーマンス、コード品質の観点から" \
| jq -r '.content[0].text' \
| gh pr comment $PR_NUMBER --body-file -
設定ファイル管理
設定ファイルの階層
# 優先度: 低 → 高
/etc/claude-code/settings.json # 組織ポリシー(最優先ではない)
~/.claude/settings.json # ユーザー設定
.claude/settings.json # プロジェクト設定(チーム共有)
.claude/settings.local.json # ローカル設定(gitignore推奨)
settings.json の例
{
"model": "claude-sonnet-4-6",
"autoMemoryEnabled": true,
"claudeMdExcludes": [
"**/other-team/.claude/**"
],
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git log *)",
"Bash(git diff *)",
"Read(**)",
"Glob(**)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force *)"
]
}
}
環境変数による制御
# モデル指定
export ANTHROPIC_MODEL="claude-opus-4-6"
# カスタムAPIエンドポイント(サードパーティプロバイダー)
export ANTHROPIC_BASE_URL="https://your-proxy.example.com"
# Auto Memory無効化
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
# 追加ディレクトリのCLAUDE.md読み込み
export CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1
カスタムスキル(再利用可能なワークフロー)
スキルはチームで共有できる再利用可能なワークフローです。
スキルの作成
.claude/
└── skills/
└── review-pr/
└── SKILL.md
<!-- .claude/skills/review-pr/SKILL.md -->
---
description: "PRをセキュリティ・品質・パフォーマンスの観点でレビューする"
---
# PR レビュースキル
以下の手順でPRをレビューしてください:
1. `git diff main...HEAD` で変更内容を確認
2. 以下の観点でレビュー:
- セキュリティ脆弱性(SQLインジェクション、XSS、認証バイパス等)
- パフォーマンス問題(N+1クエリ、メモリリーク等)
- コード品質(SOLID原則、DRY原則)
- テストカバレッジ
3. 問題を重要度(Critical/High/Medium/Low)でレポート
4. 修正提案を具体的なコードで示す
# スキルの呼び出し
claude
/review-pr
Remote Control・クロスデバイス作業
# ローカルセッションをリモートコントロール可能にする
claude remote-control
# スマートフォンやブラウザからclaude.aiにアクセス
# → ローカルのClaude Codeを遠隔操作
# Webセッションをローカルに引き継ぐ
claude --teleport
# クラウドでセッションを開始
claude --remote "ログインバグを修正して"
デバッグとトラブルシューティング
# バージョン確認
claude -v
# 最新版に更新
claude update
# デバッグモード(カテゴリ指定)
claude --debug "api,mcp"
claude --debug "!statsig,!file" # 除外パターン
# 詳細ログ
claude --verbose
# 設定ソースを指定
claude --setting-sources user,project
# MCP接続テスト
claude mcp list
claude mcp test my-server
ベストプラクティスまとめ
CLAUDE.md
- ✅ 200行以内に収める
- ✅ 具体的で検証可能な指示を書く(「2スペースインデント」○、「きれいに書く」×)
- ✅ パスベースのルール(
.claude/rules/)で指示をモジュール化 - ✅
@importで大きなドキュメントを参照 - ❌ 矛盾する指示を書かない
セキュリティ
- ✅
--permission-mode planでコード変更前に計画を確認 - ✅ CI/CDでは
--max-budget-usdでコスト上限を設定 - ✅ Hooksで危険なコマンドをブロック
- ✅
settings.jsonのdenyでリスクの高い操作を禁止 - ❌
--dangerously-skip-permissionsはCI環境のみ、本番環境では使わない
パフォーマンス
- ✅ git worktreeで並列タスクを実行
- ✅ サブエージェントで専門タスクを分割
- ✅
--max-turnsで無限ループを防ぐ - ✅
--fallback-modelで過負荷時の自動切り替え
チーム開発
- ✅
CLAUDE.mdと.claude/settings.jsonをgit管理 - ✅
CLAUDE.local.mdと.claude/settings.local.jsonは.gitignoreへ - ✅ スキルでワークフローを標準化・共有
- ✅ 組織ポリシーは managed policy CLAUDE.md で一元管理
おわりに
Claude Code は単なるAIアシスタントではなく、開発ワークフローに深く統合できるエージェントプラットフォームです。
CLAUDE.md でプロジェクト固有の知識を持たせ、Hooks で自動化し、MCPで外部サービスと連携し、マルチエージェントで並列処理することで、個人の開発生産性を劇的に向上させることができます。
ぜひ自分のプロジェクトで試してみてください!