メインコンテンツにスキップ
株式会社ゼットリンカー - Next.js システム開発専門
AI開発

仕様駆動開発(SDD)とは|AIの作り直しを減らす仕様の書き方とNext.js受託での使い方

仕様駆動開発(SDD)とは、AIにコードを書かせる前に目的・範囲・制約・受け入れ基準を仕様として書き、その仕様を基準に実装を確かめる開発手法です。TDDとの違い、Spec Kitの進め方、Next.js受託での仕様の記入例をまとめました。

仕様書を確認しながら実装を進める開発者の写真
•11分で読めます
Next.jsNext.jsAI駆動開発中小企業Claude Code仕様駆動開発

2026年10月6日更新:Spec Kitの現行版(1.1.0)の進め方に合わせて手順と図を差し替え、TDDとの違い、仕様の記入例、SDDが向かない場面を追加しました。出典を一次情報で確認できなかった他社の効果の数値は削除しています。

仕様駆動開発(SDD: Spec-Driven Development)は、AIにコードを書かせる前に「何を作るか」を仕様として書き、その仕様を基準に実装と検証を進める開発手法です。AIコーディングツールが普及した2025年以降に広まり、GitHubのSpec Kitのような専用のツールも出ています。

この記事は、「SDDという言葉を見かけたが、何をすることなのか」を知りたい方と、AIを使った受託開発で手戻りを減らしたい開発担当・発注担当の方に向けて書いています。

先に、要点をまとめます(2026年10月6日確認)。

  • SDDは、目的・範囲・制約・受け入れ基準を実装の前に書き、AIの実装をその仕様に照らして確かめる進め方です。コードと仕様が食い違ったら、仕様を基準に直します
  • TDD(テスト駆動開発)が「テストを先に書く」のに対し、SDDは「その前段の、何を満たせば完成かを先に書く」ことに重心があります。受け入れ基準をテストに落とせる形で書くと、両者はつながります
  • 効くのは、AIに任せる範囲が広く、発注側と「何を作るか」を握る必要がある開発です。1行の修正や、作りながら方向を探す試作には向きません

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

コードを書く前に、目的・範囲・制約・受け入れ基準を仕様として書き、その仕様を「正」として実装と検証を進める開発手法です。AIにコードを書かせる場面で、AIの当て推量を減らすために使われています。

SDDでいう仕様には、次の4つを書きます。

書くこと中身例(申請の差し戻し機能)
目的誰の、どの困りごとを解決するか差し戻された申請者が、理由を見て再申請できるようにする
範囲作るものと、今回は作らないもの差し戻しと再申請は作る。差し戻し理由の定型文化は作らない
制約守るべき技術・運用のルール差し戻しは承認者の権限を持つ人だけが行える
受け入れ基準何ができたら完成とみなすか差し戻した申請が、申請者の一覧に「差し戻し」と理由付きで表示される

「仕様を正にする」とは、実装と仕様が食い違ったときに、仕様のほうを基準にするという意味です。AIが仕様と違うものを作ったらコードを仕様に合わせて直し、作りながら仕様のほうが間違っていたと分かったら、仕様を先に書き換えてから実装をやり直します。仕様を書いて終わりにせず、コードと一緒に更新し続けることが前提になります。

TDDやウォーターフォールとは何が違う?

TDDはテストを先に書く手法、ウォーターフォールは工程を順に進める進め方で、SDDは「完成の条件を、AIが読める形で先に書く」ことに重心がある手法です。三つは排他ではなく、組み合わせて使えます。

手法最初に書くもの書く粒度AIとの関係
ウォーターフォール要件定義書・設計書システム全体を工程ごと前提にしていない
TDD(テスト駆動開発)失敗するテスト関数・画面の振る舞い単位テストを合否の判定に使える
SDD(仕様駆動開発)目的・範囲・制約・受け入れ基準機能単位で、必要十分に仕様をAIへの指示と判定の基準にする

ウォーターフォールの設計書との違いは、機能ごとに短く書き、実装の途中でも更新する点です。重い文書を最初に全部そろえる進め方ではありません。TDDとの関係では、SDDの受け入れ基準を「テストで判定できる文」で書いておくと、そのままテストの元になります。後半の記入例で具体的に示します。

この判断から次に進む

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

なぜAIを使う開発でSDDが注目されたのか?

