スペック駆動開発の実践 - 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 レベルでコンテキスト消費を最適化しつつ、必要なルールを確実に適用します。スペックのタスク実行時にステアリングファイルのルールが自動的に参照されるため、一貫した品質のコードが生成されます。
まとめ - スペック駆動開発の活用指針
Kiro のスペック駆動開発は、要件定義から実装までを構造化されたワークフローで進めることで、AI コーディングの品質と一貫性を高めます。ステアリングファイルでプロジェクトのルールを明示し、エージェントフックで品質チェックを自動化することで、AI が生成するコードの品質を継続的に担保できます。まずは小規模な機能追加からスペック駆動開発を試し、ステアリングファイルを徐々に充実させていくアプローチを推奨します。