Tech

仕様駆動開発の初歩

投稿日:

はじめに

これまで開発する際には、AIエージェントに対して実装したい内容を大まかに伝えてコードを生成する、いわゆるバイブコーディングで開発を進めていました。

これは、ここ半年ほど比較的小規模な機能開発やバグフィックスが主なタスクだったため、これでも問題ありませんでしたが、今回、数ヶ月単位の大きめな機能の開発に着手することとなったため、より効率的な手法として、仕様駆動開発(Spec-Driven Development)を試験的に導入してます。

今回は、この仕様駆動開発について概要をまとめました。

仕様駆動開発(SDD)とは

仕様駆動開発(Spec-Driven Development)とは、ざっくり言うと、コードを書き始める前に仕様(Specification)をドキュメントに起こし、それをもとに設計・実装・検証をすすめる開発手法です。

ここで言う仕様とは、ウォーターフォールのような重い要件定義とは別物です。

ここで大事なことは、受け入れ条件、対象外、依存関係、設計上の前提などが事前にチーム内で共有されていることです。

仕様を先に書くメリット

仕様を書くことにより、実装の前に「何をどのように作るか」を明確にすることで、AIが生成するコードのブレを抑え、品質を安定化させることができます。

仕様駆動開発での仕様とは

仕様駆動開発における仕様とは、単なる要件定義や設計書ではありません。

AIへ指示する際の基準となるもので、何を作るか、何故作るかを明文化したものです。

他の開発手法との関係

ここでは、仕様駆動開発と他の開発手法との関係性を見ていきます。

ウォーターフォールとの違い

ウォーターフォールでは、実装の前に要件定義を行ってから設計や開発を行う点で仕様駆動開発と似ていますが、ウォーターフォールでは一度定義した仕様を固定することに対して、仕様駆動開発では開発を通じて気づいたことを元に仕様を継続的にアップデートしてくるという点でことなります。

つまり、仕様駆動開発における仕様とは、あらかじめ定められた設計書ではなく、開発とともに育てていくものとして位置づけられています。

TDDとの違い

TDDはざっくり言うと、事前にテストコードを書いてそのテストをパスするようにコードを書いていく手法です。

TDDはコードが正しく動くかという点に重きをおいているのに対して、仕様駆動開発は何を何故作るかという点に重きをおいているため、より上流の工程に焦点をあてたものになっています。

バイブコーディングとの比較

バイブコーディングはやりたい内容をざっくりとした指示で与えてスピードを重視して開発を行うのに対して、仕様駆動開発では事前に仕様を練ってから開発を行います。

これらは、目的と有効な開発対象がことなります。

バイブコーディングではPoCなどのように初期フェーズで手早く実装してコンセプトを検証するようなケースに向いています。

一方、仕様駆動開発では、すでにリリースされているプロダクトや、要件が固まっているようなケースで効果を発揮します。

仕様駆動開発をサポートするツール

仕様駆動開発をサポートするツールについて紹介します。

Spec Kit

Github Spec Kitは、2025年にGithubが公開したオープンソースのツールキットです。

GitHub Copilot、Claude Code、Gemini CLIなどの複数のAIエージェントと組み合わせて使用することでできます。

仕様の定義からタスクの分解・実装まで一連の流れをサポートしています。

より詳しく知りたい方は、過去に投稿した記事をご覧ください。

Kiro

AWS Kiroは、AWSが2025年にリリースしたエージェント型のIDEです。

要件定義、技術設計、タスク実装の3つのフェーズをIDE上で一貫して進めることができます。

Kiroは特定のクラウドサービスに依存しないスタンドアロン型のIDEとして設計されています。

仕様駆動開発の流れ

仕様駆動開発では、仕様の定義から実装までを以下の4ステップで進めます。

  • Requirements(要件定義)
  • Design(設計)
  • Tasks(タスク分解)
  • Implementation(実装)

各ステップの内容について見ていきます。

Requirements(要件定義)

要件定義は、何を作るか(What)、何故作る(Why)かを言語化するステップです。

ここでは技術的な実装方法(How)は定義しません。

Design(設計)

要件をもとにシステムの構造や技術選定を定義するステップです。

技術的な実装方法(How)を具体的に定義します。

具体化する内容の例は以下の通りです。

  • 使用言語やフレームワーク
  • フォルダ構成
  • DBスキーマ
  • APIの型定義

逆に書かない内容は以下のとおりです。

  • 内部のループ処理
  • 条件分岐の書き方
  • 具体的なアルゴリズム

実装方法については具体的に決めないでAIに任せるほうが良いです。

Tasks(タスク分解)

設計をもとに実装可能な最小単位のタスクに分解するステップです。

タスクを細かく分けることでAIの生成するコードの精度が上がり、レビューも容易になります。

Implementation(実装)

これまでに定義した、仕様、設計、タスクをもとにAIがコードを生成するステップです。

これらが明確であるほど、AIが生成するコードの品質が安定し、手戻りが少なくなります。

良い仕様書とは

仕様駆動開発では、仕様書の質がコードの品質を大きく左右します。

AIへの指示としての良い仕様書とは、以下のとおりです。

  • 何を何故作るかについて詳しく書く
  • どう作るかは書き過ぎない
  • あいまいな表現を避ける

さいごに

仕様駆動開発について概要をまとめました。

おすすめ書籍

直感 LLM ―ハンズオンで動かして学ぶ大規模言語モデル入門 実践 LLMアプリケーション開発 ―プロトタイプを脱却し、実用的な実装に迫るための包括的な手引き LLM入門:しくみから学ぶ生成AIの基礎: “使うだけ”から卒業するための、易しいけど深く言語モデルを探求する本 (LLMマスターシリーズ)

blog-page_footer_336




blog-page_footer_336




-Tech
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

React+axiosでhttpリクエスト

1 はじめに2 axiosとは2.1 XMLHttpRequest2.2 Promise3 準備4 実装4.1 resultsの中身4.2 エラーハンドリング4.3 カスタムヘッダーの付与5 Reac ...

ReactNative環境構築[Android/iOS]

1 はじめに2 準備2.1 HomeBrewをインストール2.2 node.jsのインストール2.3 Watchmanのインストール2.4 React Native CLIのインストール2.5 サンプ ...

iOS13ダークモード対応

1 はじめに2 一時しのぎ3 実装3.1 UI Element Colors3.2 Color Set3.3 コードで描きたい3.4 カスタムのカラーを定義する3.5 画像をモードで動的に変更したい4 ...

GitHub Copilotの機能一覧

1 はじめに2 GitHub Copilotの機能2.1 コード補完2.2 Copilot Chat2.3 Copilotコーディングエージェント2.4 コマンドラインでのCopilotの使用2.5 ...

Github CopilotのCustom Agentを試してみた

1 はじめに2 Custom Agentとは2.1 Custom Agentのファイル2.2 Custom Agentの書き方3 テンプレート3.1 Context7-Expert3.2 beast ...

フォロー

blog-page_side_responsive

2026年8月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。