プロンプトで指示して出てきたコードをそのまま採用する進め方は、試作には速い一方で、規模が大きくなると意図とのずれや作り直しが増えたためです。

「Vibe Coding(バイブコーディング)」という言葉は、2025年2月にAndrej Karpathy氏が使い始め、Collins English Dictionaryの2025年のWord of the Yearにも選ばれました(Wikipedia: Vibe coding)。プロンプトを投げ、出てきたコードを細かく読まずに動かしていくスタイルです。

この進め方で受託の規模の開発をすると、次のことが起きます。

  • AIが、指示の書かれていない部分を推測で埋める。推測が外れると、作り直しになる
  • 同じ指示を別の日に出すと、別の構造のコードが出てくる。機能が増えるほど全体の一貫性が崩れる
  • 何をもって完成とするかが決まっていないため、レビューで「これで合っているか」を毎回人が判断する

SDDは、推測で埋められていた部分を、実装の前に人が決めて書いておく手法です。受託開発では、この「人が決める部分」の多くを発注側と一緒に決めることになるため、仕様がそのまま合意の記録にもなります。

Spec Kitでは、どう進める?

プロジェクトに1回だけ原則(constitution)を決め、機能ごとに specify → plan → tasks → implement → converge の順に進めます。implementとconvergeは、仕様と実装のずれがなくなるまで繰り返します。

Spec Kitは、GitHubが公開しているオープンソースのツールキットです(MITライセンス、10月6日時点の最新版は1.1.0)。Python 3.11以上とuvを入れ、specify コマンドでプロジェクトを初期化すると、AIコーディングツールのチャットから /speckit-specify のような手順を呼び出せるようになります。対応するツールは50以上あり、Claude Code、Cursor、GitHub Copilot、Codex CLI、Kiro CLIなどが含まれます(対応ツールの一覧)。

Spec Kitの流れ。プロジェクトに1回constitutionで原則を決め、機能ごとにspecify、plan、tasks、implement、convergeと進み、implementとconvergeを収束するまで繰り返す。下段は、仕様の受け入れ基準がテストになる例

# Spec Kit の導入(Claude Code で使う場合)
uv tool install specify-cli
specify init my-project --integration claude
手順すること
constitutionコード品質・テスト・保守性など、プロジェクトで譲れない原則を決める(1回だけ)
specify何を・なぜ作るかを、技術の話を入れずに利用者の目線で書く
planどう作るか(使う技術、データの持ち方、制約)を足す
tasks計画を、レビューできる小さな作業に分ける
implementタスクを1つずつ実装する
converge仕様と実装のずれを確かめる。「Converged」と出るまでimplementと繰り返す

必要に応じて、仕様のあいまいな点を質問させる手順や、チェックリスト、成果物どうしの整合を調べる手順も追加できます。READMEは、各手順の結果を確認してから次に進むよう案内しています。AIにまとめて任せる道具というより、人が確認する区切りを作る道具として使っています。

仕様はどう書く?(Next.js受託での記入例)

受け入れ基準を「誰が、何をしたら、何が見えるか」の形で書きます。この形なら、AIへの指示にも、テストの元にも、発注側との確認にもそのまま使えます。

以下は、Next.jsで作る社内の申請システムに「差し戻し」機能を足す場面を題材にした記入例です。実装済みの顧客事例ではありません。自社の業務に置き換えて、項目の粒度を確かめてください。

# 機能: 申請の差し戻し

## 目的
承認者が不備のある申請を差し戻し、申請者が理由を見て直して再申請できるようにする。

## 範囲
- 作る: 差し戻し操作、理由の入力(必須・500字以内)、申請者の一覧での表示、再申請
- 作らない: 差し戻し理由の定型文、メール以外の通知

## 制約
- 差し戻しは、その申請の承認者だけが行える(権限の判定はData Access Layerで行う)
- 差し戻し後の申請は、申請者が直すまで承認の一覧に出さない

## 受け入れ基準
1. 承認者が理由を入力して差し戻すと、申請の状態が「差し戻し」になる
2. 申請者の一覧で、その申請に「差し戻し」と理由が表示される
3. 承認者以外のユーザーが差し戻しのServer Actionを直接呼ぶと、エラーになり状態は変わらない
4. 理由が空、または501字以上のときは差し戻せず、入力欄にエラーが表示される

