「Cursorに指示したけど、全然違うファイルを修正された」 「Reactのコンポーネントを作らせたら、プロジェクトの設計ルールを無視された」
もしあなたがこう感じているなら、それはあなたの「プロンプト(指示)」が悪いのではありません。 AIに渡している「コンテキスト(文脈)」が汚れているのです。
現在のAI開発において、勝負を決めるのは「呪文のような長いプロンプト」を唱える技術ではありません。AIが迷子にならないように、プロジェクトの中に「正しい地図」を置いてあげる技術です。
今回は、私が実践している「AIに神コードを書かせるための環境づくり」について解説します。
1. なぜ「プロンプト」だけではダメなのか?
AI(LLM)は、巨大な図書館の司書のようなものです。 あなたが「美味しいカレーの作り方を教えて」と聞くと、司書は手元にある本の中から答えを探します。
- プロンプトエンジニアリング: 「世界で一番美味しくて、スパイスが効いていて、でも子供でも食べられるカレーの作り方を、300文字以内で、箇条書きで教えて」と、質問の仕方を工夫すること。
- コンテキストエンジニアリング: 司書の机の上に、あらかじめ**「我が家の冷蔵庫の中身リスト」と「過去に作って好評だったレシピ集」を置いておく**こと。
どちらが良い結果が出るかは明白です。 Cursorにおいて、プロジェクト内のファイル構成やドキュメント整備こそが、この「机の上に置く資料」にあたります。
2. 魔法のファイル「architecture.md」を作れ
Cursorの Ctrl+L や Cmd+K で指示を出す前に、プロジェクトのルートディレクトリに docs/architecture.md (または project_map.md)というファイルを作ってください。
AIはプロジェクト全体をスキャンしますが、数千ファイルある大規模プロジェクトでは「どれが重要か」判断できません。だから、人間が「地図」を作ってあげるのです。
architecture.md の記述例
Markdown
# Project Architecture Map
## 1. ディレクトリ構造の意図
- `/components/ui`: Shadcn UIなどの汎用パーツ。直接編集禁止。
- `/features`: 機能ごとのドメインロジック。
- `/features/auth`: 認証関連。
- `/features/dashboard`: ダッシュボード画面。
- `/lib`: 外部APIクライアントやユーティリティ。
## 2. データの流れ
- データ取得は必ず React Query を経由する。
- 状態管理は原則として URL Search Params を優先し、Zustandはグローバル設定のみに使用する。
## 3. 重要なルール
- ファイル名はケバブケース (`user-profile.tsx`)。
- エクスポートは Named Export を使用する。
指示を出すとき、プロンプトの最後に 「@architecture.md を参照して」 と一言添えるだけで、AIの出力は驚くほどプロジェクトの規約に準拠したものになります。
3. 「tech_stack.md」で「知らない」をなくす
AIは最新のライブラリの仕様を知らないことがあります。あるいは、あなたのプロジェクトで使っている「特定のバージョンの書き方」を知りません。
これを防ぐために、docs/tech_stack.md を用意します。
tech_stack.md の記述例
Markdown
# Tech Stack & Libraries
## Routing
- Next.js App Router (v14)
- `useRouter` は `next/navigation` からインポートすること(`next/router` は禁止)。
## Styling
- Tailwind CSS + Tailwind Merge (`twMerge`)
- `clsx` を使用してクラスを結合する。
## Forms
- React Hook Form + Zod
- バリデーションスキーマは `/schemas` ディレクトリに定義する。
これを置いておけば、AIが古い Pages Router のコードを書いてきたり、非推奨の書き方を提案してくるイライラから解放されます。
4. フォルダ構成そのものを「プロンプト」にする
AIはファイルパス(置き場所)から、そのファイルの役割を推測します。 utils.ts という巨大なファイルに何でも詰め込むのはやめましょう。AIが混乱します。
- 悪い例:
/utils/helpers.ts(何でもありのゴミ箱) - 良い例:
/utils/date-formatter.ts,/utils/currency-calculator.ts
ファイル名を具体的にし、細かく分けること自体が、AIに対する「ここは日付処理のロジックだよ」「ここは金額計算だよ」という最強のプロンプトになります。
まとめ:あなたは「プロンプト職人」ではなく「図書館長」になれ
「すごいプロンプト」を探してTwitter(X)を徘徊するのはもうやめましょう。 その時間で、プロジェクトの中に docs/ フォルダを作り、仕様書やルールブックを整備してください。
- Prompt: 一回限りの命令。
- Context: 永続的な資産。
一度「良いコンテキスト(環境)」を作ってしまえば、あなたは「バグ直して」と一言つぶやくだけで、AIが完璧な修正を行ってくれるようになります。
これこそが、AI時代の本当の生産性向上です。