Complete Claude Code Guide: From Installation to Advanced Usage

Complete Claude Code Guide: From Installation to Advanced Usage

A comprehensive tutorial covering everything you need to know about Claude Code - from basic installation and setup to advanced features like MCP integration, automation, and security best practices.

レッスン 5 2025-07-03 08:05

Claude の高度なコード機能と自動化

Claude Codeの高度な機能と自動化

Claude Codeの利用を次のレベルへと引き上げるために、高度な機能、自動化パターン、そしてパワーユーザー向けのテクニックをご紹介します。このガイドでは、洗練されたワークフロー、CI/CD連携、カスタム設定、そして専門家レベルの利用パターンを網羅します。

高度なセッション管理

名前付きセッションとワークスペース

異なるプロジェクトやコンテキストに合わせて、専用のセッションを作成・管理できます。

# 異なるプロジェクト向けに名前付きセッションを作成
claude --session frontend "Reactフロントエンドでの作業"
claude --session backend "バックエンドAPI開発"
claude --session devops "インフラとデプロイメント"

# 特定の名前付きセッションを再開
claude --resume frontend "フロントエンド作業を継続"
claude --resume backend "APIパフォーマンスの確認"

# 全ての名前付きセッションを一覧表示
claude sessions list --filter named

# セッション設定のエクスポートと共有
claude sessions export frontend > frontend-session.json
claude sessions import frontend-session.json

セッションテンプレート

再利用可能なセッションテンプレートを作成できます。

# React開発用のテンプレートを作成
cat > ~/.claude/templates/react-dev.json << EOF
{
  "allowedTools": ["Edit", "View", "Bash(npm:*)", "Bash(git:*)"],
  "addDirectories": ["./src", "./test", "./docs"],
  "systemPrompt": "あなたはシニアのReact開発者です。TypeScriptのベストプラクティスに従い、パフォーマンスとアクセシビリティに焦点を当ててください。",
  "mcpServers": ["git", "filesystem"],
  "projectMemory": "Jestテストを含むReact TypeScriptプロジェクト"
}
EOF

# テンプレートを使ってセッションを開始
claude --template react-dev "React開発セッションを開始"

高度なメモリ管理

CLAUDE.md - プロジェクトメモリ

包括的なプロジェクトメモリーファイルを作成します。

# プロジェクト: Eコマースプラットフォーム

## アーキテクチャの概要
- **フロントエンド**: React 18 + TypeScript + Vite
- **バックエンド**: Node.js + Express + TypeScript
- **データベース**: Prisma ORMを使用したPostgreSQL 14
- **キャッシュ**: セッションストレージ用のRedis
- **デプロイ**: AWS上のDocker + Kubernetes

## 現在のスプリント目標
- [ ] JWTを使用したユーザー認証の実装
- [ ] Stripeでの決済処理を追加
- [ ] 自動テストパイプラインのセットアップ
- [ ] 商品検索のためのデータベースクエリ最適化

## 開発標準
- 全ての新規コードにTypeScriptを使用
- ESLint + Prettierの設定に従う
- 全てのビジネスロジックに単体テストを記述
- GitメッセージにはConventional Commitsを使用
- 本番環境投入前にステージング環境へデプロイ

## 既知の問題
- 1万件以上の商品で検索パフォーマンスが低下
- ユーザーセッションタイムアウトの設定が必要
- 本番環境でのメールサービスレート制限

## 最近の決定事項
- より良いフロントエンド連携のためにRESTからGraphQLへ移行
- スタイリングの一貫性のためにTailwind CSSを使用
- 段階的リリースに向けてフィーチャーフラグを実装

動的なメモリ更新

# 最近の開発状況でプロジェクトメモリを更新
claude /memory add "検索結果のRedisキャッシュを実装 - 40%のパフォーマンス向上"

# 現在のフォーカスを設定
claude /memory set-focus "今週はユーザー認証システムに取り組んでいます"

# アーキテクチャ上の決定を追加
claude /memory add-decision "24時間有効なJWTトークンとリフレッシュトークンのローテーションを使用"

高度な設定パターン

階層型設定システム

洗練された設定階層を作成します。

# グローバル設定 (~/.claude.json)
{
  "defaultModel": "claude-sonnet-4",
  "globalAllowedTools": ["View"],
  "globalDisallowedTools": ["Bash(rm:*)", "Bash(sudo:*)"],
  "theme": "dark-daltonized",
  "editorMode": "vim"
}

