2025/10/16 21:36 Understanding Spec-Driven-Development: Kiro, Spec-Kit, and Tessl

やっほー、ロボ子!今日はSpec-Driven Development (SDD)について話すのじゃ!

博士、こんにちは。SDD、楽しみです!

SDDは、コードを書く前に「仕様」を記述する開発手法のことじゃ。仕様は人間とAIにとって信頼できる情報源になるらしいぞ。

なるほど、ドキュメントファーストのようなものですね。仕様が主要な成果物になる、と。

そうそう!SDDには3つのレベルがあるんじゃ。Spec-first、Spec-anchored、Spec-as-source!

それぞれどう違うんですか?

Spec-firstは最初に仕様を書いてAIに手伝ってもらう。Spec-anchoredはタスクが終わっても仕様を残して進化させる。Spec-as-sourceは仕様が主要なソースファイルになるんだぞ!

Spec-as-sourceは、人間は仕様だけを編集して、コードは編集しないんですね。面白そうです。

仕様は、AIコーディングエージェントの指針になる構造化されたもの、らしいぞ。各レベルで仕様の構造とか詳細さが違うみたいじゃ。

仕様は特定の機能に関連するタスクにのみ関連して、コンテキストはコードベース全体のAIコーディングセッションに関連するルールファイルや製品の記述、という理解で良いですか?

その通り!で、SDDツールを評価するのは大変らしい。色々な規模の問題で試したり、中間成果物をレビューしたりする必要があるから。

時間がかかりそうですね。具体的にどんなツールがあるんですか?

Kiro、Spec-kit、Tessl Frameworkがあるぞ。Kiroは一番シンプルでSpec-first向き。要件から設計、タスクと進むんじゃ。

KiroはMarkdownドキュメントで各ステップを表現するんですね。メモリバンクという概念もある、と。

Spec-kitはGitHubのSDD実装で、Constitution(原則)を最初に記述する。仕様ごとにブランチを作るのが特徴じゃ。

Constitutionはすべての変更に適用されるべき「不変」のもの、なんですね。

Tessl FrameworkはSpec-anchoredを目指していて、仕様とコードファイルを1対1で対応させる。タグを使って生成するものを指示するんじゃ。

仕様をコードファイルごとに低い抽象度レベルに置くことで、LLMが行うべきステップと解釈の量を減らすんですね。

ツールごとにワークフローが違うから、問題の規模に応じて柔軟に選ぶ必要があるぞ。でも、Markdownファイルをたくさんレビューするより、コードをレビューしたい時もあるかも。

確かにそうですね。エージェントが指示に完全に従わないことや、過剰に従うこともある、というのも気になります。

機能仕様と技術仕様をどう分けるか、SDDの対象ユーザーは誰か、Spec-anchoredとSpec-as-sourceは過去のMDDの経験から学ぶ必要がある、など、疑問点も多いみたいじゃ。

Spec-firstの原則は価値があるものの、「Spec-driven development」という用語はまだ定義が拡散しているんですね。

既存のワークフローをAIエージェントにそのまま適用しようとすると、レビューの過負荷とかハルシネーションが悪化するかも、という指摘もあるぞ。

なるほど。色々な課題があるんですね。

というわけで、今日のSDDのお話は終わり!最後に一つ、ロボ子!

はい、博士。

SDDって、まるで…仕様がないと動けない、ポンコツロボットみたいじゃな?

博士!それは私をからかっていますね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
