スペック駆動開発したい(specify

$ specify init --here

$ ls .specify

specifyは「スペック駆動開発」をサポートするためのツールです。 GitHubが開発したツールで、リポジトリ名はspec-kitとなっています。

スペック駆動開発とは、仕様書(スペック)と要件定義を基準にコード実装を進める開発スタイルです。 specifyspec-kit)は、AIエージェントを活用して、仕様書と実装を橋渡しする役割を担います。 専用コマンドを使うことで、仕様から外れた実装を防ぎ、正しい開発を進めやすくやります。

注釈

「バグは夜更けすぎに、仕様へと変わるだろう」

ふつうの開発でも、コードを書き始める前には「こういった機能が欲しい」という仕様書を作成します。 しかし、実際にはコードを書きながら仕様が変わってしまったり、 実装されたコードがそのまま「正しい仕様」とみなされてしまうことがよく起こります。

このようなことを繰り返すと「技術負債」が増えていき、最終的に自分たちを苦しめることになります。

導入したい(specify init

// 新規導入
$ specify init プロジェクト名

// 既存のプロジェクトに導入
$ specify init --here

// Choose your AI assistant
// Choose script type

specify initでスペック駆動開発を導入したプロジェクトを作成できます。 既存のプロジェクトに追加したい場合は、プロジェクトルートでspecify init --hereを実行してください。

// 初期化した直後
$ ls -1a
.claude/    // 選択したAIエージェント名
.git/
.specify/

初期化した直後のディレクトリ構造です。 プロジェクトは自動でGitリポジトリとなり、 選択したエージェントとspecify用の設定ディレクトリが追加されました。

tree .specify/ .claude
.specify/
├── memory
│   └── constitution.md
├── scripts
│   └── bash
│       ├── check-prerequisites.sh
│       ├── common.sh
│       ├── create-new-feature.sh
│       ├── setup-plan.sh
│       └── update-agent-context.sh
└── templates
    ├── agent-file-template.md
    ├── plan-template.md
    ├── spec-template.md
    └── tasks-template.md
.claude
└── commands
    ├── analyze.md
    ├── clarify.md
    ├── constitution.md
    ├── implement.md
    ├── plan.md
    ├── specify.md
    └── tasks.md

.specify.claudeの構造です。 スペック駆動開発をサポートするシェルスクリプトと、 AIエージェント専用のコマンドが導入されています。

注釈

2025年10月ころのとあるバージョンのSpecKitから、 AIエージェント専用のコマンドの先頭に speckit.の名前空間が付与されるようになりました。

憲法したい(/speckit.constitution

> /speckit.constitution

/speckit.constitutionで、プロジェクトの「憲法(constitution)」を定義できます。 開発時に絶対に守るべき原則や制約をAIエージェントに明示する重要なステップで、初回に一度だけ実行するのが基本です。

生成された内容は.specify/memory/constitution.mdに保存されます。 このファイルを直接編集したり、 AIエージェントと相談しながら更新したりしてもOKです。

注釈

仕様や実装の前提となる「不変のルール」を定めることが重要です。 プロジェクトの目的や対象ユーザー、開発フロー、セキュリティ対策などを記述します。

> /speckit.constitution
 Beginner-friendly project
 Educational docstrings
 Spec-Driven development
 Test-Driven development
 Skeleton-src-tests development
 src-tests symmetric patterns
 DRY, SRP, and YAGNI principles
 Semantic versioning

実装の詳細(使用する言語や依存パッケージなど)は、ここには記述せず、 README.mdや、エージェントごとの設定(CLAUDE.mdGEMINI.mdAGENTS.mdなど)に記述します。

仕様したい(/speckit.specify

$ claude    // AIエージェントを起動する

specifyで導入したコマンドはすべてAIエージェントのスラッシュコマンドとして実行します。 今回はClaude (Claude Code)を前提としますが、他のエージェントでも同じです。

> /specify 欲しい機能について説明する

/specifyコマンドで、spec.mdを作成します。 生成されたファイルの内容を確認し、この仕様でよいかを判断します。 修正が必要な場合は、追加で指示して修正してもらえばOKです。

ヒント

スペック駆動開発をはじめるためには、仕様を明確にする必要があります。 何度も推敲してspec.mdをきちんと練ることで、 このあとの開発がスムーズになります。

ちなみに/specifyに渡す説明も、 AIエージェントに相談して作成するとよいです。

注釈

完璧だと思った仕様も、実装してみたら不完全だったことはよくあります。 そのことに途中で気づいてしまった場合でも、 とりあえず、そのまま完遂させましょう。

spec.mdを途中で修正してやり直すより、 修正した内容で新しくspec.mdを作成して取り組むほうが簡単だと思います。

明確にしたい(/speckit.clarify

> /clarify

/clarifyで、生成されたspec.mdに不明瞭な点がないか確認できます。 specify v2で追加されました。

不明瞭な点がある場合は、どの意図と、解決オプションが提示されます。 内容を確認し、今回の使用にあったオプションを選択すればOKです。 オプションにない場合は、ここで相談すればOKです。

計画したい(/speckit.plan

// 通常開発
> /plan as simple as possible. readability counts. describe to beginners.

// 積極開発
> /plan as simple as possible. readability counts. breaking changes accepted. describe to beginners.

/planコマンドで、実装計画を生成します。 このコマンドは引数に指示を追加できます。 Claudeの場合、そのままだと小難しく実装しがちなので、上記の指示をおまじないのように書いています。

注釈

Claudeは、エラーハンドリングなどを細かいところまで実装してくれる印象です。 なので、keep it simpleと指示しないと、僕自身が理解できなくなってしまいます。

タスク化したい(/speckit.tasks

> /tasks simplify tasks as much as possible. readability counts. describe to beginners.

/tasksコマンドで、plan.mdにしたがってタスクを分割します。 このコマンドの引数にも指示を追加できるので、ここでもkeep it simpleと伝えておきます。 このおなじないで、タスク数が半減(20以上 -> 10以下)したことがあるので、使い続けています。

実装したい(/speckit.implement

> /implement as simple as possible. readability counts. describe to beginners.

/implementコマンドで、tasks.mdに分割されたタスクにしたがって実装を開始します。 specify v2で追加されました。

注釈

v1ではタスク番号(やフェーズ)を指定して、段階的に進める必要がありましたが、 v2からは一括実装できるようになりました。

リファレンス