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のアップデートと進化する開発ニーズの両方に合わせて、設定を定期的にレビューおよび更新することを忘れないでください。