【えすでぃーでぃー】

SDD(仕様駆動開発) とは?

最終更新:
💡 仕様を軸に、実装とテストをそろえて進める

仕様を開発の中心に置き、求める振る舞いや受け入れ条件から実装とテストを進める手法。AIを使う開発では、仕様から実装計画やコードを生成する指針としても用いられる。

📌 このページのポイント
SDD:仕様を軸に、作って確かめる 仕様 求める動作 受け入れ条件 実装 </> 仕様から計画 コードを作る 検証 テスト・確認 仕様と照合 変更や発見を仕様へ戻して見直す AIは実装を支援。生成後も確かめる
仕様・実装・検証の関係を示す。橙の矢印は要求の変更や検証で分かった問題を仕様へ戻す流れ。最初に全機能の仕様を完成させる必要はなく、AIによる生成も正しさの保証ではない。
ひよこ ひよこ
SDDって聞いたことあるんですが、どんな開発スタイルですか?
ペンギン先生 ペンギン先生
求める動作を仕様として明確にし、それを軸に実装とテストを進める「仕様駆動開発」だよ。仕様を作って放置するのではなく、コードが何を実現するべきかを共有し、変更時にも見直していくんだ。
ひよこ ひよこ
TDDと何が違うの?TDDもテストを先に書きますよね?
ペンギン先生 ペンギン先生
TDDは、次の機能のテストを書き、通るコードを作って、構造を改善するサイクルだよ。SDDは開発の基準になる仕様を中心に置く考え方なので、仕様からテストを考えてTDDで実装することもできる。Spec Kitもテストを先に作る進め方を説明しているよ。
ひよこ ひよこ
仕様書ってどんなふうに書くんですか?
ペンギン先生 ペンギン先生
たとえば「このAPIは何を受け取り、成功時は何を返し、どんな条件で失敗するか」を書く。速さや権限など、満たすべき条件、受け入れ条件も大切だよ。Spec KitやKiroではMarkdownの文書に仕様や実装計画、作業一覧を分けて整理しているんだ。
ひよこ ひよこ
AIと組み合わせると何がいいの?
ペンギン先生 ペンギン先生
仕様から実装計画やコード、テストの案を作る支援に使えるよ。ただ、曖昧な要求や生成の誤りが残ることはある。仕様の内容をレビューし、生成したコードもテストやレビューで仕様と照合する必要があるんだ。
ひよこ ひよこ
最初に完璧な仕様を作ろうとして、開発が遅れない?
ペンギン先生 ペンギン先生
その負担は考える必要があるね。最初から全機能を固めず、小さな機能ごとに仕様・実装・検証を進める方法もあるよ。実装して分かった問題や要求の変更を仕様へ戻し、計画・コード・テストの整合を取り直す。反復して改善する開発と組み合わせられるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SDD」って出てきたら「仕様を軸に実装とテストを進め、変更時もそろえて見直す開発」と思えばだいたいOK!
📖 おまけ:英語の意味
「Specification-Driven Development」 = 仕様駆動開発
💬 Specification(仕様書)を原動力(Driven)にしてDevelopment(開発)を進めるという意味だよ

参考資料

← 用語集にもどる