5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルPCでClaude Codeを使い倒す:上級者向け完全ガイド

5
Posted at

この記事は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.jsondeny でリスクの高い操作を禁止
  • --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で外部サービスと連携し、マルチエージェントで並列処理することで、個人の開発生産性を劇的に向上させることができます。

ぜひ自分のプロジェクトで試してみてください!


参考リンク

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?