# How I Use Claude Code
[How I Use Claude Code | Boris Tane](https://boristane.com/blog/how-i-use-claude-code/)
![[Pasted image 20260310094339.png]]
## 概要
Claude Codeを使いこなすための、計画と実装を厳密に分離するワークフローである。
AIにコードを書かせる前に、必ず計画書を作成させ、人間のレビューと承認を経ることを原則とする。
このプロセスにより、無駄なトークン消費を防ぎ、アーキテクチャの制御を維持できる。
## ワークフローの各フェーズ
### 1. リサーチ (Research)
- 実装前にコードベースを深く理解させるためのフェーズである。
- 「深く」「詳細に」といった明示的な指示(Directive)を与え、表面的な理解を防ぐ。
- 調査結果は必ず `research.md` という永続的なMarkdownファイルに書き出させる。
- 人間は `research.md` をレビューし、キャッシュ層の無視やORM規約の違反などの誤解があれば、計画段階に入る前に修正する。
### 2. 計画 (Planning)
- リサーチ内容が承認された後、実装計画を `plan.md` に作成させる。
- Claude Code内蔵の計画モードではなく、独自に作成した `.md` ファイルを使用する。これによりエディタとの統合と永続性を確保する。
- 計画には、アプローチ、変更するファイルパス、コードスニペット、およびトレードオフを含める。
### 3. アノテーションサイクル (The Annotation Cycle)
- 計画書 (`plan.md`) を開発者とAI間の「共有されたミュータブルな状態 (shared mutable state)」として扱う。
- エディタ上で `plan.md` を開き、インラインで直接メモや修正(アノテーション)を追記する。
- Claudeにアノテーションを反映させる指示を出す。このサイクルを通常1〜6回繰り返す。
- **「まだ実装しないこと (don't implement yet)」** という制約(ガードレール)を必ず付与し、先走りを防ぐ。
- 最後に、計画書内に詳細なタスクとフェーズからなるToDoリストを追記させる。
### 4. 実装 (Implementation)
- 全ての意思決定が計画段階で完了しているため、実装は機械的な作業として扱う。
- 標準的な実装用[[Prompt Engineering|プロンプト]]の例:
- 「すべて実装せよ。タスクが終わったら `plan.md` のToDoに完了マークをつけること。全て終わるまで止まらないこと。」
- 「不要なコメントやJSDocを追加しないこと。`any` や未知の型を使わないこと。」
- 「継続的に型チェック (typecheck) を実行し、新たな問題が発生していないか確認すること。」
- これにより、型安全性を確保しつつ、中断のない連続的なコーディングを実現する。
## 実装中のフィードバックと軌道修正
- 実装が始まったら、開発者は「監督者 (supervisor)」の役割に移行する。
- 短く簡潔な指示(例:「`deduplicateByTitle` 関数が実装されていない」)で軌道修正を行う。
- フロントエンド開発では、視覚的なフィードバック(「もっと広く」「まだ見切れている」)を連続して与え、必要に応じてスクリーンショットを添付する。
- AIの修正が複雑になりすぎたり脱線した場合は、パッチを当てるのではなくGitで変更をリバートし、スコープを再設定する。
## 重要なプラクティス
- **スコープの削減:** スコープクリープを防ぐため、計画段階で「あったら良い機能 (nice-to-haves)」を積極的に削ぎ落とす。
- **インターフェースの保護:** 関数のシグネチャや公開APIに対しては厳格な制約を設ける。
- **単一の長いセッション:** リサーチ、計画、実装を一連の長い対話セッションで完結させる。Claudeのコンテキスト自動圧縮機能により、セッションが長引いても `plan.md` のような重要なアンカーは保持され、[[LLM]]はタスクに対する深いメンタルモデルを構築できる。