Spec Kitを用いた仕様駆動開発(SDD)での開発フローの紹介
本記事は、MIXI DEVELOPERS Advent Calendar 2025 23 日目の記事です。
はじめに
こんにちは!サロンスタッフ予約サービス「minimo」でAI推進チームに所属している洗川です。
私たちのチームでは、ユーザーの皆様により良い体験を届けるため、日々サービスの改善に取り組んでいます。しかし、開発規模が大きくなるにつれ、「仕様の認識相違」や「実装段階での手戻り」といった課題が発生していました。
これらの課題を解決し、チーム内外のコミュニケーションをよりスムーズにするため、私たちは現在 「Spec Kit」 というツールを導入し、仕様を主軸に置いた新しい開発フローを検証しています。
本記事では、それらを検証するにあたって実践している「6つのステップ」をご紹介します。
なぜ今回の開発フローを検証するのか
開発における敵は「不確実性」です。
「何を作るか(仕様)」と「どう作るか(設計)」が曖昧なまま進んでしまうと、最終的に「思っていたものと違う」という手戻りが発生し、生産性を大きく下げてしまいます。
そこで私たちは、AIコマンドを活用してドキュメントを構造化するツール「Spec Kit」を導入しました。このフローの目的は以下の2点です。
- 手戻りの最小化: 実装前にAIとチームで擦り合わせることで、見落としを削減する
- 属人化の排除: 成果物をドキュメントとして残し、誰でも経緯を追えるようにする
それでは、具体的なステップを見ていきましょう。
Spec Kitを活用した6つの開発ステップ
概要としては、以下の通りです。
- キックオフ:目的とゴールの共有
- 基本原則の定義 (
/speckit.constitution) - 仕様策定 (
/speckit.specify,/speckit.clarify) - 技術要件定義 (
/speckit.plan) - タスク分解とチェック (
/speckit.tasks,/speckit.analyze,/speckit.checklist) - 実装 (
/speckit.implement)
1. キックオフ:目的とゴールの共有
まず最初に、プロジェクトの背景や目的、ゴールを関係者全員で共有する場を設けています。
- 進め方: プロジェクトの概要を説明する場を設ける
- ゴール: 全員が同じ方向を向いている状態(目線合わせ)を作る
この段階で、事業部において初の「Spec Kit」の試みだったこともあり、今回紹介する「開発フロー」自体も共有し、チーム全体での認識合わせを行いました。
2. 基本原則の定義 (/speckit.constitution)
次に、プロジェクトを進める上での「憲法(Constitution)」を決めます。
-
活用コマンド:
/speckit.constitution - 進め方: 開発スコープ、守らせたいルールなどを定義する
今回の検証の際には、プロジェクトの名称や、参照するリポジトリの内容・CLAUDE.mdなどを遵守すること、日本語の利用、セキュリティ面などを指示で与えています。
またCLIツールとしてClaude Codeを利用しているのですが、ここで定義した内容がプロジェクト直下にCLAUDE.mdとして作成される場合とされない場合があり、作成された場合の方が精度が高いことから、
作業が終わった際、この仕様書のリポジトリのCLAUDE.mdも作成してください。
の指示も与えています。
3. 仕様策定 (/speckit.specify, /speckit.clarify)
ここが最も重要なフェーズです。開発する機能を解釈がズレないよう具体化します。
-
活用コマンド:
/speckit.specify,/speckit.clarify -
進め方: PMが中心となって仕様を記述し
/speckit.specifyを実行したのち、/speckit.clarifyコマンドを使って、仕様を明確にする
疑問点をその場で解消し、PMもエンジニアも「何を作るべきか」を100%理解した状態を目指します。
プロンプトには不明点があれば質問するよう指示を加えることで、より具体化された仕様書の作成がなされるようにしています。
また、今回のプロジェクトでは仕様のボリュームが大きかったこともあり、分割したmdファイルを作成し、そこに仕様を記述し読ませることで、コンテキストサイズによる抜け漏れを防ぐようにしています。
4. 技術要件定義 (/speckit.plan)
「何を作るか」が決まったら、次は「どう作るか」の技術的な計画を立てます。
-
活用コマンド:
/speckit.plan - 進め方: エンジニアが中心となり、アーキテクチャ設計やAPIの定義、データ構造などを具体化する
data-model.mdなどの定義で、どこで使用される想定なのかが分からない項目が見られることもあり、それらは随時AIに質問を投げかけることで、内容をレビューしていきます。
5. タスク分解とチェック (/speckit.tasks, /speckit.analyze, /speckit.checklist)
これまでのドキュメントをもとに、具体的な作業単位に落とし込みます。
-
活用コマンド:
/speckit.tasks,/speckit.analyze,/speckit.checklist -
進め方: 必要なタスクをリストアップしたのち、
/speckit.analyze,/speckit.checklistにてタスクの抜け漏れや矛盾がないか最終確認を行う
6. 実装 (/speckit.implement)
最後に、洗い出したタスクから実装を行います。
-
活用コマンド:
/speckit.implement - 進め方: ここまで洗い出した情報をもとに実装を行う
まとめ
これまでとは違い、仕様段階からAIを関与させることで、曖昧点の洗い出しが早まり、結果として「何を作るか」の解像度が上がった実感があります。加えて、実装時も仕様・設計が整理されているため、意図から外れた実装になりにくくなりました。
引き続きAIを最大限に活用し、minimoユーザーにとっても、私たち働くメンバーにとっても、より良いサービスと環境を追求していきます。
最後に
minimoでは、サービス開発に一緒に挑戦してくれる仲間を募集しています!ご興味のある方は、ぜひ採用ページをご覧ください。
Discussion