# 組織設定 (~/.claude/org-config.json)
{
  "extends": "~/.claude.json",
  "allowedTools": ["Edit", "View", "Bash(git:*)", "mcp__git__*"],
  "mcpServers": {
    "company-git": {
      "command": "company-git-server",
      "env": {"COMPANY_TOKEN": "${COMPANY_GIT_TOKEN}"}
    }
  },
  "auditLogging": true,
  "complianceMode": "SOC2"
}

# プロジェクト設定 (./claude-config.json)
{
  "extends": "~/.claude/org-config.json",
  "projectName": "ecommerce-platform",
  "allowedTools": ["Edit", "View", "Bash(npm:*)", "Bash(git:*)", "mcp__*"],
  "systemPrompt": "あなたはEコマースプラットフォームで作業しています。セキュリティ、パフォーマンス、ユーザーエクスペリエンスに焦点を当ててください。",
  "addDirectories": ["./src", "./tests", "./docs"],
  "mcpServers": {
    "project-db": {
      "command": "postgres-mcp-server",
      "env": {"DATABASE_URL": "${PROJECT_DATABASE_URL}"}
    }
  }
}

環境ごとの設定

# 開発環境
export CLAUDE_ENV=development
export CLAUDE_CONFIG_FILE=~/.claude/dev-config.json

# ステージング環境
export CLAUDE_ENV=staging
export CLAUDE_CONFIG_FILE=~/.claude/staging-config.json

# 本番環境 (読み取り専用)
export CLAUDE_ENV=production
export CLAUDE_CONFIG_FILE=~/.claude/prod-config.json

自動化とスクリプト

CI/CD連携

GitHub Actionsとの連携

# .github/workflows/claude-code-review.yml
name: Claude Code Review # ワークフロー名

on:
  pull_request: # プルリクエストが作成または更新されたときにトリガー
    branches: [main, develop] # mainまたはdevelopブランチ向けの場合

jobs:
  claude-review:
    runs-on: ubuntu-latest # 実行環境のOS
    steps:
      - uses: actions/checkout@v4 # リポジトリをチェックアウト
        with:
          fetch-depth: 0  # より良い分析のために全履歴を取得

      - name: Setup Node.js # Node.jsのセットアップ
        uses: actions/setup-node@v4
        with:
          node-version: '18' # Node.jsのバージョン指定

      - name: Install Claude Code # Claude Codeのインストール
        run: npm install -g @anthropic-ai/claude-code

      - name: Run Security Review # セキュリティレビューの実行
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # APIキーを環境変数に設定
        run: |
          # CI用の安全な設定ファイルを作成
          cat > ci-config.json << EOF
          {
            "allowedTools": ["View"], # 許可するツールはViewのみ
            "outputFormat": "json",   # 出力形式はJSON
            "verbose": false          # 詳細ログは無効
          }
          EOF

          # セキュリティ分析を実行
          claude --config ci-config.json \
            -p "このプルリクエストを、セキュリティ脆弱性、パフォーマンス問題、コード品質の問題について分析してください。src/ディレクトリの変更点に焦点を当ててください。" \
            --output-format json > review-results.json

      - name: Post Review Comments # レビューコメントを投稿
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const results = JSON.parse(fs.readFileSync('review-results.json', 'utf8'));

            // 結果をPRコメントとして投稿
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `## 🤖 Claude Code Review\n\n${results.analysis}\n\n### Security Issues: ${results.security_issues}\n### Performance Issues: ${results.performance_issues}\n### Code Quality: ${results.code_quality}`
            });

GitLab CIとの連携

# .gitlab-ci.yml
claude_review:
  image: node:18 # Node.js 18のDockerイメージを使用
  stage: review # レビューステージに設定
  script:
    - npm install -g @anthropic-ai/claude-code # Claude Codeをインストール
    - |
      claude --allowedTools "View" \ # Viewツールのみ許可
        -p "このマージリクエストのコード品質とセキュリティ問題をレビューしてください" \ # プロンプト
        --output-format json > review.json # JSON形式で出力し、ファイルに保存
    - cat review.json # レビュー結果を表示
  artifacts:
    reports:
      junit: review.json # JUnit形式のレポートとして出力
  only:
    - merge_requests # マージリクエストでのみ実行

プリコミットフック

インテリジェントなプリコミットフックを作成します。

#!/bin/bash
# .git/hooks/pre-commit

# ステージングされたファイルを取得
staged_files=$(git diff --cached --name-only --diff-filter=ACM)

