コンテキスト設計
このレッスンで学ぶこと
Claudeの出力品質は、提供するコンテキストに大きく依存します。このレッスンでは、何を含めるか、何を省くか、CLAUDE.mdを効果的に使う方法を説明します。
コンテキストとは?
コンテキストとは、会話中にClaudeが知っているすべての情報です:
- 読んだファイル
- 過去のメッセージ
- プロジェクト設定(CLAUDE.md)
- ツールの出力やコマンド結果
コンテキストは多ければ良いわけではありません。多すぎるとClaudeを混乱させ、トークンを無駄にします。
CLAUDE.md:プロジェクト設定ファイル
プロジェクトルートにCLAUDE.mdファイルを作成します。Claudeはセッション開始時に自動的にこれを読みます。
含めるべき内容:
- プロジェクト構造の概要
- 技術スタックと規約
- よく使うコマンド(ビルド、テスト、デプロイ)
- 重要なパターンやルール
例:
# My Project
## Stack
- Next.js 14 with App Router
- TypeScript strict mode
- Prisma + PostgreSQL
## Commands
- `npm run dev` - 開発サーバー起動
- `npm test` - テスト実行
- `npm run lint` - コードスタイルチェック
## Conventions
- デフォルトでServer Componentsを使用
- APIルートは /app/api/ に配置
- コンポーネントは100行以内に
短く保つ:CLAUDE.mdは毎セッションで読み込まれます。長いファイルは毎回トークンを無駄にします。
効果的なコンテキスト戦略
必要なものを具体的に伝える
「認証について手伝って」ではなく「/api/usersエンドポイントにJWT検証を追加して」と言いましょう。
関連ファイルを指定する
Claudeに検索させるのではなく、「UserモデルはSrc/models/user.tsにある」と伝えましょう。
制約を先に述べる
「既存の依存関係のみを使って」や「現在のAPI構造を維持して」など。
タスク切り替え時にコンテキストをクリア
別のタスクからの古いコンテキストはClaudeを誤解させる可能性があります。新しく始めるときは/clearを使いましょう。
よくある間違い:関数だけが必要なのにファイル全体を渡すこと。コンテキストが多い = ノイズが多い = 結果が悪くなる。
まとめ
- コンテキストは量より質が重要
- CLAUDE.mdでプロジェクト情報を自動的に伝える
- ファイル、制約、目標を具体的に伝える
- タスク切り替え時に古いコンテキストをクリア