🎯 この記事で得られること
Claude, Copilot等AIエージェントへ開発依頼しても思い通りにならないのは、あるある。
本記事の主題:AID(Agentic Intent-Driven Development: エージェント意図駆動開発)と GCENA フレームワーク。
- 💡 エージェントに伝わる「意図」の書き方
- 🧩 GCENA 5要素による意図の構造化
- 🔄 意図表明から検証済みコードまでの全体像
⚠️ AID が必要な理由
バイブコーディング — 自然言語でAIに指示し、出力を祈る開発スタイル。3つの欠陥:
- 🧠 記憶の不在 — 各プロンプトが独立
- 📜 契約の不在 — 前提のズレを検出不可
- 🔍 検証の不在 — 希望のみ残存
SDD(仕様駆動開発)は「人間による仕様記述」が前提。AID はその一歩先へ。
📈 手法の進化
- 🙏 バイブコーディング: 人間の祈り → コード生成
- 📝 SDD: 人間の仕様記述 → テスト〜検証
- 🎯 AID: 人間の意図表明 → 仕様〜検証
Intent → Spec → Tests → Code → Verification
(人間) (←―― エージェント ――→)
SDD: 仕様の人間記述。AID: 意図の表明のみ。
🧩 GCENA フレームワーク
GCENA = Goal, Constraints, Edge cases, Non-goals, Acceptance
良い意図の5要素(グセナ):
- 🎯 Goal — 目的と理由
- 🔒 Constraints — 制約事項
- ⚡ Edge cases — 懸念事項
- 🚫 Non-goals — 対象外の明示
- ✅ Acceptance — 受入基準
📋 GCENA 実例
- 🎯 GOAL: エクスポート完了時のリアルタイム通知 — 手動リフレッシュの不満解消
- 🔒 CONSTRAINTS: 既存WebSocket基盤の利用、アクセシビリティ必須
- ⚡ EDGE CASES: マルチタブ環境、WebSocket切断
- 🚫 NON-GOALS: メール通知、通知設定画面
- ✅ ACCEPTANCE: 別ページ遷移後の通知表示
意図 ≠ プロンプト(手順指示)。意図 ≠ 仕様(形式的要件定義)。宣言的な成功像の記述。
🔄 エージェントループ
GCENA による意図表明後、エージェントの5フェーズ自律実行:
- 💬 Clarify — 質問による曖昧さの解消
- 📐 Specify — 意図からの仕様導出
- 🧪 Test — 受入基準のテストコード化
- 🔨 Build — RED→GREEN→REFACTOR(TDDサイクル)
- ✅ Verify — 信頼の連鎖の検証
🧑 人間の出番:最初(意図)と最後(確認)のみ。
💬 明確化インタビュー
曖昧な意図 = 失敗ではなく出発点。
✅ 良い質問の例:
- 「ログインへリダイレクト?エラー表示?」
- 「全ユーザー対象?管理者限定?」
❌ 悪い質問の例:
- 「もう少し詳しく教えてほしい」
🐛 質問の数 = 防止されるバグの数
🎚️ 意図の3レベル
1️⃣ ワンライナー — 一行の意図表明
例:「ダークモードの追加」
2️⃣ 構造化ブリーフ — GCENA 5要素による1-2段落の記述
3️⃣ 対話型 — 会話による意図の明確化:
🧑「権限管理の見直し」
🤖「テンプレート導入?タイプ数削減?」
🧑「テンプレート。個別カスタマイズは維持」
📜 プロジェクトレベルの意図
機能単位の意図(GCENA)に加え、プロジェクト全体の原則も意図として定義可能
AGENTS.md = エージェントの憲法 ⚖️
- SDD: 仕様が唯一の真実源(SSoT)
- TDD(テスト駆動開発): RED → GREEN → REFACTOR
- Pareto: 理解優先、行動は二の次
- Minimalism: Fail → STOP 🛑
4行による巨大なレバレッジ。
🛠️ /aid スキル
コード記述前の意図構造化ツール。Claude Code / OpenCode で利用可能
/aid "通知システムの追加"
- 🎯 G — 変更の目的と理由
- 🔒 C — 制約のストレステスト
- ⚡ E — エッジケースの提案
- 🚫 N — 想定される誘惑の提示
- ✅ A — 受入基準の検証
📄 意図ファイル = SSoT(単一真実源)
150語以内。簡潔さによる意図の凝縮。
- Intent: タイトル
- Goal: 1-2文
- Constraints: 番号リスト
- Edge cases: 各1行
- Non-goals: 簡潔に
- Acceptance: 簡潔に
📁 intents/YYYYMMDD-intent-<topic>.md として永続化
🕳️ よくある落とし穴
🔧 意図の書きすぎ — How(実現方法)まで指定してしまい、エージェントの領域へ不法侵入
→ Whatへの集中
🌀 宣言と手続きの混在 — 意図の途中から実装指示への逸脱
→ 制約と好みの分離
🌫️ 意図の書かなすぎ — 願望のみでゴールも制約も不在
→ ゴール+制約を最低1つ
💣 非ゴールの忘却 — エージェントによるありがた迷惑な作り込み(Over-engineering)
→ 非ゴールを常に1つ以上設定
🏁 まとめ
- ⌨️ コード記述 → 🎯 意図表明
- 📝 仕様記述 → 🤖 エージェントによる導出
- 🧪 テスト記述 → 🤖 エージェントによる生成
- 🐛 デバッグ → 🤖 エージェントによる自律修正
最重要スキル:🎯 意図の表現。
🚀 今日からの第一歩:
次のタスクでGCENAの5要素を記述し、エージェントに丸投げしてみる。
必要なのは「あなたの意図」だけ。残りはエージェントがよしなにやる — 仕様作成から検証済みコードまで。