2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTとClaude Codeをつなぐ開発フロー:会話ログ駆動開発(CDD)

Last updated at Posted at 2025-12-20

皆さんこんにちは、ばしおです。
昨今は様々なAIを使った開発が当たり前になってきました。

  • ChatGPTやClaude、Geminiで要件や構想を壁打ち
  • CodexやClaude Code、Cursorで実装

当たり前のようにやっていることだと思いますが、こんな違和感はありませんか?

よくある違和感

  • 壁打ちでは納得感のある議論ができた
  • でも実装AIにはまた一から説明している
  • 会話でやり取りした内容が実装に反映されていない

これはAIの性能不足ではなく、
文脈が途中で途切れていることが原因です。

問題の正体:フェーズ間の「文脈断絶」

image.png

  • 壁打ちフェーズ:文脈が豊富
  • 実装フェーズ:コードは見えるが、判断理由が見えない

このギャップのせいで、実装フェーズで毎回「説明し直す」ことになります。

この記事で伝えたいこと(忙しい人向け)

  • 壁打ちで決めたことが、実装フェーズで失われがちな問題を扱います
  • 解決策として「会話 → 構造化 → 実装」を分ける 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:コードを書く

image.png

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:verifyhandoff.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の最小手順まとめ

  1. 好きなAIで壁打ちする(Idea Lane)
  2. context-lane プロンプトを実行し、handoff.yml を作る(Context Lane)
  3. npx @basio0916/cdd でコマンドを導入
  4. /cdd:verify で handoff.yml を検証
  5. 規模に応じて実装手法を選び、実装する(Code Lane)

まとめ

CDDは、新しい開発手法というよりも、
「AIとの会話で生まれた文脈を、実装までちゃんと届けるための整理方法」です。

普段やっている

  • 壁打ち
  • 実装

の間に、handoff.yml を1枚挟むだけで、
AIとの開発体験がかなり安定します。

まずは小さな機能から試してみてください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?