受け入れ基準の3番は、画面からは操作できない経路の確認です。画面にボタンを出さないだけでは、Server Actionを直接呼ばれたときに防げません。仕様に書いておくことで、AIの実装と、そのテストの両方に含まれます。権限の判定をどこに置くかは権限の判定をData Access Layerに置く設計で詳しく書いています。

4つの受け入れ基準は、それぞれテストの1件に対応します。1・2・4は画面を操作するテスト(Playwrightなど)、3はServer Actionを直接呼ぶテストで確かめます。どこまで自動テストにするかは中小企業のNext.jsフルスクラッチで、テストをどこまで書くかにまとめています。

Next.jsのフルスクラッチ受託に、どう落とすか?

プロジェクト固有の「正しい書き方」を原則に書く、受け入れ基準をテストで判定できる形にする、仕様を発注側との合意の記録にも使う、の3点です。

1つ目は、プロジェクト固有の正しい書き方を、constitutionや仕様に書いておくことです。Next.jsは版ごとの変化が大きく、AIの学習データには古い書き方が混ざります。「認可はData Access Layerで判定する」「キャッシュは use cache で境界を明示する」といったルールを先に書いておくと、AIが古い書き方で実装したときに、レビューで仕様違反として指摘できます。Next.js側でも、版に合ったドキュメントをAIに読ませる AGENTS.md の仕組みが用意されています(Next.js 16.2 の AGENTS.md とブラウザログ転送で、AI駆動開発の受託はどう速くなるか)。

2つ目は、受け入れ基準をテストで判定できる形で書くことです。「使いやすいこと」のような基準は、AIの実装が満たしたかを判定できません。上の記入例のように、操作と結果で書きます。

3つ目は、仕様を発注側との合意の記録にも使うことです。受託では、仕様の「範囲」と「作らないもの」が、そのまま見積もりの前提になります。AIへの指示のために書いた文書を、発注担当の方にも読める言葉で書いておけば、確認の資料を別に作らずに済みます。

私たちは、AIを使う開発で「計画を先に書いてから実装する」進め方を基本にしています。ツールの使い分けはCursor と Claude Code をどう使い分けているか|中小企業向け Next.js 受託の現場に、現場の変化はClaude Code × Next.js 16 で受託開発はどう変わったか|2026年の現場からに書いています。

SDDが向かない場面は?

1行の修正、作りながら方向を探す試作、仕様を更新し続ける人がいない開発には向きません。仕様を書く手間が、得られる確認のしやすさを上回るためです。

  • 小さな修正:文言の変更や明らかな不具合の修正に、目的から受け入れ基準まで書く必要はありません。Spec Kitも、機能開発とは別に、不具合修正用の短い手順を用意しています
  • 方向を探す試作:何を作るべきか自体を確かめる段階では、仕様が毎日変わります。試作で方向が決まってから、本番に向けて仕様を書きます
  • 仕様の更新を担う人がいない:コードだけが変わり、仕様が古いまま残ると、AIは古い仕様に合わせてコードを戻そうとします。仕様の更新を、誰の作業に含めるかを先に決めておきます

まとめ

  • 仕様駆動開発(SDD)は、目的・範囲・制約・受け入れ基準を実装の前に書き、その仕様を基準にAIの実装を確かめる手法です
  • TDDとは排他ではありません。受け入れ基準をテストで判定できる文で書くと、そのままテストの元になります
  • Spec Kit(1.1.0)では、constitutionを1回決め、specify → plan → tasks → implement → converge の順に進めます
  • 向くのは、AIに任せる範囲が広く、発注側と作るものを握る必要がある開発です。小さな修正や方向を探す試作には向きません

AIを使ったNext.jsの開発で、仕様をどこまで書くか、誰が更新するかを一緒に決めたい場合は、お問い合わせからご相談ください。ゼットリンカーでは、エンジニアが直接ヒアリングし、仕様の「範囲」と「作らないもの」をそろえてから見積もりと実装に入ります。

関連する記事です。

※本記事は、2026年10月6日時点の github/spec-kit のREADMEと対応ツールの一覧に基づいています。Spec Kitの手順名や対応ツールは更新されることがあります。

よくある質問

仕様駆動開発(SDD)とは何ですか?

AIにコードを書かせる前に、目的・範囲・制約・受け入れ基準を仕様として書き、その仕様を基準に実装と検証を進める開発手法です。実装と仕様が食い違ったら仕様を基準に直し、仕様のほうが誤っていたと分かったら仕様を先に書き換えてから実装をやり直します。