if [ -z "$staged_files" ]; then
    exit 0
fi

echo "🤖 ステージングされたファイルに対してClaude Codeの分析を実行中..."

# ステージングされた変更を一時ファイルに保存
git diff --cached > /tmp/staged_changes.diff

# Claudeで分析
analysis=$(claude --allowedTools "View" \
    -p "コミット前の変更点について潜在的な問題を分析してください。以下の点に焦点を当ててください: 1) セキュリティ脆弱性 2) コード品質 3) パフォーマンス問題 4) 破壊的変更。深刻度レベルを含むJSONで返してください。" \
    --output-format json < /tmp/staged_changes.diff)

# 結果をパース
critical_issues=$(echo "$analysis" | jq -r '.critical_issues // []')
warning_issues=$(echo "$analysis" | jq -r '.warnings // []')

# 重大な問題が見つかった場合はコミットをブロック
if [ "$critical_issues" != "[]" ] && [ "$critical_issues" != "null" ]; then
    echo "❌ 重大な問題が見つかりました:"
    echo "$critical_issues" | jq -r '.[]'
    echo "コミットはブロックされました。コミットする前に重大な問題を修正してください。"
    exit 1
fi

# 警告が表示されてもコミットを許可
if [ "$warning_issues" != "[]" ] && [ "$warning_issues" != "null" ]; then
    echo "⚠️  警告が見つかりました:"
    echo "$warning_issues" | jq -r '.[]'
    echo "これらの問題への対処を検討してください。"
fi

echo "✅ プリコミット分析完了"
rm /tmp/staged_changes.diff

自動化されたドキュメント作成

#!/bin/bash
# scripts/update-docs.sh

# 自動化されたAPIドキュメント作成
claude --allowedTools "View,Edit" \
    --add-dir ./src/api \
    "現在のTypeScriptインターフェースとエンドポイント実装に基づいて、docs/api.mdのAPIドキュメントを更新してください"

# READMEの更新を生成
claude --allowedTools "View,Edit" \
    "現在のプロジェクトステータス、インストール手順、使用例を含むREADME.mdを更新してください"

# 変更履歴のエントリを作成
git log --since="1 week ago" --pretty=format:"%h %s" | \
    claude -p "これらのgitコミットから変更履歴エントリを生成してください。ユーザー向けの変更点に焦点を当ててください。" \
    >> CHANGELOG.md

高度なMCPワークフロー

カスタムMCPサーバー開発

ワークフローに特化したMCPサーバーを作成します。

// custom-project-server.js
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
const fs = require('fs');
const path = require('path');

class ProjectServer extends Server {
  constructor() {
    super({
      name: 'project-server',
      version: '1.0.0',
    });

    this.setupTools();
  }

  setupTools() {
    // プロジェクトステータスツール
    this.setRequestHandler('tools/list', async () => ({
      tools: [
        {
          name: 'get_project_status',
          description: 'Git、依存関係、デプロイメントを含む包括的なプロジェクトステータスを取得します',
          inputSchema: {
            type: 'object',
            properties: {}
          }
        },
        {
          name: 'run_tests',
          description: '指定されたスコープでプロジェクトテストを実行します',
          inputSchema: {
            type: 'object',
            properties: {
              scope: { type: 'string', enum: ['unit', 'integration', 'e2e', 'all'] },
              coverage: { type: 'boolean', default: false }
            }
          }
        },
        {
          name: 'deploy_to_staging',
          description: '現在のブランチをステージング環境にデプロイします',
          inputSchema: {
            type: 'object',
            properties: {
              branch: { type: 'string', default: 'main' },
              runMigrations: { type: 'boolean', default: true }
            }
          }
        }
      ]
    }));

    this.setRequestHandler('tools/call', async (request) => {
      const { name, arguments: args } = request.params;

      switch (name) {
        case 'get_project_status':
          return await this.getProjectStatus();
        case 'run_tests':
          return await this.runTests(args);
        case 'deploy_to_staging':
          return await this.deployToStaging(args);
        default:
          throw new Error(`Unknown tool: ${name}`);
      }
    });
  }

  async getProjectStatus() {
    // プロジェクトステータスの実装
    const gitStatus = require('child_process').execSync('git status --porcelain').toString();
    const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));

    return {
      content: [{
        type: 'text',
        text: `Project Status:
- Git: ${gitStatus ? 'Uncommitted changes' : 'Clean'}
- Version: ${packageJson.version}
- Dependencies: ${Object.keys(packageJson.dependencies || {}).length}
- Last commit: ${require('child_process').execSync('git log -1 --format="%h %s"').toString().trim()}`
      }]
    };
  }

  async runTests(args) {
    const { scope = 'all', coverage = false } = args;
    // テスト実行の実装
    // ...
  }

  async deployToStaging(args) {
    // デプロイの実装
    // ...
  }
}

