07 ベストプラクティス(公式 Best practices の要約)
更新日:
大前提: コンテキストはすぐ埋まり、埋まるほど性能が落ちる。ほぼ全ての工夫はここから来ている。
1. Claude に「検証手段」を渡す(最重要)
Claude は「終わったように見えたら」止まる。合否が分かるチェック(テスト、ビルド、lint、スクリーンショット比較)を渡せば、合格するまで自分で直し続ける。渡さないと、あなたが検証係になる。
| 戦略 | ✗ 前 | ○ 後 |
|---|---|---|
| 検証基準を示す | 「メールアドレス検証関数を作って」 | 「validateEmail を作って。例: user@example.com は true、invalid は false、user@.com は false。実装後テストを実行して」 |
| UI は見た目で検証 | 「ダッシュボードをいい感じに」 | 「[スクショ] このデザインを実装して。結果をスクショして元と比較し、差分を列挙して直して」 |
| 根本原因を直す | 「ビルドが落ちる」 | 「このエラーでビルドが落ちる: [エラー]。直してビルド成功を確認して。エラーを握りつぶさず根本原因を直して」 |
検証の強さの段階:
- 1回のプロンプトで「チェックを実行して通るまで繰り返して」
- セッション全体で
/goal 条件(別のモデルが毎ターン判定) - 決定的に Stop Hook(スクリプトが通るまでターンを終わらせない)
- 第三者の目で 検証用サブエージェントやワークフロー(作った本人に採点させない)
→ 成功を「宣言」させず、証拠(テスト出力、実行したコマンドと結果、スクショ)を見せてもらう。
2. 調査 → 計画 → 実装 → コミット
いきなりコードを書かせると「違う問題を解く」ことがある。
- 調査(プランモード): 「src/auth を読んでセッションとログインの仕組みを理解して」
- 計画: 「Google OAuth を追加したい。どのファイルを変える?フローは?計画を作って」(
Ctrl+Gで計画を直接編集) - 実装(プランモード解除): 「計画通り実装して。コールバックのテストを書いて実行し、失敗を直して」
- コミット: 「分かりやすいメッセージでコミットしてPRを作って」
※ 1文で差分を説明できる小さな修正(typo、ログ追加、変数名変更)は計画不要。
3. プロンプトに具体的な文脈を入れる
| 戦略 | ✗ | ○ |
|---|---|---|
| 範囲を絞る | 「foo.py のテストを追加」 | 「foo.py の、ログアウト状態のエッジケースのテストを書いて。モックは使わない」 |
| 情報源を示す | 「なぜこのAPIは変なの?」 | 「ExecutionFactory の git 履歴を見て、API がこうなった経緯を要約して」 |
| 既存パターンを示す | 「カレンダーウィジェット追加」 | 「ホーム画面の既存ウィジェットの実装を見て。HotDogWidget.php が良い例。そのパターンで…既存ライブラリ以外は使わずに」 |
| 症状を伝える | 「ログインのバグ直して」 | 「セッションタイムアウト後にログイン失敗すると報告あり。src/auth/ のトークン更新を確認。再現する失敗テストを書いてから直して」 |
リッチな渡し方: @ファイル、画像を貼る、URL を渡す、cat error.log | claude、「自分で調べて」と任せる。
※ 探索段階ではあえて曖昧な質問(「このファイルで改善するなら?」)も有効。
4. 環境を整える
- CLAUDE.md を書く(
/init→ 育てる、短く保つ) → 04_CLAUDE.mdとメモリ - 権限を設定(
/permissionsで安全なコマンドを許可、/sandbox) → 05_権限とセキュリティ - CLI ツールを使わせる:
gh,aws,gcloudなど。外部サービスと最もコンテキスト効率よく連携できる。「foo --helpで使い方を調べてから使って」も有効 - MCP を接続:
claude mcp add --transport http notion https://mcp.notion.com/mcp - Hooks: 例外なく毎回やらせたいこと(「編集後に eslint」「migrations フォルダへの書き込み禁止」)。Claude に書かせられる
- Skills:
.claude/skills/に手順や知識を置く - サブエージェント:
.claude/agents/に専門家を定義 - プラグイン:
/pluginで探す。型のある言語ならコードインテリジェンスプラグイン
5. 上手にコミュニケーションする
- 新しいコードベースでは先輩エンジニアに聞くように質問する(「ログはどう動く?」「新しいAPIエンドポイントの作り方は?」)
- 大きな機能は Claude にインタビューさせる:
→ 仕様ができたら新しいセッションで実装(きれいなコンテキストで)。良い仕様 = 関係ファイルとインターフェースを明記、範囲外を明記、最後にE2E検証手順[作りたいもの] を作りたい。AskUserQuestion ツールで詳しくインタビューして。 技術的な実装、UI/UX、エッジケース、懸念、トレードオフについて。自明な質問はせず、 私が考えていない難しい部分を掘って。全部カバーしたら SPEC.md に仕様を書いて。
6. セッションを管理する
- 早めに・頻繁に軌道修正:
Escで停止、Esc Esc//rewindで巻き戻し、「今のを元に戻して」 - 同じ問題で2回以上訂正したら
/clearして、学んだことを入れたより良いプロンプトでやり直す(失敗の履歴で汚れた長いセッションより、きれいな短いセッションが勝つ) - 無関係な作業の間は
/clear - 調査はサブエージェントに: 「サブエージェントを使って認証のトークン更新の仕組みと、再利用できる OAuth ユーティリティがあるか調べて」
- チェックポイントがあるので大胆な案も試せる
/renameしてセッションをブランチのように扱う
7. 自動化とスケール
- 非対話モード:
claude -p "..." --output-format jsonを CI・スクリプトに → 15_自動化(headless・goal・loop・routines・CI) - 複数セッション並列: worktree、デスクトップアプリ、クラウド、エージェントビュー → 14_並列作業(Worktree・Agent View・Workflows)
- Writer / Reviewer パターン: セッションAが実装、セッションBが(作った本人のバイアスなしに)レビュー。テストを書くClaudeと実装するClaudeを分けるのも有効
- ファンアウト:
/batch 指示、またはfor file in ...; do claude -p "..." --allowedTools "Edit,Bash(git commit *)"; done(最初の2〜3件で調整してから全件) - Auto モードで中断なく実行
- 敵対的レビュー: 完了扱いにする前に、サブエージェントに差分をレビューさせる(
/code-reviewや「PLAN.md と比較して抜けを報告して。スタイルの好みでなく正しさに関わる抜けだけ」)。※レビュアーは頼まれると何かしら指摘するので、全部追うと過剰設計になる
よくある失敗パターン
| 失敗 | 対策 |
|---|---|
| 何でも詰め込みセッション(関係ない話を行き来) | 作業ごとに /clear |
| 何度も訂正(失敗した試みでコンテキストが汚れる) | 2回失敗したら /clear して良いプロンプトで再開 |
| CLAUDE.md の書きすぎ(重要なルールが埋もれる) | 容赦なく削る。書かなくても守れることは消すか Hook に |
| 信用して検証しない(もっともらしいがエッジケース未対応) | 必ず検証手段を。検証できないなら出荷しない |
| 終わりのない調査(範囲なしの「調べて」で何百ファイル読む) | 範囲を絞る or サブエージェントで |
直感を育てる
上記は出発点。深い問題に取り組んでいる時は履歴を残すべきだし、探索的な作業では計画を飛ばしていい。うまくいった時・いかなかった時に「何が違ったか(プロンプト、文脈、モード)」を観察する。