SDDとTDD(テスト駆動開発)は何が違いますか?

TDDは失敗するテストを先に書き、関数や画面の振る舞い単位で実装を進めます。SDDはその前段の、目的・範囲・制約・受け入れ基準を機能単位で書くことに重心があります。受け入れ基準をテストで判定できる文で書くと、そのままテストの元になるため、両者は組み合わせて使えます。

Spec Kitではどんな順番で進めますか?

プロジェクトに1回だけconstitutionで原則を決め、機能ごとにspecify、plan、tasks、implement、convergeの順に進めます。implementとconvergeは、仕様と実装のずれがなくなり「Converged」と出るまで繰り返します。2026年10月6日時点の最新版は1.1.0です。

受け入れ基準はどう書けばよいですか?

「誰が、何をしたら、何が見えるか」の形で書きます。たとえば「承認者が理由を入力して差し戻すと、申請者の一覧に差し戻しと理由が表示される」のように書くと、AIへの指示、テストの元、発注側との確認のいずれにも使えます。「使いやすいこと」のように判定できない基準は避けます。

SDDが向かないのはどんな場面ですか?

文言変更のような小さな修正、何を作るべきかを探る段階の試作、仕様を更新し続ける担当がいない開発です。仕様が古いまま残ると、AIが古い仕様に合わせてコードを戻そうとするため、仕様の更新を誰の作業に含めるかを先に決めておきます。

技術仕様・対象バージョンは本文と参照先をご確認ください。

最終更新:2026年10月6日

Share this article

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

先に整理したい方は発注前の検討シート・AI相談プロンプトをご利用ください。未確認の項目は空欄のままご相談いただけます。

次に読む記事

ALL ARTICLES →

プライバシーポリシー

株式会社ゼットリンカー(以下、「当社」といいます。)は、お客様の個人情報の重要性を認識し、 その保護の徹底を図るため、以下のプライバシーポリシー(以下、「本ポリシー」といいます。)を定めます。

1. 個人情報の定義

本ポリシーにおいて「個人情報」とは、生存する個人に関する情報であって、 当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの、 及び他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを指します。

2. 個人情報の収集

当社は、お客様が当社のサービスをご利用になる際、お客様の個人情報を収集することがあります。収集する個人情報は以下の通りです:

  • 氏名
  • メールアドレス
  • 電話番号
  • 会社名・組織名
  • 住所
  • その他当社が定める入力フォームにお客様が入力する情報

3. 個人情報の利用目的

当社は、お客様からご提供いただいた個人情報を、以下の目的で利用します:

  • お客様への連絡やサービスの提供
  • お客様からのお問い合わせへの対応
  • 当社サービスの改善や新サービスの開発
  • メールマガジンの配信(お客様の同意がある場合)
  • 契約や法令等に基づく権利の行使や義務の履行
  • その他、上記利用目的に付随する目的

4. 個人情報の第三者提供

当社は、以下の場合を除き、お客様の同意なく個人情報を第三者に提供することはありません:

  • 法令に基づく場合
  • 人の生命、身体または財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
  • 公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合
  • 国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合

5. 個人情報の管理

当社は、お客様の個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス、 個人情報の紛失、破損、改ざん及び漏洩などを防止するため、 セキュリティシステムの維持・管理体制の整備等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行います。

6. 個人情報の開示・訂正・削除

お客様は、当社に対してご自身の個人情報の開示を求めることができます。 また、開示の結果、個人情報の内容が事実でないことが判明した場合には、 速やかに訂正または削除に応じます。

7. 導入事例の公開について

当社は、お客様から依頼いただいたプロジェクトを導入事例として記事にさせていただく場合があります。導入事例として公開する場合は、以下の点に配慮いたします:

  • 機密情報や個人情報は公開いたしません
  • 社名を公開する場合は、公開内容について事前にお客様に確認いただきます
  • 社名を非公開とする場合でも、お客様のご要望に応じて公開内容を確認いただくことが可能です

8. Cookie(クッキー)の使用について

当社のウェブサイトでは、お客様により良いサービスを提供するため、Cookie を使用することがあります。 Cookie により個人を識別できる情報を収集することはありません。 お客様はブラウザの設定により Cookie の受信を拒否することができます。

