Agentic IDE Kiro を使って仕様駆動開発を試してみた

Agentic IDE Kiro を使って仕様駆動開発を試してみた

Clock Icon2025.07.18

こんにちは、森田です。

AWS から Kiro と呼ばれる AI コードエディターが Public Preview としてアナウンスされました。

https://aws.amazon.com/jp/blogs/news/introducing-kiro/

Kiroの概要

KiroはAWSから発表された Agentic IDE となっており、「仕様駆動開発」を支援します。

仕様駆動開発とは、与えられたプロンプトから要件定義を行い、要件定義に沿ったタスクを実行していく開発手法です。

この開発手法を実現するためにKiroでは「Spec」と「Hook」の機能が提供されます。

Spec

https://kiro.dev/docs/specs/

Specは、和訳すると「仕様」を意味するように、AIエージェントが構築するアプリケーションの仕様書を作成してくれる機能となります。

一般的な Vibe Coding にてアプリケーションを構築する場合、プロンプトを都度与えることで開発者の所望するアプリケーションを作ることはできますが、最終的に構築されたアプリケーションについての詳細が把握できなくなることがあります。

そのような課題を解決するために、AIエージェントでただコーディングを行うのではなく、開発者の与えたプロンプトから要件定義、設計、タスクの実装を行った後でコーディングを行います。

Untitled(1) (1).png

Hook

https://kiro.dev/docs/hooks/

Hookを利用することで特定のイベント時に処理を実行させることができるようになります。

このユースケースとしては、開発者が暗黙的に行っている作業を自動化できます。

例えば、手動でファイル変更した場合に変更内容を把握して、仕様書などのドキュメントを漏れなく更新することができるようになります。

やってみた

Kiro には、「Spec」と「Hook」以外にも便利な機能があります。

本記事では、以下ドキュメントの機能を一通りやってみます。

https://kiro.dev/docs/getting-started/

先にアウトプットイメージを知りたい方は、以下のリポジトリにありますのでご確認ください。

https://github.com/cH6noota/kiro-sample/tree/main

インストール

https://kiro.dev/

まずは、上記サイトからインストールを行います。

インストール後、アプリケーションを起動するとサインインが求められます。

スクリーンショット 2025-07-16 18.51.35.png

サインインは、以下のサービスが利用できます。

  • Google
  • GitHub
  • AWS Builder ID
  • organization identity

せっかくなので、organization identityを使ってサインインしてみます。

スクリーンショット_2025-07-16_22_49_41.png

すると、Webブラウザが起動し、Amazon Q Developer への許可が求められます。

スクリーンショット 2025-07-16 22.51.11.png

なお、事前にサインインするユーザには、Q Developer のサブスクリプションが必要となります。

スクリーンショット_2025-07-16_22_57_58.png

VS Codeの設定や拡張機能をインポートします。

スクリーンショット 2025-07-16 23.01.07.png

プロジェクトの開始

それでは、実際に開発を進めていくために、Open a project で適当なフォルダを開きます。

スクリーンショット_2025-07-16_23_07_38.png

プロジェクトが開始されると以下のように「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.
    • まず計画を立ててから構築します。コーディングを開始する前に要件と設計を作成します。

スクリーンショット_2025-07-16_23_09_40.png

Vibe

Vibeでは、一般的な Vibe Coding が可能です。

プロンプト
Task管理アプリケーションを作成してください。
Next.js, shadcn/uiを使用してください。

スクリーンショット 2025-07-16 23.49.28.png

実行すると以下のようにAIエージェント側で処理内容やディレクトリ内を確認してアプリケーション構築を行なっていきます。

コマンド実行時も自動化させる場合は、Trusted Commandsで追加しておくと良さそうです。

https://kiro.dev/docs/chat/terminal/

スクリーンショット_2025-07-17_16_32_11.png

しばらくすると、アプリケーションの作成が完了し、開発サーバーが起動します。

スクリーンショット 2025-07-17 0.08.47.png

アクセスして動作確認しましたが、問題なくできているようです。

スクリーンショット 2025-07-17 0.08.24.png

開発サーバ停止後、作成したアプリケーションの概要が表示されます。

スクリーンショット_2025-07-17_0_10_45.png

View allをクリックすることでファイルの差分を確認することができます。

スクリーンショット_2025-07-17_0_26_05.png

