1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub spec-kitで始める仕様駆動開発(Spec-Driven Development)

Last updated at Posted at 2025-09-04

最近「仕様駆動開発(Spec-Driven Development)」という言葉を耳にする機会が増えてきました。これは コードを書く前に仕様を整理し、その仕様を軸に設計・実装・テストを進める 開発手法です。GitHub が公開した spec-kit は、このスタイルをスムーズに始めるためのオープンソースツールキットです。

特に AI を組み合わせた開発(例:GitHub Copilot を使ったコーディング)との相性が良く、「仕様 → 実装」という自然な流れを支援するのが特徴です。


なぜ仕様駆動開発が必要か?

従来のプロジェクトでは「とりあえずコードを書いてから仕様を整理する」ケースも少なくありません。しかし、それだと以下のような問題が起きがちです:

  • 実装と設計が食い違う
  • 新メンバーがキャッチアップしにくい
  • テストやドキュメントが後回しになりがち

仕様駆動開発では、先に「作るもの」を明確化しておくことで、こうしたギャップを最小化できます。


spec-kit の役割

spec-kit は「仕様を書くためのベース環境」を提供するリポジトリです。難しい設定は不要で、クローンしてすぐに「仕様ファイルを書き始める」ことができます。

具体的には、以下のようなフォルダ/ファイル構成を持ち、要件や設計、タスクを整理するテンプレートを提供します:

.spec/
  ├── requirements.md  # 要件定義
  ├── design.md        # 設計仕様
  ├── tasks.md         # 実装タスク一覧

この仕組みを使うと「仕様を中心にした開発フロー」が自然にスタートできます。


実践イメージ

例えば、ログインAPIを作る場合、まず .spec/requirements.md に要件を書きます。

# requirements.md
- ユーザーはメールアドレスとパスワードでログインできる
- JWT を使って認証情報を返す
- ログイン失敗時は 401 を返す

次に設計ファイルに API の詳細を落とし込みます。

# design.md
POST /api/login
Request: { email: string, password: string }
Response: { token: string }

最後にタスクファイルでやることを分解します。

# tasks.md
- [ ] ログイン用エンドポイント作成
- [ ] JWT 発行処理
- [ ] エラーハンドリング
- [ ] 単体テスト追加

ここまで準備できれば、AI ツールを使ってコードを書かせたり、自分で実装を始めたりする流れがスムーズになります。


実際に使ってみて感じたこと

  • 仕様の粒度が重要
    あまり細かすぎると管理が大変になりますし、ざっくりすぎると実装に落とし込めません。プロジェクトやチームの規模に合わせて調整するのがコツです。

  • 仕様は「生き物」
    書いたら終わりではなく、実装や要件の変更に応じて更新し続ける必要があります。タスクや設計ファイルを放置するとすぐに陳腐化します。

  • AI との相性が良い
    「この仕様に従ってテストコードを書いて」と AI にお願いすると、一貫性のある出力が得られやすい印象でした。


まとめないけど一言

spec-kit は特別な仕組みを提供するわけではありません。むしろシンプルに「仕様を書く文化」を根付かせるためのスタートラインです。

「コードの前に仕様を書く」ことに価値を感じているなら、まずはこのツールキットを触ってみるのがおすすめです。数ファイルを埋めていくだけで、開発の進め方がガラッと変わるはずです。


1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?