9. SSL(Secure Socket Layer)について

当社のウェブサイトはSSLに対応しており、ウェブブラウザとウェブサーバーとの通信を暗号化しています。 お客様が入力する個人情報は自動的に暗号化されて送受信されるため、 万が一、第三者が傍受した場合でも内容を解読することは困難です。

10. プライバシーポリシーの変更

当社は、必要に応じて、本ポリシーの内容を変更することがあります。 変更後のプライバシーポリシーについては、当社ウェブサイトに掲載したときから効力を生じるものとします。

11. お問い合わせ

本ポリシーに関するお問い合わせは、以下の窓口までお願いいたします。

株式会社ゼットリンカー

〒160-0023

東京都新宿区西新宿3丁目3番13号西新宿水間ビル2F

代表取締役: 金原隆利

お問い合わせ先: info@zetlinker.com

制定日:2024年1月1日

最終改訂日:2026/10/8

利用規約

この利用規約(以下、「本規約」といいます。)は、株式会社ゼットリンカー(以下、「当社」といいます。)が 提供するウェブサイトおよびサービス(以下、「本サービス」といいます。)の利用条件を定めるものです。 お客様は、本規約に同意した上で、本サービスをご利用ください。

第1条(適用)

1. 本規約は、お客様と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。

2. 当社は本サービスに関し、本規約のほか、ご利用にあたってのルール等、各種の定め(以下、「個別規定」といいます。)を することがあります。これら個別規定はその名称のいかんに関わらず、本規約の一部を構成するものとします。

3. 本規約の規定と個別規定の規定が異なる場合は、個別規定において特段の定めなき限り、個別規定の規定が優先されるものとします。

第2条(定義)

本規約において使用する以下の用語は、各々以下に定める意味を有するものとします。

  • 「利用契約」とは、本規約を契約条件として当社とお客様との間で締結される、本サービスの利用契約
  • 「知的財産権」とは、著作権、特許権、実用新案権、意匠権、商標権その他の知的財産権(それらの権利を取得し、またはそれらの権利につき登録等を出願する権利を含みます。)
  • 「投稿データ」とは、お客様が本サービスを利用して投稿その他送信するコンテンツ(文章、画像、動画その他のデータを含みますがこれらに限りません。)

第3条(本サービスの提供)

1. お客様は、本規約に同意の上、当社の定める方法によって利用登録を申請し、当社がこれを承認することによって、本サービスを利用することができるようになります。

2. 当社は、お客様に以下のいずれかの事由があると判断した場合、利用登録の申請を承認しないことがあり、その理由については一切の開示義務を負わないものとします。

  • 利用登録の申請に際して虚偽の事項を届け出た場合
  • 本規約に違反したことがある者からの申請である場合
  • その他、当社が利用登録を相当でないと判断した場合

第4条(ユーザーIDおよびパスワードの管理)

1. お客様は、自己の責任において、本サービスのユーザーIDおよびパスワードを適切に管理するものとします。

2. お客様は、いかなる場合にも、ユーザーIDおよびパスワードを第三者に譲渡または貸与し、もしくは第三者と共用することはできません。

3. 当社は、ユーザーIDとパスワードの組み合わせが登録情報と一致してログインされた場合には、そのユーザーIDを登録しているお客様自身による利用とみなします。

第5条(禁止事項)

お客様は、本サービスの利用にあたり、以下の行為をしてはなりません。

  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 本サービスの内容等、本サービスに含まれる著作権、商標権ほか知的財産権を侵害する行為
  • 当社、ほかのお客様、またはその他第三者のサーバーまたはネットワークの機能を破壊したり、妨害したりする行為
  • 本サービスによって得られた情報を商業的に利用する行為
  • 当社のサービスの運営を妨害するおそれのある行為
  • 不正アクセスをし、またはこれを試みる行為
  • 他のお客様に関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 本サービスの他のお客様またはその他の第三者に不利益、損害、不快感を与える行為
  • 他のお客様に成りすます行為
  • 当社が許諾しない本サービス上での宣伝、広告、勧誘、または営業行為
  • 面識のない異性との出会いを目的とした行為
  • 当社のサービスに関連して、反社会的勢力に対して直接または間接に利益を供与する行為
  • その他、当社が不適切と判断する行為

制定日:2024年1月1日

最終改訂日:2026/10/8