作成されたアプリケーションは以下となります。

https://github.com/cH6noota/kiro-sample/tree/main/vibe-app/task-manager

Spec

仕様(Spec)の作成

では、お待ちかねのSpecモードで同じ処理を試してみます。

同様のプロンプトを与えて実行します。

スクリーンショット 2025-07-17 1.47.57.png

しばらくすると、requirements.mdが作成されます。

スクリーンショット 2025-07-17 2.07.38.png

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/specs/task-management-app/requirements.md

ここで作成された要件が問題ない場合は、Move to design phaseをクリックします。

スクリーンショット_2025-07-17_2_12_21.png

しばらくすると、design.mdが作成されます。

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/specs/task-management-app/design.md

こちらも問題なければ、Move to implementation planをクリックします。

スクリーンショット_2025-07-17_2_20_48.png

tasks.mdが作成されます。

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/specs/task-management-app/tasks.md

さいごに、Finalize task listをクリックすることで、仕様(requirements, design, tasks)に基づいてアプリケーション開発を開始していきます。

スクリーンショット_2025-07-17_12_21_04.png

タスクの実行

task.mdを開き、「Start task」をクリックします。

スクリーンショット_2025-07-17_12_26_00.png

新しいChatが開始され、タスクが実行されます。

スクリーンショット 2025-07-17 12.27.10.png

許可していないコマンドについては、以下のように都度確認が出てくるので、対応していきます。

スクリーンショット 2025-07-17 12.39.37.png

進めていくとタスク完了となり、以下のように作業内容のサマリが表示されます。

スクリーンショット 2025-07-17 12.53.40.png

tasks.md側にも「Task completed」として表示されます。

スクリーンショット 2025-07-17 12.54.23.png

View changesをクリックすることで差分も確認することができます。

スクリーンショット 2025-07-17 12.55.18.png

あとは、順にタスクを実行させていきます。

スクリーンショット 2025-07-17 14.01.09.png

Hook

Hook の登録

続いて Hook を試してみます。

Kiroのアイコンをクリックし、AGENT HOOKSの項目で「+」をクリックします。

スクリーンショット_2025-07-17_17_36_45.png

Hookに登録する処理もプロンプトで指示を与えます。

今回は、ファイル保存時にSpecのドキュメントを変更するようにしてみます。


JavaScript/TypeScript ファイルを保存する場合:
1. 対応するテスト ファイルを特定します。
2. 新しい機能のカバレッジを維持するためにテストを更新する
3. テストを実行して、合格することを確認します。
4. 必要に応じてスナップショットを更新します。

スクリーンショット_2025-07-17_17_28_25.png

チャット画面で Hook の作成処理が実行されます。

スクリーンショット 2025-07-17 17.28.29.png

実行後は、AGENT HOOKSに追加されます。追加された項目をクリックすると、処理内容の詳細を確認することができます。

スクリーンショット_2025-07-17_17_40_50.png

Hook の実行

以下のように関数の処理内容をコメントアウトし、テストに失敗するようにファイルの変更を行います。

ファイル保存後、登録しておいた Hook が実行されます。

スクリーンショット_2025-07-17_17_42_45.png

Hookでは期待したテストの実行が行われます。今回の変更によってテストは失敗となるため、コードの修正が実行されます。

スクリーンショット 2025-07-17 17.46.01.png

Steering

Steeringは、プロジェクトに関する永続的な知識を提供する機能です。

.kiro/steeringディレクトリにドキュメントを配置することで永続的な知識として扱ってくれます。

.kiro/
└── steering
    ├── product.md
    ├── structure.md
    └── tech.md

例えば、プロジェクトの目的やユーザターゲットなどをSteeringに記載することでその内容を考慮したコード生成が可能となります。

すでに作成済みのプロジェクトの場合は、Generate Steering Docsをクリックすることで、既存コード等を考慮しながら、Steeringドキュメントを生成します。

スクリーンショット_2025-07-17_17_49_39.png

スクリーンショット_2025-07-17_17_56_59.png

作成されたproduct.md, structure.md, tech.mdは以下となります。

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/steering/product.md

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/steering/structure.md

https://github.com/cH6noota/kiro-sample/blob/main/spec-app/.kiro/steering/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/

今回はサンプルアプリケーションを作るだけでしたが、他の用途などでも利用できそうな気がするので、また試してみたいと思います。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.