// サーバーを開始
const server = new ProjectServer();
const transport = new StdioServerTransport();
server.connect(transport);

MCPサーバーオーケストレーション

複数のMCPサーバーを連携させます。

# 高度なMCPワークフロースクリプト
#!/bin/bash

echo "🚀 開発ワークフローを開始します..."

# 1. プロジェクトステータスの確認
claude --allowedTools "mcp__project__get_project_status" \
    "現在のプロジェクトステータスを取得し、問題があれば特定してください"

# 2. 作業開始前にテストを実行
claude --allowedTools "mcp__project__run_tests" \
    "クリーンなベースラインを確保するために単体テストを実行してください"

# 3. セキュリティ脆弱性を確認
claude --allowedTools "mcp__security__scan" \
    "プロジェクトのセキュリティ脆弱性をスキャンしてください"

# 4. 必要に応じて依存関係を更新
claude --allowedTools "mcp__npm__audit,mcp__npm__update" \
    "依存関係の更新とセキュリティパッチを確認してください"

# 5. 開発セッションを開始
claude --allowedTools "Edit,View,mcp__git__*,mcp__project__*" \
    --add-dir ./src ./tests \
    "開発の準備ができました。プロジェクトはクリーンでテスト済みです。"

パフォーマンス最適化

コンテキストウィンドウ管理

Claude Codeのコンテキスト利用を最適化します。

# コンテキストを特定のディレクトリに制限
claude --add-dir ./src/components ./src/utils \
    "コンポーネントとユーティリティのみに焦点を当ててください"

# 焦点を絞ったクエリを使用
claude --allowedTools "View" \
    -p "認証モジュールのみをセキュリティ問題について分析してください" \
    --context-files "src/auth/*.ts"

# 段階的なコンテキスト構築
claude "プロジェクト構造の概要から始めてください"
# その後、必要に応じて特定のコンテキストを追加
claude "次に、ユーザー管理システムに焦点を当ててください"

パフォーマンス監視

# Claude Codeのパフォーマンスを監視
claude --profile --timing \
    "アプリケーションのパフォーマンスボトルネックを分析してください"

# トークン使用量の最適化
export MAX_THINKING_TOKENS=30000  # 必要に応じて調整
claude --cost-tracking "データベースクエリを最適化してください"

# メモリ使用量の監視
claude --memory-usage --verbose \
    "大規模なコードベースの分析セッション"

高度なトラブルシューティング

デバッグモードの設定

# 最大のデバッグ情報
claude \
    --verbose \
    --debug \
    --mcp-debug \
    --trace-all \
    --log-api-calls \
    --show-tokens \
    --cost-tracking \
    "複雑な統合問題をデバッグしてください"

# 選択的なデバッグ
claude \
    --mcp-debug \
    --allowedTools "mcp__postgres__*" \
    "データベース接続の問題をデバッグしてください"

ログ分析と監視

# 包括的なロギング設定
export CLAUDE_LOG_LEVEL=debug
export CLAUDE_LOG_FILE=/var/log/claude/session.log
export CLAUDE_AUDIT_LOG=/var/log/claude/audit.log

# リアルタイムログ監視
tail -f /var/log/claude/session.log | \
    claude -p "これらのログを監視してエラーを見つけ、修正を提案してください"

# ログ分析自動化
cat /var/log/claude/session.log | \
    claude -p "ログを分析してパターン、エラー、パフォーマンスの問題を見つけてください。要約レポートを作成してください。"

チームコラボレーション機能

共有設定

# チーム設定用リポジトリ
git clone https://github.com/company/claude-configs.git ~/.claude/team

# チーム設定の使用
claude --config ~/.claude/team/frontend-config.json \
    "フロントエンド開発セッションを開始"

# セッションテンプレートの共有
cp ~/.claude/templates/react-dev.json \
   ~/.claude/team/templates/
git add . && git commit -m "React開発テンプレートを追加"

知識共有

# チームドキュメントの生成
claude --allowedTools "View,Edit" \
    "現在のプロジェクト構造と規則に基づいて、新人開発者向けのオンボーディングドキュメントを作成してください"

