Files
claude/docs/advanced-setup.md
2025-07-05 13:48:50 +09:00

5.3 KiB

Claude Code Advanced Setup Guide

🔧 Terminal環境との統合

tmux統合

# .tmux.conf に追加
bind-key c command-prompt -p "claude prompt:" "new-window 'claude \"%1\"'"
bind-key C send-keys "claude " C-m

# Claude Code専用のtmuxセッション
alias claude-session='tmux new-session -s claude -d "claude --resume" \; attach'

Vim/Neovim統合

" .vimrc または init.vim
" Claude Codeに現在のファイルを送る
nnoremap <leader>cc :!claude "このコードをレビューして: $(cat %)"<CR>
nnoremap <leader>ce :!claude "このエラーを解決して: $(cat %)"<CR>

" 選択範囲をClaude Codeに送る
vnoremap <leader>cs :w !claude "この部分を説明して"<CR>

🤖 AI連携パターン

1. ChatGPT → Claude Code パイプライン

# ChatGPTの会話ログをClaude Codeに渡す
function ai-handoff() {
    local chatgpt_log="$1"
    claude "以下のChatGPTとの会話を踏まえて、実装を進めてください: $(cat $chatgpt_log)"
}

# 使用例
ai-handoff ~/chatgpt-logs/feature-design.md

2. 複数AIの比較検証

# 同じプロンプトを複数のAIに送る
function ai-compare() {
    local prompt="$1"
    echo "=== Claude Code ===" > ai-comparison.md
    claude "$prompt" >> ai-comparison.md
    echo -e "\n=== ChatGPT ===" >> ai-comparison.md
    # ChatGPT CLIがある場合
    # chatgpt "$prompt" >> ai-comparison.md
}

🔌 MCP (Model Context Protocol) 活用

基本的なMCPツール設定

// ~/.claude/claude_desktop_config.json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem"],
      "env": {
        "FILESYSTEM_ROOT": "/home/user/projects"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "your-token"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://localhost/mydb"
      }
    }
  }
}

カスタムMCPサーバー例

# custom-mcp-server.py
import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent

app = Server("custom-tools")

@app.tool()
async def search_codebase(query: str) -> TextContent:
    """コードベース全体を検索"""
    result = await asyncio.create_subprocess_exec(
        "rg", query, "--json",
        stdout=asyncio.subprocess.PIPE
    )
    stdout, _ = await result.communicate()
    return TextContent(text=stdout.decode())

if __name__ == "__main__":
    app.run()

🚀 実践的なワークフロー

1. ドキュメント駆動開発

# ChatGPTで設計 → Claude Codeで実装
function design-to-code() {
    local design_doc="$1"
    
    # 設計ドキュメントをCLAUDE.mdに追加
    echo "## 設計仕様" >> CLAUDE.md
    cat "$design_doc" >> CLAUDE.md
    
    # Claude Codeセッション開始
    claude "この設計に基づいて実装を開始してください"
}

2. エラー解決フロー

# エラーログを自動的にClaude Codeに送る
function debug-with-claude() {
    local error_log="/tmp/last-error.log"
    
    # エラーをキャプチャ
    "$@" 2> "$error_log"
    
    if [ $? -ne 0 ]; then
        claude "このエラーを解決してください: $(cat $error_log)"
    fi
}

# 使用例
debug-with-claude npm test

3. コードレビュー自動化

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

changed_files=$(git diff --cached --name-only)
if [ -n "$changed_files" ]; then
    echo "$changed_files" | xargs cat | \
    claude "これらの変更をレビューして、問題があれば指摘してください"
fi

🔧 Arch Linux / macOS 固有の設定

Arch Linux

# AURヘルパーとの統合
function aur-with-claude() {
    local package="$1"
    yay -G "$package"
    cd "$package"
    claude "このPKGBUILDをレビューして、セキュリティ上の問題がないか確認してください"
}

macOS

# Homebrew formula作成支援
function brew-formula-helper() {
    local app_name="$1"
    claude "Homebrew formulaを作成してください: $app_name"
}

📊 パフォーマンス最適化

tmuxでの並列実行

# 複数のClaude Codeセッションを並列実行
function claude-parallel() {
    tmux new-session -d -s claude1 "claude 'タスク1を実行'"
    tmux new-session -d -s claude2 "claude 'タスク2を実行'"
    tmux new-session -d -s claude3 "claude 'タスク3を実行'"
}

リソース監視

# Claude Code実行中のリソース使用状況を監視
function claude-monitor() {
    claude "$@" &
    local pid=$!
    
    while kill -0 $pid 2>/dev/null; do
        ps -p $pid -o %cpu,%mem,cmd
        sleep 1
    done
}

🔐 セキュリティ考慮事項

  1. APIキーの管理

    # 環境変数を使用
    export ANTHROPIC_API_KEY="$(pass show anthropic/api-key)"
    
  2. サンドボックス実行

    # Firejailを使用 (Arch Linux)
    alias claude-safe='firejail --private claude'
    
  3. 監査ログ

    # すべてのClaude Codeセッションを記録
    alias claude='script -a ~/claude-logs/$(date +%Y%m%d-%H%M%S).log claude'