
Agentic IDE Kiro を使って仕様駆動開発を試してみた
こんにちは、森田です。
AWS から Kiro と呼ばれる AI コードエディターが Public Preview としてアナウンスされました。
Kiroの概要
KiroはAWSから発表された Agentic IDE となっており、「仕様駆動開発」を支援します。
仕様駆動開発とは、与えられたプロンプトから要件定義を行い、要件定義に沿ったタスクを実行していく開発手法です。
この開発手法を実現するためにKiroでは「Spec」と「Hook」の機能が提供されます。
Spec
Specは、和訳すると「仕様」を意味するように、AIエージェントが構築するアプリケーションの仕様書を作成してくれる機能となります。
一般的な Vibe Coding にてアプリケーションを構築する場合、プロンプトを都度与えることで開発者の所望するアプリケーションを作ることはできますが、最終的に構築されたアプリケーションについての詳細が把握できなくなることがあります。
そのような課題を解決するために、AIエージェントでただコーディングを行うのではなく、開発者の与えたプロンプトから要件定義、設計、タスクの実装を行った後でコーディングを行います。
Hook
Hookを利用することで特定のイベント時に処理を実行させることができるようになります。
このユースケースとしては、開発者が暗黙的に行っている作業を自動化できます。
例えば、手動でファイル変更した場合に変更内容を把握して、仕様書などのドキュメントを漏れなく更新することができるようになります。
やってみた
Kiro には、「Spec」と「Hook」以外にも便利な機能があります。
本記事では、以下ドキュメントの機能を一通りやってみます。
先にアウトプットイメージを知りたい方は、以下のリポジトリにありますのでご確認ください。
インストール
まずは、上記サイトからインストールを行います。
インストール後、アプリケーションを起動するとサインインが求められます。
サインインは、以下のサービスが利用できます。
- GitHub
- AWS Builder ID
- organization identity
せっかくなので、organization identity
を使ってサインインしてみます。
すると、Webブラウザが起動し、Amazon Q Developer への許可が求められます。
なお、事前にサインインするユーザには、Q Developer のサブスクリプションが必要となります。
VS Codeの設定や拡張機能をインポートします。
プロジェクトの開始
それでは、実際に開発を進めていくために、Open a project で適当なフォルダを開きます。
プロジェクトが開始されると以下のように「Vibe」or「Spec」を選択できるようになります。
- Vibe
- Chat first, then build. Explore ideas and iterate as you discover needs.
- 最初にチャットしてから構築します。アイデアを検討し、ニーズを発見しながら繰り返します。
- Spec
- Plan first, then build. Create requirements and design before coding starts.
- まず計画を立ててから構築します。コーディングを開始する前に要件と設計を作成します。
Vibe
Vibeでは、一般的な Vibe Coding が可能です。
Task管理アプリケーションを作成してください。
Next.js, shadcn/uiを使用してください。
実行すると以下のようにAIエージェント側で処理内容やディレクトリ内を確認してアプリケーション構築を行なっていきます。
コマンド実行時も自動化させる場合は、Trusted Commands
で追加しておくと良さそうです。
しばらくすると、アプリケーションの作成が完了し、開発サーバーが起動します。
アクセスして動作確認しましたが、問題なくできているようです。
開発サーバ停止後、作成したアプリケーションの概要が表示されます。
View all
をクリックすることでファイルの差分を確認することができます。
作成されたアプリケーションは以下となります。
Spec
仕様(Spec)の作成
では、お待ちかねのSpecモードで同じ処理を試してみます。
同様のプロンプトを与えて実行します。
しばらくすると、requirements.md
が作成されます。
ここで作成された要件が問題ない場合は、Move to design phase
をクリックします。
しばらくすると、design.md
が作成されます。
こちらも問題なければ、Move to implementation plan
をクリックします。
tasks.md
が作成されます。
さいごに、Finalize task list
をクリックすることで、仕様(requirements, design, tasks)に基づいてアプリケーション開発を開始していきます。
タスクの実行
task.md
を開き、「Start task」をクリックします。
新しいChatが開始され、タスクが実行されます。
許可していないコマンドについては、以下のように都度確認が出てくるので、対応していきます。
進めていくとタスク完了となり、以下のように作業内容のサマリが表示されます。
tasks.md
側にも「Task completed」として表示されます。
View changes
をクリックすることで差分も確認することができます。
あとは、順にタスクを実行させていきます。
Hook
Hook の登録
続いて Hook を試してみます。
Kiroのアイコンをクリックし、AGENT HOOKSの項目で「+」をクリックします。
Hookに登録する処理もプロンプトで指示を与えます。
今回は、ファイル保存時にSpecのドキュメントを変更するようにしてみます。
JavaScript/TypeScript ファイルを保存する場合:
1. 対応するテスト ファイルを特定します。
2. 新しい機能のカバレッジを維持するためにテストを更新する
3. テストを実行して、合格することを確認します。
4. 必要に応じてスナップショットを更新します。
チャット画面で Hook の作成処理が実行されます。
実行後は、AGENT HOOKSに追加されます。追加された項目をクリックすると、処理内容の詳細を確認することができます。
Hook の実行
以下のように関数の処理内容をコメントアウトし、テストに失敗するようにファイルの変更を行います。
ファイル保存後、登録しておいた Hook が実行されます。
Hookでは期待したテストの実行が行われます。今回の変更によってテストは失敗となるため、コードの修正が実行されます。
Steering
Steeringは、プロジェクトに関する永続的な知識を提供する機能です。
.kiro/steering
ディレクトリにドキュメントを配置することで永続的な知識として扱ってくれます。
.kiro/
└── steering
├── product.md
├── structure.md
└── tech.md
例えば、プロジェクトの目的やユーザターゲットなどをSteeringに記載することでその内容を考慮したコード生成が可能となります。
すでに作成済みのプロジェクトの場合は、Generate Steering Docs
をクリックすることで、既存コード等を考慮しながら、Steeringドキュメントを生成します。
作成されたproduct.md
, structure.md
, tech.md
は以下となります。
さいごに
ドキュメント通りに進めてみましたが、Kiroの提唱する仕様駆動開発が掴めたような気がします。
Specの機能は強力で一般的な開発フローをAIエージェントが実行することで、Vibe Coding より安定したアプリケーション開発が行えそうです。
一方で、Specでは、仕様を明確に定義し、タスクに従ってコーディングを行うため、同じプロンプトでも Vibe Coding より最終的なタスク完了まで時間を要します。
そのため、簡単な処理実装など厳格な仕様が不要なケースでは、Vibe Coding の方が良いかもしれません。
いつバイブするか
・インタラクティブな Q&A 形式: Vibe セッションは、コードに関する双方向の会話に最適化されており、質問してすぐに回答を得ることができます。
・クイック アシスタンス: コーディングに関する質問への回答やコードの動作の説明をすぐに得たり、正式な仕様プロセスを経ずに概念を理解したりするのに最適です。
・コンテキスト理解: 他の Kiro セッションと同様に、Vibe セッションではコンテキスト プロバイダーを活用してコードベースを理解しますが、広範なコード生成ではなく説明に重点が置かれます。
・柔軟なアプローチ: Vibe セッションは、Spec セッションに比べてより流動的で構造化されていないアプローチを提供するため、探索的なコーディングと学習に適しています。
https://kiro.dev/docs/chat/vibe/
今回はサンプルアプリケーションを作るだけでしたが、他の用途などでも利用できそうな気がするので、また試してみたいと思います。