はじめに
最近話題になっているAI統合開発環境(IDE)の「Kiro」をご存知でしょうか?
Kiroの特徴として、システム開発をする上で重要な、要求定義 → 設計 → タスク化のプロセス自体をKiroがAIパートナーとして支援してくれることが挙げられます。
個人的に「Vibe Coding」と呼ばれる、対話形式で直感的に開発を進めるスタイルは認識していましたが、Kiroが提唱しているスペック駆動開発(Spec-Driven Development) に対しては、あまり解像度が高くありませんでした。
そのため、本記事ではKiroの概要や基本的な使い方から、実際にLaravelで簡単なアプリケーションを開発するデモを通じて、Kiroの特徴に触れていきます。
Kiroの概要まとめ
前述の通り、Kiro はAmazon Web Services(AWS)が2025年7月に公開した新しい統合開発環境(IDE)の1つです。
項目 | 内容 |
---|---|
開発元 | Amazon |
ベース | Visual Studio Code のフォーク |
現状 | パブリックプレビュー中(2025年7月現在、無料で利用可能) |
対応LLM | Claude Sonnet 4と3.7(デフォルトは4) |
認証方法 | Google, GitHub, AWS Builder ID, AWS SSOなど(AWSアカウントは必須ではない) |
インストールとセットアップ
早速、Kiroを導入してみます。
macOSならHomebrewで簡単インストールできます。
-
Kiroのダウンロード
# 2025/07/21時点の情報です # 最新のインストール方法は公式サイトをご確認ください。 brew install --cask kiro
-
初回起動と認証
FinderからKiroを起動し、画面の指示に従ってアカウントを連携します。私は今回私用のGoogleアカウントを使用しました -
プロジェクトを開く
セットアップが完了したら、開発したいプロジェクトのディレクトリをKiroで開きます。
※ もし既にVSCodeを利用している場合、ログイン後にVSCodeの設定や拡張機能をインポート可能です
Kiroの2つの開発モード
Kiroには、目的に応じて使い分けられる2つの主要なモードがあります。
- Vibe : AIと自由に対話しながら、素早くアイデアを試作(プロトタイピング)するモードです。「こんなもの作りたいんだけど」とチャットで伝えるだけで、Kiroが即座にコードを書き始めてくれます
- Spec : しっかりと仕様を詰めてから実装するモード。要件定義書 → 設計書 → 実装計画書 の順にドキュメントを固めながら、着実に開発を進めてくれます
今回は、Kiroの真骨頂とも言える Specモード を使った開発を試してみます。
Specモードによる仕様駆動開発
Specモードの核心は、以下の3つの「.mdファイル」をAIと対話しながら作成していく点にあります。
各mdファイルの具体の内容はこの後のセクションで詳しく触れます。
-
requirements.md
(要件定義ファイル)- 目的: 「何を」作るかを定義します。
- 内容: ユーザー視点で必要な機能や、完成の基準(受け入れ基準)を記述します。Kiroは、これを明確にするために質問を投げかけてくれます。
-
design.md
(設計ファイル)- 目的: 「どのように」作るかを定義します。
- 内容: 要件定義を基に、技術アーキテクチャ、使用コンポーネント、データモデル、API仕様など、実装のための具体的な設計書を作成します。
-
tasks.md
(タスクリストファイル)- 目的: 実装の具体的な手順をリスト化します。
- 内容: 設計書を元に、コーディングタスクをチェックリスト形式に分解します。Kiroはこのタスクリストに従って、一つずつ着実に実装を進めていきます。
※ 画像引用:Agentic IDE Kiro を使って仕様駆動開発を試してみた
【実践デモ】洋服管理アプリをLaravelで作ってみる
実際にKiroを使って簡単なアプリケーションを作成してみます。
私は「Laravelで洋服管理アプリケーション」を開発してみました。(あくまでデモなので、洋服管理の選定に特に意味はないです。笑)
1. 要件定義 (requirements.md
の作成)
まずはKiroのチャットで、作りたいものを伝えます。
🤖 チャット指示:
洋服管理アプリケーションを作成したいです。言語は原則Laravelのみを使用してください。作成されるドキュメントは日本語でお願いします。
この大雑把な自然言語の指示だけで、Kiroはわずか40秒ほどで、非常に詳細な要件定義書 (requirements.md
) を生成してくれました。
【クリックで開閉】実際に生成された要件定義ドキュメント
# 要件ドキュメント
## 概要
洋服管理アプリケーションは、ユーザーが所有する衣類を効率的に管理し、コーディネートの提案や着用履歴の追跡を可能にするWebアプリケーションです。Laravelフレームワークを使用して開発され、ユーザーフレンドリーなインターフェースを通じて洋服の整理と活用を支援します。
## 要件
### 要件1
**ユーザーストーリー:** ユーザーとして、自分の洋服を登録・管理したいので、アイテムの詳細情報を記録できるようにしたい
#### 受け入れ基準
1. ユーザーが洋服アイテムを追加するとき、システムは名前、カテゴリ、色、ブランド、購入日、価格、写真を保存しなければならない
2. ユーザーが洋服アイテムを編集するとき、システムは既存の情報を更新しなければならない
3. ユーザーが洋服アイテムを削除するとき、システムは確認ダイアログを表示し、承認後に削除しなければならない
4. システムは洋服アイテムの写真をアップロードし、適切なサイズにリサイズして保存しなければならない
### 要件2
**ユーザーストーリー:** ユーザーとして、洋服を効率的に検索・フィルタリングしたいので、様々な条件で絞り込みができるようにしたい
#### 受け入れ基準
1. ユーザーが検索機能を使用するとき、システムは名前、ブランド、カテゴリで検索結果を返さなければならない
2. ユーザーがフィルター機能を使用するとき、システムは色、カテゴリ、ブランド、価格帯で結果を絞り込まなければならない
3. ユーザーが並び替え機能を使用するとき、システムは購入日、価格、名前の昇順・降順で結果を表示しなければならない
4. システムは検索・フィルター条件をURLパラメータとして保持し、ページリロード時も条件を維持しなければならない
### 要件3
**ユーザーストーリー:** ユーザーとして、洋服の着用履歴を記録したいので、いつ何を着たかを追跡できるようにしたい
#### 受け入れ基準
1. ユーザーが着用記録を追加するとき、システムは日付、着用したアイテム、場所、天気、メモを保存しなければならない
2. ユーザーが着用履歴を表示するとき、システムは日付順で履歴を表示しなければならない
3. ユーザーが着用統計を確認するとき、システムは各アイテムの着用回数と最終着用日を表示しなければならない
4. システムは着用頻度の低いアイテムを識別し、ユーザーに通知しなければならない
### 要件4
**ユーザーストーリー:** ユーザーとして、コーディネートを作成・保存したいので、お気に入りの組み合わせを記録できるようにしたい
#### 受け入れ基準
1. ユーザーがコーディネートを作成するとき、システムは複数のアイテムを組み合わせて保存しなければならない
2. ユーザーがコーディネート名とメモを入力するとき、システムはその情報を保存しなければならない
3. ユーザーがコーディネート一覧を表示するとき、システムは作成日順で表示しなければならない
4. ユーザーがコーディネートを編集・削除するとき、システムは適切に更新・削除処理を実行しなければならない
### 要件5
**ユーザーストーリー:** ユーザーとして、洋服の状態を管理したいので、クリーニング履歴や状態を記録できるようにしたい
#### 受け入れ基準
1. ユーザーが洋服の状態を更新するとき、システムは「良好」「普通」「要修理」「処分予定」の状態を保存しなければならない
2. ユーザーがクリーニング記録を追加するとき、システムは日付、クリーニング店、料金を保存しなければならない
3. システムは状態が「要修理」または「処分予定」のアイテムを別途表示しなければならない
4. システムはクリーニング履歴を日付順で表示しなければならない
### 要件6
**ユーザーストーリー:** ユーザーとして、洋服の購入予算を管理したいので、支出を追跡できるようにしたい
#### 受け入れ基準
1. ユーザーが月間予算を設定するとき、システムはその金額を保存しなければならない
2. システは当月の洋服購入合計金額を計算し、予算との比較を表示しなければならない
3. 予算を超過した場合、システムは警告メッセージを表示しなければならない
4. システムは月別・年別の支出統計をグラフで表示しなければならない
### 要件7
**ユーザーストーリー:** ユーザーとして、アプリケーションに安全にアクセスしたいので、認証機能が必要
#### 受け入れ基準
1. ユーザーがアカウント登録するとき、システムはメールアドレスとパスワードを要求しなければならない
2. ユーザーがログインするとき、システムは認証情報を検証しなければならない
3. 認証されていないユーザーがアクセスするとき、システムはログインページにリダイレクトしなければならない
4. システムはパスワードリセット機能を提供しなければならない
ユーザーストーリーと受け入れ基準が明確に定義されており、この時点でプロジェクトの全体像がかなりクリアになります。内容に問題がなければ、続いて「Move to design phase」をクリックして設計フェーズに進みます。
2. 設計 (design.md
の作成)
次に、要件定義を基に設計書 (design.md
) が自動生成されます。
これも30〜40秒ほどでサクッと作成されました。
【クリックで開閉】実際に生成された設計ドキュメント
設計ドキュメント
概要
洋服管理アプリケーションは、LaravelフレームワークのMVCアーキテクチャを基盤とし、Eloquent ORM、Blade テンプレート、Laravel認証システムを活用したWebアプリケーションです。ユーザーが洋服を効率的に管理し、着用履歴やコーディネートを追跡できる機能を提供します。
アーキテクチャ
システム構成
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ ブラウザ │ │ Laravelアプリ │ │ データベース │ │ (Frontend) │◄──►│ (Backend) │◄──►│ (MySQL) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ ファイル │ │ ストレージ │ └─────────────────┘
MVCアーキテクチャ
- Model: Eloquent ORMを使用したデータモデル
- View: Bladeテンプレートを使用したUI
- Controller: ビジネスロジックとリクエスト処理
コンポーネントと インターフェース
データモデル
User(ユーザー)
- id: bigint (主キー) - name: string - email: string (ユニーク) - email_verified_at: timestamp - password: string - monthly_budget: decimal(8,2) (月間予算) - created_at: timestamp - updated_at: timestamp
ClothingItem(洋服アイテム)
- id: bigint (主キー) - user_id: bigint (外部キー) - name: string - category: string - color: string - brand: string - purchase_date: date - price: decimal(8,2) - image_path: string - status: enum('good', 'normal', 'needs_repair', 'to_dispose') - created_at: timestamp - updated_at: timestamp
WearRecord(着用記録)
- id: bigint (主キー) - user_id: bigint (外部キー) - clothing_item_id: bigint (外部キー) - worn_date: date - location: string - weather: string - notes: text - created_at: timestamp - updated_at: timestamp
Outfit(コーディネート)
- id: bigint (主キー) - user_id: bigint (外部キー) - name: string - notes: text - created_at: timestamp - updated_at: timestamp
OutfitItem(コーディネートアイテム)
- id: bigint (主キー) - outfit_id: bigint (外部キー) - clothing_item_id: bigint (外部キー) - created_at: timestamp - updated_at: timestamp
CleaningRecord(クリーニング記録)
- id: bigint (主キー) - clothing_item_id: bigint (外部キー) - cleaning_date: date - shop_name: string - cost: decimal(6,2) - created_at: timestamp - updated_at: timestamp
コントローラー
AuthController
- ユーザー認証(登録、ログイン、ログアウト)
- パスワードリセット
ClothingItemController
- 洋服アイテムのCRUD操作
- 画像アップロード処理
- 検索・フィルタリング機能
WearRecordController
- 着用記録のCRUD操作
- 着用統計の生成
OutfitController
- コーディネートのCRUD操作
- アイテム組み合わせ管理
CleaningRecordController
- クリーニング記録のCRUD操作
DashboardController
- ダッシュボード表示
- 統計データの集計
BudgetController
- 予算管理
- 支出統計
ビュー(Bladeテンプレート)
レイアウト
layouts/app.blade.php
: メインレイアウトlayouts/auth.blade.php
: 認証ページレイアウト認証
auth/login.blade.php
: ログインページauth/register.blade.php
: 登録ページauth/passwords/email.blade.php
: パスワードリセット洋服管理
clothing/index.blade.php
: 洋服一覧clothing/create.blade.php
: 洋服登録clothing/edit.blade.php
: 洋服編集clothing/show.blade.php
: 洋服詳細その他
dashboard.blade.php
: ダッシュボードoutfits/index.blade.php
: コーディネート一覧wear-records/index.blade.php
: 着用履歴budget/index.blade.php
: 予算管理データモデル
リレーションシップ
User (1) ──── (n) ClothingItem User (1) ──── (n) WearRecord User (1) ──── (n) Outfit ClothingItem (1) ──── (n) WearRecord ClothingItem (1) ──── (n) CleaningRecord ClothingItem (n) ──── (n) Outfit (through OutfitItem) Outfit (1) ──── (n) OutfitItem
データベース制約
- 外部キー制約によるデータ整合性の保証
- ユニーク制約(ユーザーのメールアドレス)
- NOT NULL制約(必須フィールド)
- インデックス(検索性能向上)
エラーハンドリング
バリデーション
フォームリクエスト
StoreClothingItemRequest
: 洋服アイテム作成時のバリデーションUpdateClothingItemRequest
: 洋服アイテム更新時のバリデーションStoreWearRecordRequest
: 着用記録作成時のバリデーションStoreOutfitRequest
: コーディネート作成時のバリデーションバリデーションルール
// 洋服アイテム 'name' => 'required|string|max:255', 'category' => 'required|string|max:100', 'color' => 'required|string|max:50', 'brand' => 'nullable|string|max:100', 'purchase_date' => 'required|date', 'price' => 'required|numeric|min:0', 'image' => 'nullable|image|mimes:jpeg,png,jpg|max:2048',
例外処理
- ファイルアップロード失敗時の処理
- データベース接続エラーの処理
- 認証エラーの処理
- 404エラー(存在しないリソース)の処理
エラーメッセージ
- 日本語でのユーザーフレンドリーなエラーメッセージ
- フラッシュメッセージによる操作結果の通知
テスト戦略
単体テスト(PHPUnit)
モデルテスト
- Eloquentモデルのリレーションシップテスト
- モデルのバリデーションテスト
- スコープメソッドのテスト
コントローラーテスト
- HTTPリクエスト/レスポンステスト
- 認証が必要なエンドポイントのテスト
- CRUD操作のテスト
機能テスト
認証テスト
- ユーザー登録フローのテスト
- ログイン/ログアウトのテスト
- パスワードリセットのテスト
洋服管理テスト
- 洋服アイテムの作成、編集、削除のテスト
- 画像アップロードのテスト
- 検索・フィルタリング機能のテスト
着用記録テスト
- 着用記録の作成、表示のテスト
- 統計データの生成テスト
データベーステスト
- マイグレーションのテスト
- シーダーのテスト
- データベース制約のテスト
テストデータ
- ファクトリーを使用したテストデータ生成
- シーダーによる開発用データの準備
セキュリティ考慮事項
認証・認可
- Laravel標準の認証システムを使用
- ミドルウェアによるルート保護
- CSRFトークンによる攻撃防止
データ保護
- パスワードのハッシュ化
- SQLインジェクション対策(Eloquent ORM使用)
- XSS対策(Bladeテンプレートの自動エスケープ)
ファイルアップロード
- 許可されたファイル形式のみアップロード可能
- ファイルサイズ制限
- アップロードファイルの検証
パフォーマンス考慮事項
データベース最適化
- 適切なインデックスの設定
- N+1問題の回避(Eager Loading使用)
- ページネーション実装
キャッシュ戦略
- ビューキャッシュの活用
- 統計データのキャッシュ
- 画像の最適化とキャッシュ
フロントエンド最適化
- CSS/JSファイルの最小化
- 画像の遅延読み込み
- レスポンシブデザインの実装
この内容で良ければ、続いて「Move to implementation plan」をクリックします。
3. 実装計画 (tasks.md
の作成)
最後に、設計書を元に具体的な実装タスクをリスト化した tasks.md
が生成されます。
【クリックで開閉】実際に生成されたtask.md
実装計画
1. プロジェクトセットアップとコア構造の構築
- Laravelプロジェクトの初期化とディレクトリ構造の設定
- 基本的な設定ファイルとミドルウェアの構成
- 要件: 7.1, 7.2
2. データベース設計と基盤の実装
2.1 マイグレーションファイルの作成
- users、clothing_items、wear_records、outfits、outfit_items、cleaning_recordsテーブルのマイグレーション作成
- 外部キー制約とインデックスの設定
- 要件: 1.1, 3.1, 4.1, 5.1, 5.2, 7.1
2.2 Eloquentモデルの実装
- User、ClothingItem、WearRecord、Outfit、OutfitItem、CleaningRecordモデルの作成
- モデル間のリレーションシップの定義
- 要件: 1.1, 3.1, 4.1, 5.1, 5.2
2.3 モデルファクトリーとシーダーの作成
- テスト用データ生成のためのファクトリー作成
- 開発用初期データのシーダー実装
- 要件: 1.1, 3.1, 4.1
3. 認証システムの実装
3.1 Laravel認証の設定とカスタマイズ
- Laravel Breezeまたは標準認証の実装
- 認証ルートとミドルウェアの設定
- 要件: 7.1, 7.2, 7.3, 7.4
3.2 認証ビューの日本語化とカスタマイズ
- ログイン、登録、パスワードリセットページの日本語化
- レスポンシブデザインの適用
- 要件: 7.1, 7.2, 7.4
4. 洋服アイテム管理機能の実装
4.1 ClothingItemControllerの基本CRUD実装
- 洋服アイテムの作成、表示、編集、削除機能の実装
- バリデーションルールの設定
- 要件: 1.1, 1.2, 1.3
4.2 画像アップロード機能の実装
- 画像ファイルのアップロード処理
- 画像のリサイズと保存機能
- 要件: 1.4
4.3 洋服アイテム一覧ページの実装
- 洋服一覧の表示機能
- ページネーション機能の実装
- 要件: 1.1, 2.1
4.4 検索・フィルタリング機能の実装
- 名前、ブランド、カテゴリでの検索機能
- 色、カテゴリ、ブランド、価格帯でのフィルタリング
- 要件: 2.1, 2.2
4.5 並び替え機能の実装
- 購入日、価格、名前での並び替え機能
- URLパラメータでの条件保持機能
- 要件: 2.3, 2.4
5. 着用記録管理機能の実装
5.1 WearRecordControllerの実装
- 着用記録の作成、表示機能
- 着用記録フォームの実装
- 要件: 3.1, 3.2
5.2 着用履歴表示機能の実装
- 日付順での着用履歴表示
- 着用記録の詳細表示
- 要件: 3.2
5.3 着用統計機能の実装
- 各アイテムの着用回数と最終着用日の計算
- 着用頻度の低いアイテムの識別機能
- 要件: 3.3, 3.4
6. コーディネート管理機能の実装
6.1 OutfitControllerの基本機能実装
- コーディネートの作成、表示、編集、削除機能
- 複数アイテムの組み合わせ保存機能
- 要件: 4.1, 4.4
6.2 コーディネート一覧と詳細表示の実装
- コーディネート一覧の作成日順表示
- コーディネート詳細ページの実装
- 要件: 4.2, 4.3
7. 洋服状態管理機能の実装
7.1 洋服状態更新機能の実装
- 状態(良好、普通、要修理、処分予定)の管理機能
- 状態別アイテム表示機能
- 要件: 5.1, 5.3
7.2 クリーニング記録機能の実装
- CleaningRecordControllerの実装
- クリーニング記録の作成、表示機能
- 要件: 5.2, 5.4
8. 予算管理機能の実装
8.1 BudgetControllerの実装
- 月間予算設定機能
- 当月支出計算と予算比較機能
- 要件: 6.1, 6.2
8.2 予算超過警告機能の実装
- 予算超過時の警告メッセージ表示
- 支出統計のグラフ表示機能
- 要件: 6.3, 6.4
9. ダッシュボードの実装
9.1 メインダッシュボードの作成
- 統計データの集計と表示
- 最近の活動履歴表示
- 要件: 1.1, 3.3, 6.2
9.2 ナビゲーションとレイアウトの実装
- メインレイアウトテンプレートの作成
- レスポンシブナビゲーションの実装
- 要件: 7.3
10. テストの実装
10.1 モデルテストの作成
- Eloquentモデルのリレーションシップテスト
- モデルバリデーションのテスト
- 要件: 1.1, 3.1, 4.1, 5.1
10.2 コントローラーテストの作成
- 各コントローラーのHTTPテスト
- 認証が必要なエンドポイントのテスト
- 要件: 1.1, 1.2, 1.3, 7.2, 7.3
10.3 機能テストの作成
- ユーザー認証フローのテスト
- 洋服管理機能の統合テスト
- 要件: 7.1, 7.2, 1.1, 1.2, 1.3
11. UI/UXの改善と最終調整
11.1 フロントエンドの最適化
- CSS/JSファイルの最小化
- 画像の最適化と遅延読み込み
- 要件: 1.4, 2.1
11.2 エラーハンドリングの実装
- ユーザーフレンドリーなエラーメッセージの実装
- 例外処理の強化
- 要件: 1.3, 7.2
12. 本番環境準備
12.1 設定ファイルの本番環境対応
- 環境変数の設定
- セキュリティ設定の強化
- 要件: 7.1, 7.2, 7.3
12.2 パフォーマンス最適化
- データベースクエリの最適化
- キャッシュ戦略の実装
- 要件: 2.1, 2.2, 3.3
プロジェクトのセットアップから各機能の実装、テスト、デプロイ準備まで、開発に必要なタスクが網羅的かつ具体的なチェックリストとして洗い出されています。
「Finalize task list」をクリックすれば、開発準備は完了。あとは tasks.md
を開き、各タスクの横にある「Start task」ボタンを押せば、Kiroがコーディングを開始してくれます。
余談:Kiroのプライバシー設定(オプトアウト)
Kiroは非常に便利ですが、利用前にプライバシー設定を確認しておくことを強く推奨します。現状の無料プランやプレビュー版では、オプトアウトしない限りコンテンツがモデル改善に使用される可能性があるためです。
特に会社のソースコードや機密情報を含むプロジェクトで利用する方の場合は、必ず以下の手順でオプトアウト設定を行いましょう。
手順:
- Kiroの
Settings
を開く (Cmd + ,
) -
User
タブに切り替える -
Application
>Telemetry and Content
を選択 - ドロップダウンから
Disabled
を選択し、すべてのテレメトリーとユーザーデータ収集を無効にする
その他の便利機能
今回のデモでは使用しませんでしたが、Kiroには他にも強力な機能があります。
-
Hook: 特定のイベント(例:ファイルの保存)をトリガーに、AIエージェントが自動で決められた作業(例:コードフォーマット)を行うルールを設定できます
-
Steering:
.kiro/steering
ディレクトリにドキュメントを置くことで、プロジェクト固有のルールやコーディング規約をAIに永続的に記憶させることができます。これにより、プロジェクト全体で一貫したコーディングを維持しやすくなります。
※ タスクリストがすでにある状態で、Agent Hooksを追加しようとすると順番待ちみたいになるので、タスクリストがない状態で行うのが良いかもしれません。私の場合はtodo-listのタスクが残っていたので、実行されませんでした
さいごに:個人的な所感
今回Kiroを触ってみて、そのポテンシャルの高さに驚きました。
- Human-in-the-Loopによる安心感: AIが自動で進めるだけでなく、要件定義・設計・実装計画の各ステップで人間が内容を確認・修正できるため、ある程度AIの暴走を防ぎ、手綱をしっかりと握れる印象です
- 個人開発や学習の最高の相棒に: ゼロから構造を考える手間を大幅に削減できるため、個人開発のスピードが格段に上がりそうです。また、要件定義からタスク分割までの一連の流れは、自分のような初学者エンジニアが「良い開発プロセス」を学ぶための最高の教材になると感じました
- 適材適所のツール連携: 現状、Kiroはコード生成速度が少し遅いと感じる場面もありました。そのため、X上でも騒がれているように「仕様定義〜タスク分割までをKiroで行い、実際のコーディングはより高速なツール(例: ClaudeCode)で行う」といった使い分けも賢い選択肢かもしれません
- エンジニア以外の活用: PdMやデザイナーなど、要件定義や仕様策定に関わる職種の方が、思考の壁打ち相手としてKiroを使うのも非常に有効だと感じました
Kiroはまだプレビュー段階ですが、これからの進化が非常に楽しみなツールです。皆さんもぜひ一度、この未来の開発体験を味わってみてはいかがでしょうか? 🚀
最後までお読みいただきありがとうございました!