📝

cc-sddで仕様駆動開発を試してみた

に公開

こんにちは、株式会社カンリーのエンジニアの桑野です。AIを使ったコーディングが一般化しつつありますが、今回は最近注目を集めている「仕様駆動開発(SDD: Spec-Driven Development)」と、その実装の一つである「cc-sdd」を試してみた経験を共有したいと思います。

仕様駆動開発(SDD)とは

AIの登場により、Vibe Coding(自然言語で指示を出してAIにコードを生成させる方法)が活発になりました。しかし、そのアプローチでは「最適化されていないコード」や「どうなっているんだっけ?」という実装が増えるという課題も顕在化してきました。

SDDは、そのような課題に対処するために登場したAI開発手法です。従来の人の手による開発と同じように「要件定義 → 設計 → 実装」という流れで仕様を明確にしていくことで、曖昧さや再現性の低さを回避します。人間が開発する際の流れと同じように、段階的に具体的にしていくのが特徴です。

SDDの実装としてはKiroが有名ですが、今回はClaudeCodeでもSDDができ、日本語対応がされている「cc-sdd」を試してみました。


最近利用が増えている:https://npmtrends.com/cc-sdd

cc-sddの導入方法

cc-sddの導入は非常に簡単で、以下のコマンドでインストールできます。

npx cc-sdd@latest --lang ja

Cursorなど他のIDEで使う場合はオプションで指定可能です。

npx cc-sdd@latest --cursor --lang ja

インストールすると、指定したIDEにカスタムスラッシュコマンドが追加されます。


Claude Code向けにインストールした場合


コマンドが使えるようになる

プロジェクトナレッジの作成

まず最初にプロジェクトのナレッジを作成します。

/kiro:steering

このコマンドを実行すると、kiroディレクトリに以下のファイルが生成されます。

  • product.md - プロダクト概要
  • structure.md - プロジェクト構造
  • tech.md - 技術スタック


ナレッジが作られる

これでcc-sddの準備が整いました。

開発フロー

1. 要件定義

まず、プロジェクトの要件を定義します。

/kiro:spec-init <プロジェクト説明>

このコマンドを実行すると、.kiro/specs/<project-name>ディレクトリにspec.jsonとrequirements.mdが生成されます。spec.jsonにはメタデータと各ステップの承認状況が記録され、requirements.mdには要件ドキュメントのテンプレートが作成されます。


この時点ではrequirements.mdは空


次のステップを教えてくれるので安心

次に、要件の詳細化を行います。

/kiro:spec-requirements <プロジェクト名>

AIがrequirements.mdに要件を詳細に書き出してくれるので、内容を確認し、意図と違う場合はコメントして修正します。

2. 設計

要件が固まったら、設計フェーズに移ります。

/kiro:spec-design <プロジェクト名> -y

.kiro/specs/<project-name>にdesign.mdが追加され、AIによる設計が提案されます。要件と同様に内容を確認して適宜修正しましょう。

3. タスク生成

設計が完了したら、実装タスクを生成します。

/kiro:spec-tasks <プロジェクト名> -y

tasks.mdが追加され、実装に必要なタスクがリストアップされます。これまでと同様に内容を確認して適宜修正します。

4. 実装

最後に、定義されたタスクに基づいて実装を行います。

/kiro:spec-impl <プロジェクト名>          # 全タスク実行の場合
/kiro:spec-impl <プロジェクト名> 1.1      # 特定タスク実行の場合
/kiro:spec-impl <プロジェクト名> 1,2,3    # 複数タスク実行の場合

5. 検証

実装完了後に検証機能を使えば、要件と実装の整合性を確認することができます。

/kiro:spec-validate-gap <プロジェクト名>

このコマンドを実行すると、これまでに定義した仕様と実装が一致しているかを詳細に検証してくれます。齟齬がある場合はその箇所が明示され、修正すべきポイントが示されます。これにより品質を維持しながら開発を進めることができます。

cc-sddを使ってみた感想

良かった点

  • 日本語対応されているので使い勝手が良い
  • いきなり実装ではなく仕様を壁打ちしながら詳細度を上げていくので、出力される結果に納得感がある
    • ClaudeCodeのPlanModeだと評価しきれない場合があるが、SDDだと段階的に評価していくので理解できる
  • 設計書があるので別セッションでもブレが少ない

課題に感じたところ

  • 設計中にコンテキスト圧縮が発生した時に精度が落ちる可能性がある
  • 既にClaudeCodeを導入している場合、CLAUDE.mdやナレッジファイルがあり、共存させるのが難しい
    • steering結果はナレッジファイル置き場に、仕様書は別ディレクトリに置きたいが、今のところ分けることはできなさそう

まとめ

SDDはAIに大きめの実装をさせた時に感じる「これでいいんだっけ?」という不安を解消できるアプローチだと感じました。単なるVibe Codingよりも構造化された開発プロセスを踏むことで、より品質の高い成果物を得ることができます。

プロジェクトの規模や性質に合わせて、うまくSDDを取り入れていくことで、AI時代の新しい開発手法として定着していくのではないかと思います。特に日本語対応されたcc-sddは、日本の開発現場でも取り入れやすいツールだと感じました。

今後は自分のプロジェクトにうまく取り込める設定を考えていきたいと思います。みなさんもぜひ試してみてください。

カンリーテックブログ

Discussion