皆さんこんにちは、ばしおです。
昨今は様々なAIを使った開発が当たり前になってきました。
- ChatGPTやClaude、Geminiで要件や構想を壁打ち
- CodexやClaude Code、Cursorで実装
当たり前のようにやっていることだと思いますが、こんな違和感はありませんか?
よくある違和感
- 壁打ちでは納得感のある議論ができた
- でも実装AIにはまた一から説明している
- 会話でやり取りした内容が実装に反映されていない
これはAIの性能不足ではなく、
文脈が途中で途切れていることが原因です。
問題の正体:フェーズ間の「文脈断絶」
- 壁打ちフェーズ:文脈が豊富
- 実装フェーズ:コードは見えるが、判断理由が見えない
このギャップのせいで、実装フェーズで毎回「説明し直す」ことになります。
この記事で伝えたいこと(忙しい人向け)
- 壁打ちで決めたことが、実装フェーズで失われがちな問題を扱います
- 解決策として「会話 → 構造化 → 実装」を分ける CDD を紹介します
- 壁打ちは好きなAIでOK(ChatGPT / Claude / Gemini)
- 会話内容は
handoff.ymlにまとめてから実装に渡します - 実装前に検証し、規模に応じた実装方法を選びます
→ AIとの会話で決めたことを、実装までちゃんと届ける方法を解説します
会話ログ駆動開発(CDD)とは
CDD(Conversion-Driven Development)は、
好きなAIと自由に壁打ちした結果を、
解釈可能な形(handoff.yml)に落とし込み、
実装フェーズへ文脈ごと引き渡す開発スタイル
です。
ここで重要なのは、
「どのAIで考えるか」と「どのAIで実装するか」が分かれていてもいいということです。
全体像
CCDでは、AIを使った開発を3つのLane(役割)に分けて整理します。
- Idea Lane:壁打ちする
- Context Lane:会話を構造に落とす
- Code Lane:コードを書く
Idea Lane:好きなAIで、好きなだけ考える
Idea Laneでは、AIの種類は問いません。
自分が普段よく使うAIで壁打ちをしましょう。
目的はただ一つ。
「この方向で行こう」と腹落ちするところまで考えることです。
このフェーズでは、
- 話が揺れてもOK
- 方針が変わってもOK
- 迷いが残ってもOK
壁打ちをする際はそれが自然なので、納得するまで壁打ちをしましょう。
Context Lane:会話を「handoff.yml」に変換する
Idea Laneの会話は、そのままではCode Laneには渡せません。
- 会話は長い
- 判断材料が散らばっている
- ノイズが多い
そこでContext Laneを挟みます。
Context Laneの役割
→人間向けの会話を、実装AI向けの前提条件に翻訳する
handoff.ymlのイメージ(省略)
handoff_pack:
meta:
title: "ミニマルで美しいポモドーロタイマーアプリ"
version: "v1"
created_at: "2025-12-17"
source: "Claude conversation with Makoto"
lane: "idea"
background:
why: "シンプルで美しいUIに特化したポモドーロタイマーを作成したい"
problem: "基本的なポモドーロテクニックを実装した、ミニマルなデザインのタイマーアプリケーションが必要"
decisions:
agreed:
- "ミニマルで美しいUIに特化する"
- "機能はシンプルなポモドーロタイマーのみ"
- "技術スタックはReact + Vite"
- "25分作業、5分短い休憩、15-30分長い休憩、4サイクル後に長い休憩"
- "円形プログレスバーで残り時間を視覚的に表示"
- "大きな数字で残り時間を中央に配置"
- "色の変化で作業/休憩を区別(作業=青系、休憩=緑系)"
open_questions:
must_decide_before_coding: []
scope:
in:
- "25分の作業タイマー"
- "5分の短い休憩タイマー"
- "長い休憩タイマー(4サイクル後)"
- "開始/一時停止/リセット機能"
out:
- "タスク管理機能"
- "統計・分析機能"
- "チーム共有機能"
これは設計書ではありません。
「これを前提にすれば、もう会話を読み返さなくていい」
その状態を作るための文脈パッケージです。
Code Lane:実装特化AIに任せる
Code Laneでは、Claude CodeやCursorなど、
コードを読み書きするのが得意なAIを使います。
Code LaneのAIが見るのは
- 既存コードベース
- handoff.yml
逆に、見せなくてよいのは
- 壁打ちの全文ログ
- 試行錯誤の履歴
- 感情的な迷い
これによって実装AIは
「何を」「なぜ」作るのかを理解した状態でコードだけに集中できる
ようになります。
CDDのやり方
先述の通り、CDDは3つのLaneがあります。
それぞれ具体的にどのように行うのか紹介します。
Idea Lane : 自由に考え、議論する
Idea Laneでは、特別なルールや手順は必要ありません。
- アイデアを出す
- 要件を考える
- 制約や代替案を議論する
と言ったことを、ChatGPT / Claude / Geminiなど、
好きなAIを使って自由に行います。
この時点では未確定事項が残ってもよいです。
Context Lane : 会話を確定情報に変換する
Context Laneでは、Idea Laneの会話をもとに
文脈を構造化し、実装に渡せる形に変換します。
ここでは、Idea Laneで会話したチャットに下記のプロンプトを貼り付けます。
すると、未確定事項がある場合はそれに対する質問が投げられます。
それに対して答えて、未確定事項がなくなると、handoff.ymlが生成されます。
Code Lane : handoff.ymlを前提に実装する
Code Lane は、Context Lane で作成した handoff.yml を入力として、
実際にコードを書いていくフェーズです。
このフェーズでは、
handoff.yml に記載された内容を前提条件として扱い、
追加の要件定義や解釈は行いません。
1. CDD用コマンドをインストールする
まず、npx コマンドを使って
CDD用のカスタムスラッシュコマンドをインストールします。
npx @basio0916/cdd
実行後は対話形式で、
- 利用するAIエージェント(Claude Code / Cursorなど)
- コマンドのインストール先(ローカル / グローバル)
を選択します
選択した環境に応じて、/cdd:*または/cdd-*系のコマンドが利用可能になります。
2. /cdd:verifyでhandoff.ymlを検証する
Context Lane で生成された handoff.yml を、
そのまま実装に使う前に検証を行います。
/cdd:verify
(handoff.yml を貼り付ける)
このコマンドでは、
- handoff.yml の内容とコードベースの整合性
- 実装開始に必要な情報が揃っているか
- 実装前に決めるべき事項が残っていないか
を確認します。
検証が成功すると、
Code Lane 用に確定したhandoff.ymlが
.cdd/<slug>/handoff.ymlとして保存されます。
以降の実装では、このファイルを参照します。
3. 実装手法を選択する
検証後は、プロジェクトの規模や進め方に応じて、
3つの実装手法のいずれかを選択します。
①Direct Implementation(直接実装)
handoff.yml を前提に、
そのまま実装を進める方法です。
/cdd:impl-direct <slug>
向いているケース
- 小〜中規模の実装
- 修正範囲が明確
- 実装内容が比較的単純
短いフローで実装を進めたい場合に使用します。
②Task-Oriented Implementation(タスク分解実装)
まず handoff.yml から実装タスクを作成し、
タスク単位で実装を進める方法です。
# タスク分解
/cdd:tasks <slug>
# 実装
/cdd:impl <slug> <task_id>
向いているケース
- 実装規模が大きい
- 影響範囲が広い
- 段階的に実装を進めたい
タスクは Phase → Task の構造で管理され、
進捗は tasks.yaml で確認できます。
③CDD-SDD Hybrid(cc-sdd連携)
cc-sdd(Spec-Driven Development)と連携して、
仕様駆動開発のプロセスで実装を進める方法です。
cc-sddの/kiro:spec-initを実行した後に、下記コマンドを実行します。
/cdd:cc-sdd <cdd:slug> <cc-sdd:slug>
するとcc-sddのrequirements.mdファイルが更新されるので、
cc-sddの/kiro:spec-requirementsコマンドでフォーマットを調整します。
その後はcc-sddの流れで開発すればOKです。
向いているケース
- cc-sddで開発をしたい
- ドキュメント生成も重視したい
- チーム開発や長期運用が前提
CDDの最小手順まとめ
- 好きなAIで壁打ちする(Idea Lane)
- context-lane プロンプトを実行し、handoff.yml を作る(Context Lane)
- npx @basio0916/cdd でコマンドを導入
- /cdd:verify で handoff.yml を検証
- 規模に応じて実装手法を選び、実装する(Code Lane)
まとめ
CDDは、新しい開発手法というよりも、
「AIとの会話で生まれた文脈を、実装までちゃんと届けるための整理方法」です。
普段やっている
- 壁打ち
- 実装
の間に、handoff.yml を1枚挟むだけで、
AIとの開発体験がかなり安定します。
まずは小さな機能から試してみてください。

