はじめに
Affaan Mustafa氏(@affaanmustafa)は、Anthropic x Forum Venturesハッカソンで「Zenith」を開発して優勝した開発者です。Claude Codeの日常的な使用から得た知見をまとめた記事は、X(Twitter)で90万ビュー、1万ブックマークを獲得しました。
本記事では、氏のガイドから「すぐに真似できる実践テクニック」を紹介します。Hooks設定のコピペ、並列ワークフローの使い分け、コンテキスト管理のルールなど、今日から使える具体的な設定を解説します。
5つの原則
Affaan氏が実践から導き出した5つの原則を紹介します。
1. 過度に複雑化しない
設定は「ファインチューニング」であって「アーキテクチャ」ではありません。最初から完璧な設定を目指すのではなく、実際の使用を通じて徐々に改善していくアプローチが推奨されます。Claude Codeはそのままでよく機能するため、過度なカスタマイズは不要です。
2. コンテキストウィンドウは貴重
未使用のMCPやプラグインは無効化しましょう。ツールが多すぎると、200kのコンテキストウィンドウが70kまで縮小する可能性があります。
3. 並列実行を活用
/forkコマンドで会話をフォークし、git worktreesと組み合わせることで、複数のタスクを同時に進行できます。
4. 繰り返し作業を自動化
Hooksを使って、フォーマット、lint、リマインダーなどの定型作業を自動化します。人間が覚えておく必要がなくなります。
5. Subagentのスコープ制限
Subagentには限定されたツールのみを許可します。スコープを絞ることで、集中した実行が可能になり、意図しない操作を防げます。
コピペで使えるHooks設定
Hooksは~/.claude/settings.jsonに追加します。以下の設定例は、そのままコピペして使用できます。
Prettier自動フォーマット(PostToolUse)
ファイル編集後に自動でPrettierを実行し、コードを整形します。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
]
}
}
console.log警告(PostToolUse/Stop)
開発中に残したconsole.logを検出して警告します。ファイル編集時とClaude応答完了時の2段階でチェックします。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "grep -n 'console.log' $CLAUDE_FILE_PATH && echo '⚠️ console.log found' || true"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "git diff --name-only | xargs grep -l 'console.log' 2>/dev/null && echo '⚠️ console.log残存あり' || true"
}
]
}
]
}
}
tmuxリマインダー(PreToolUse)
長時間実行されるコマンドの前に、tmuxの使用を促すリマインダーを表示します。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "if [ -z \"$TMUX\" ]; then echo '💡 Tip: tmux使用推奨(長時間コマンド対策)'; fi"
}
]
}
]
}
}
TypeScriptチェック(PostToolUse)
TypeScriptファイルの編集後に、型チェックを自動実行します。エラーがあれば最初の20行を表示します。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "if [[ $CLAUDE_FILE_PATH == *.ts || $CLAUDE_FILE_PATH == *.tsx ]]; then npx tsc --noEmit $CLAUDE_FILE_PATH 2>&1 | head -20; fi"
}
]
}
]
}
}
Hooks統合例
複数のHooksを組み合わせた実用的な設定例です。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "if [ -z \"$TMUX\" ]; then echo '💡 Tip: tmux使用推奨(長時間コマンド対策)'; fi"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
},
{
"type": "command",
"command": "grep -n 'console.log' $CLAUDE_FILE_PATH && echo '⚠️ console.log found' || true"
},
{
"type": "command",
"command": "if [[ $CLAUDE_FILE_PATH == *.ts || $CLAUDE_FILE_PATH == *.tsx ]]; then npx tsc --noEmit $CLAUDE_FILE_PATH 2>&1 | head -20; fi"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "git diff --name-only | xargs grep -l 'console.log' 2>/dev/null && echo '⚠️ console.log残存あり' || true"
}
]
}
]
}
}
並列ワークフローの実践
Claude Codeでは、複数のタスクを並列に実行することで効率を大幅に向上できます。
/forkの使い方
/forkコマンドは、現在の会話を分岐させて別のタスクを並列実行するための機能です。
使用シーン:
- フロントエンドとバックエンドの同時開発
- 複数の独立したバグ修正
- ドキュメント作成と実装の並行作業
# 会話中で/forkを実行
/fork
# 新しいセッションが開始され、元のコンテキストを引き継ぎつつ
# 別のタスクに取り組める
git worktreesとの組み合わせ
同一ファイルを編集する可能性がある場合は、git worktreesを使用します。
# 新しいworktreeを作成
git worktree add ../feature-branch feature-branch
# worktree一覧を確認
git worktree list
# 不要になったworktreeを削除
git worktree remove ../feature-branch
判断基準
| 状況 | 推奨方法 |
|---|---|
| 異なるファイル群を編集 | /fork |
| 同一ファイルを編集する可能性あり | git worktrees |
| 短時間の調査・質問 | /fork |
| 長期的な機能開発 | git worktrees |
ポイント: /forkは軽量で手軽、git worktreesは確実に競合を防げます。タスクの性質に応じて使い分けましょう。
コンテキスト管理の実践ルール
200k → 70k問題
Claude Codeのコンテキストウィンドウは200kトークンですが、MCPやプラグインのツール定義が大量に読み込まれると、実質的に使えるコンテキストが70k程度まで減少することがあります。
Affaan氏のルール
著者は以下のルールを実践しています。
- MCP設定数: 20-30個まで
- プロジェクトごとの有効化: 10個以下
- 総ツール数: 80個以下を維持
disabledMcpServersの設定
使用しないMCPサーバーを無効化する設定です。~/.claude/settings.jsonに追加します。
{
"disabledMcpServers": [
"supabase",
"vercel",
"railway"
]
}
プロジェクトごとに有効/無効を切り替える場合は、プロジェクトルートの.claude/settings.jsonで上書きできます。
/compactの適切なタイミング
/compactコマンドは、コンテキストを圧縮して容量を確保します。
実行タイミングの目安:
- コンテキスト使用率が50-60%に達したとき
- 長いタスクの区切りがついたとき
- 新しい大きなタスクに着手する前
/statusコマンドでコンテキスト使用率を確認できます。
著者の実際の設定例
Affaan氏が実際に使用している設定を紹介します。
有効プラグイン(同時4-5個)
| プラグイン | 用途 |
|---|---|
| ralph-wiggum | ループ自動化 |
| frontend-design | UI/UXパターン |
| typescript-lsp | TypeScript補完 |
| context7 | ライブドキュメント参照 |
| mgrep | 改良版検索 |
MCP設定
14個のMCPを設定済みで、プロジェクトの性質に応じて5-6個を選択的に有効化しています。
Key Hooks
- PreToolUse: tmuxリマインダー、.md作成ブロック、git push前レビュー
- PostToolUse: Prettier自動実行、TypeScriptチェック、console.log警告
- Stop: console.log監査
まとめ
Affaan氏の5つの原則を振り返ります。
- 過度に複雑化しない - 設定は段階的に改善
- コンテキストウィンドウは貴重 - 未使用ツールを無効化
- 並列実行を活用 - /forkとgit worktreesの使い分け
- 繰り返し作業を自動化 - Hooksで定型作業を排除
- Subagentのスコープ制限 - 限定ツールで集中実行
推奨アプローチ: まずはHooks設定から始めましょう。Prettier自動フォーマットやconsole.log警告など、すぐに効果を実感できる設定を導入し、徐々にMCPの最適化や並列ワークフローへと拡張していくのが効果的です。