cc-sddの仕様駆動開発についてまとめてみるの記事サムネイル

cc-sddの仕様駆動開発についてまとめてみる

はじめに

最近実務でcc-sddの手法を使って開発をすることになりました。 この記事ではcc-sddの概要と利点、実践方法についてまとめてみます。

Why

AIを使ってコードを書くのが昨今当たり前になってきており、 これまでの開発とは考えられないようなスピード感でコードが書けるようになりました。 しかし、その反面で以下のような問題も出てきます。

  • 仕様と微妙にずれている
  • 想定していた振る舞いと違う
  • 必要以上にファイルや関数が増える

結果的に、AIが生成したコードを人間がレビュー・修正する作業が増えてしまい、 思ったほど開発効率が上がらない、ということはよくある話です。

また、セッションごとにAIが記憶喪失になってしまい、 頑張って支持したプロジェクト特有のルールや規約を忘れてしまう問題もあります。

これがcc-sdd(仕様駆動開発)を使うことで、 AIとの間に認識のズレをなくし、手戻りを大幅に減らすことができます。

What

cc-sddとは

https://github.com/gotalab/cc-sdd

cc-sddはGotaさんが開発した、Kiro式の仕様駆動開発ツールです。 どんなツールかというと、 「AIにコードを書かせる前に、文脈・要件・設計・タスクを明文化し、人間とAIが合意してから実装する開発手法」です。

cc-sddを使うことで、以下のようなメリットがあります。

  • 要件・設計・タスク・参照情報を一元管理できる
  • 新規開発・既存システムのどちらでも使える
  • 複数エージェント(Claude / Cursor / Codex / Gemini / Copilot など)を同時に使える
  • 永続的なプロジェクトメモリ

How

cc-sddの各フェーズは、 AIとの認識ズレが起きやすいポイントを、 実装前から順番に潰していくように設計されています。

cc-sddにおける開発の流れは以下の通りです。

  1. ステアリング (Steering / コンテキスト収集)
  2. 仕様策定の開始 (Spec Initiation)
  3. 要件定義 (Requirements)
  4. 設計 (Design)
  5. タスク計画 (Task Planning)
  6. 実装 (Implementation)
  7. 品質ゲート (Quality Gates)
  8. 進捗追跡 (Status Tracking)

順番に解説していきます。

1. ステアリング (Steering / コンテキスト収集)

アーキテクチャ、命名規則、ドメイン知識などを各ファイルにまとめていきます。 これらはプロジェクトメモリとして保存され、以降AIがコードを書く際に参照されます。

2. 仕様策定の開始 (Spec Initiation)

機能単位でワークスペースを確保します。

3. 要件定義 (Requirements)

AIとの対話を通じて、要件を明確にしていきます。 ここにはEARS形式の要件や未解決の課題が含まれます。

EARS型式について補足しておきます。 EARS(Easy Approach to Requirements Syntax)は、 「When/While/If/Where/Then」という語順を固定し、 常時・状態・イベント・複合・オプション・不要動作の六つのパターンで、 要求をテンプレート化する制御付き自然言語です。

4. 設計 (Design)

まず調査フェーズとして、必要な情報を収集します。 その内容に基づいて、詳細設計書を作成します。 この設計書は、要件を満たしているか、どんな構成を作るのか、さらに参考文献が一目で分かり、 レビューしやすいことを目的としたドキュメントです。

5. タスク計画 (Task Planning)

設計書をもとに、実装タスクをTODOリストとしてまとめます。 各タスクがどの要件を満たすものかを明確にし、 順番に進め流べき作業と、並行で進めても良い作業を分けて整理します。

6. 実装 (Implementation)

指定されたタスクを一つの単位として、 TDD(テスト駆動開発)前提でコードを書いていきます。

7. 品質ゲート (Quality Gates)

既存コードとの整合性や、設計・実装の品質をチェックします。 これにより、既存プロジェクトにおいても安全に開発を進めるための基準を確立します。 言い換えると、ガードレールのような役割を果たします。

8. 進捗追跡 (Status Tracking)

各タスクの進捗状況を追跡し、完了したタスクと未完了のタスクを明確にします。 全てのフェーズは、開発者のレビューのために、フェーズごとに都度停止します。

おわりに

cc-sddはAIを活用した開発において、 認識のズレを最小限に抑え、効率的かつ高品質なソフトウェア開発を実現するための強力な手法です。 実務で使う際には、ぜひこの記事を参考にしてみてください。