# トラブルシューティングガイドの共有
claude --allowedTools "View" \
    "このプロジェクトにおける一般的な開発問題のトラブルシューティングガイドを生成してください"

# アーキテクチャ決定記録の作成
claude "RESTの代わりにGraphQLを使用するという決定を、その根拠と実装の詳細を含めて文書化してください"

エキスパートレベルのパターン

複雑なワークフローの自動化

# エンドツーエンドの機能開発ワークフロー
#!/bin/bash
feature_name=$1

echo "🎯 機能開発を開始します: $feature_name"

# 1. 機能ブランチの作成
claude --allowedTools "mcp__git__*" \
    "$feature_nameのための機能ブランチを作成してください"

# 2. 初期実装の生成
claude --allowedTools "Edit,View" \
    "REQUIREMENTS.mdの要件に基づいて、$feature_nameの初期実装を生成してください"

# 3. テストの作成
claude --allowedTools "Edit,View" \
    "$feature_name機能のための包括的なテストを作成してください"

# 4. 品質チェックの実行
claude --allowedTools "mcp__project__run_tests,mcp__lint__*" \
    "新機能のテストとリンティングを実行してください"

# 5. ドキュメントの生成
claude --allowedTools "Edit,View" \
    "新機能$feature_nameのドキュメントを更新してください"

# 6. プルリクエストの作成
claude --allowedTools "mcp__github__*" \
    "適切な説明とレビュー担当者を含めて、$feature_nameのプルリクエストを作成してください"

echo "✅ 機能開発ワークフロー完了"

マルチ環境デプロイメント

# 段階的なデプロイメントワークフロー
claude --config ~/.claude/deploy-config.json \
    --allowedTools "mcp__k8s__*,mcp__aws__*" \
    "開発環境にデプロイし、スモークテストを実行してください"

# 成功すればステージングへ続行
claude --allowedTools "mcp__k8s__*,mcp__monitoring__*" \
    "ステージングにデプロイし、10分間監視してください"

# 最終的な本番デプロイ
claude --allowedTools "mcp__k8s__apply,mcp__monitoring__*" \
    "ブルーグリーン戦略で本番環境にデプロイしてください"

将来に備えたセットアップ

設定のバージョン管理

# 全ての設定をバージョン管理
git init ~/.claude
cd ~/.claude
git add .
git commit -m "初期のClaude Code設定"
git remote add origin https://github.com/yourusername/claude-config.git
git push -u origin main

バックアップとリカバリ

# 自動バックアップスクリプト
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=~/.claude/backups

mkdir -p $BACKUP_DIR

# 設定のバックアップ
cp ~/.claude.json $BACKUP_DIR/claude-config-$DATE.json

# セッションのバックアップ
claude sessions export --all > $BACKUP_DIR/sessions-$DATE.json

# プロジェクトメモリのバックアップ
tar -czf $BACKUP_DIR/memories-$DATE.tar.gz ~/.claude/memories/

echo "バックアップ完了: $BACKUP_DIR"

マイグレーション計画

# 設定移行スクリプト
#!/bin/bash
OLD_VERSION=$1
NEW_VERSION=$2

echo "Claude Codeの設定を$OLD_VERSIONから$NEW_VERSIONへ移行中"

# 現在の設定をバックアップ
cp ~/.claude.json ~/.claude.json.backup

# マイグレーションを実行
claude config migrate --from $OLD_VERSION --to $NEW_VERSION

# マイグレーションを検証
claude /doctor

echo "マイグレーション完了。問題があれば/doctorの出力を確認してください。"

結論

これらの高度な機能とパターンは、Claude Codeを単なるAIアシスタントから包括的な開発自動化プラットフォームへと変貌させます。これらのテクニックを習得することで、あなたは以下のことが可能になります。

  • インテリジェントな意思決定を伴う複雑なワークフローの自動化
  • 継続的な品質保証のためのCI/CDパイプラインとの統合
  • 特定のニーズに合わせたカスタムツールの作成
  • チーム共有設定による効果的なコラボレーション
  • 大規模なパフォーマンスの監視と最適化

最先端のClaude Code利用の鍵は、段階的な機能強化です。基本的なパターンから始め、自信と要件の成長に合わせて、より洗練されたテクニックを徐々に取り入れていきましょう。

高度な自動化においても、常にセキュリティのベストプラクティスを維持し、Claude Codeのアップデートと進化する開発ニーズの両方に合わせて、設定を定期的にレビューおよび更新することを忘れないでください。