スペック駆動開発の実践 - Kiro で要件定義からコード生成までを一気通貫で実行する

要件定義・設計・タスクの 3 段階スペックで AI エージェントの出力品質を制御し、意図どおりのコードを生成させる。スペックファイルの構造と効果的な記述パターンを解説します。

スペック駆動開発とは

従来の AI コーディングツールは、チャットでの対話やコード補完が中心で、開発者の指示に逐次的に応答するスタイルでした。この方式は小さなタスクには有効ですが、複数ファイルにまたがる機能開発やアーキテクチャの変更では、AI が全体像を把握できず、一貫性のないコードが生成されがちです。Kiro のスペック駆動開発は、この課題に対するアプローチです。開発者が自然言語で要件を記述すると、Kiro は (1) 要件定義書 (requirements.md) で機能要件・非機能要件を整理し、(2) 設計書 (design.md) でアーキテクチャとデータフローを定義し、(3) タスクリスト (tasks.md) で実装手順を分解します。この 3 つのドキュメントが AI エージェントの「仕様書」となり、各タスクを順番に実行してコードを生成します。

ステアリングファイルによるルール制御

ステアリングファイルは、プロジェクト固有のルールや方針を AI に伝える仕組みです。.kiro/steering/ ディレクトリに Markdown ファイルとして配置し、コーディング規約、アーキテクチャ方針、使用するライブラリ、禁止事項などを記述します。例えば「TypeScript の strict モードを必ず有効にする」「状態管理には Zustand を使用し、Redux は使わない」「API レスポンスには必ず Zod でバリデーションをかける」といったルールを定義できます。ステアリングファイルには inclusion 設定があり、always (常に読み込み)、fileMatch (特定ファイルパターンに一致する場合のみ)、manual (手動で指定した場合のみ) を選択できます。グローバルステアリング (~/.kiro/steering/) はすべてのプロジェクトに適用され、ワークスペースステアリング (.kiro/steering/) はプロジェクト固有のルールに使用します。

エージェントフックとサブエージェント

エージェントフックは、特定のイベント (ファイル保存、 Git コミットなど) をトリガーに自動処理を実行する機能です。例えば、 TypeScript ファイルを保存するたびに ESLint を実行して自動修正する、コミット時にテストを実行して失敗したらコミットを中止する、といったワークフローを定義できます。サブエージェントは、メインのエージェントから独立したコンテキストで動作する専門エージェントです。複雑なタスクを分割し、ファイル群が独立している場合は並列実行で効率化できます。例えば、バックエンドの API 実装とフロントエンドのコンポーネント実装を同時に進めるといった使い方が可能です。プランナーエージェントは読み取り専用の特殊なエージェントで、要件の分解と実装計画の策定に特化しています。実装前に設計の妥当性を検証し、見落としや矛盾を事前に検出します。 コード生成 AI の基礎から応用まで、書籍 (Amazon)で体系的に学べます。

ステアリングファイルとの連携

ステアリングファイル (.kiro/steering/) はスペックと補完的に機能します。スペックが個別の機能やバグ修正の仕様を定義するのに対し、ステアリングファイルはプロジェクト全体に適用されるコーディング規約・設計方針・品質基準を定義します。always (常時読み込み)、manual (必要時読み込み)、fileMatch (ファイルパターン一致時) の 3 つの inclusion レベルでコンテキスト消費を最適化しつつ、必要なルールを確実に適用します。スペックのタスク実行時にステアリングファイルのルールが自動的に参照されるため、一貫した品質のコードが生成されます。

要件・設計・実装の流れがもたらす利点

スペック駆動開発の核心は、いきなりコードを書き始めるのではなく、要件定義・設計・実装という段階を明示的に踏むことにあります。まず何を作るべきかを要件として整理し、それをどう実現するかを設計に落とし、その上で実装に進みます。各段階を文書として残すことで、AI と人間が同じ理解を共有でき、認識のずれによる手戻りを減らせます。曖昧なまま実装に入ると、出来上がってから「思っていたものと違う」となりがちですが、前段で意図を固めておけば、その齟齬を早い段階で防げます。段階的に意図を明確化する流れが、開発の精度と効率を高めます。

まとめ - スペック駆動開発の活用指針

Kiro のスペック駆動開発は、要件定義から実装までを構造化されたワークフローで進めることで、AI コーディングの品質と一貫性を高めます。ステアリングファイルでプロジェクトのルールを明示し、エージェントフックで品質チェックを自動化することで、AI が生成するコードの品質を継続的に担保できます。まずは小規模な機能追加からスペック駆動開発を試し、ステアリングファイルを徐々に充実させていくアプローチを推奨します。