2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

AWS Kiro を使って、コードを一切書かずにチーム分けアプリをつくり、デプロイするまでの手順をまとめました。無料プランで簡単なアプリなら開発可能なので、Kiro を試してみたい人の参考になればうれしいです。

今回つくったのは、こんなアプリです。

FireShot Capture 036 - Create Next App - [localhost].png

メンバーを登録してボタンを押すと、ランダムでペアを作ってくれるシンプルなアプリです。これを自然言語で指示するだけ、コードは一切書かずに、約1時間でつくりました。以下、その手順を順番に紹介します。

現在、エンジニア7名でペア開発をしていて、毎週ペアをオンラインのツールで決めていました。ただ、お休みの方がいたり、技術力を均等にしたりと、チームで独自のルールが生まれてきました。こうした独自ルールでのチーム分けはオンラインツールでは難しくなってきたので、独自ルールでも簡単にチーム分けできるアプリをつくることにしました。今回は、前から使ってみたかった AWS Kiro でアプリ開発をしてみました。

Kiro とは

Kiro は、AWS が開発したエージェント型 AI コーディング IDE です。自然言語のプロンプトを「Spec(仕様書)」に変換してからコードを生成する、仕様駆動開発(Spec-Driven Development)を強みとしています。自然言語で要件を書くだけで、コードは一切書かずにアプリケーションを開発できます。

料金

今回のチーム分けアプリは、Free プランで収まりました。

プラン 月額 クレジット
Free $0 50
Pro $20 1,000
Pro+ $40 2,000
Pro Max $100 5,000
Power $200 10,000

Kiro のインストール

公式サイトにアクセスし、ダウンロードボタンから Kiro のアプリをダウンロードしましょう。

FireShot Capture 002 - Kiro_ Agentic AI development from prototype to production - [kiro.dev].png

初回起動すると認証画面が表示されるので、アカウント連携をします。私は今回、私用の AWS Builder ID で連携しました。

スクリーンショット 2026-04-02 13.50.10.png

連携が完了すると、VSCode の設定や拡張機能をインポートするか聞かれます。私はあとで必要になったらインストールしようと思ったので、Skip しました。そのあと、テーマカラーなどの初期設定を行います。

スクリーンショット 2026-04-02 13.54.39.png

下記の画面まで進めたら設定完了です。

スクリーンショット 2026-04-02 13.56.41.png

1. Project を作成してみよう

まずは、GitHub で今回作りたいチーム分けアプリの空のリポジトリを作成しました。Kiro にアプリ名を考えてもらい、「TeamUp」というアプリ名にしました。

FireShot Capture 033 - yo-sasago_teamup_ チーム分けアプリ - [github.com].png

リポジトリをクローンしてきて、最初の Open Project からフォルダを開くと「信頼するか」の確認画面が表示されるので、Yes を選択します。

スクリーンショット 2026-06-20 13.37.50.png

2. Next.js アプリを作成して Amplify にデプロイしよう

私の手元の環境はこんな感じでした。

aws --version
aws-cli/2.35.9 Python/3.14.5 Darwin/25.5.0 exe/arm64
amplify -v
9.2.1
node -v
v26.2.0

Next.js のアプリを作成します。

cd teamup
npx create-next-app@latest .

つづいて、Amplify のコンソールから今回作成したリポジトリを紐づけます。

FireShot Capture 034 - アプリケーションを作成_ Step 2 - リポジトリとブランチを追加 - Amplify - ap-northeast-1_ - [ap-northeast-1.console.aws.amazon.com].png

10分程度待つとデプロイ完了になり、作成された URL にアクセスすると、create-next-appで作成されたアプリがデプロイされていることが確認できます。まずは動くものを先にデプロイしておき、このあと Spec で中身を作り込んでいきます。

FireShot Capture 035 - アプリケーションの概要 - Amplify - ap-northeast-1_ - [ap-northeast-1.console.aws.amazon.com].png

3. 仕様駆動を試してみよう

スクリーンショット 2026-06-20 13.43.51.png

Spec にまずはこちらを入力しました。

ペアプロ用の「ランダムペア作成アプリ」を作りたい。 

 ## 背景
 - A社2名・B社5名の計7名で、毎週ペアプロをしている
 - 毎回ランダムでペア(2人組)を作りたい
 -  - 既に Next.js (App Router) アプリを作成し、AWS Amplify Hosting にデプロイ済み 

最初に「新機能か、バグ改修か」を質問されるので、新機能開発を選択しました。

スクリーンショット 2026-06-20 22.08.29.png

次に「機能要件か、技術設計か」を質問されるので、機能要件を選択しました。

スクリーンショット 2026-06-20 22.09.12.png

少し待つと requirements が作られるので、要件を確認してから、tasks.md と design.md も自動で作ります。

スクリーンショット 2026-06-20 22.14.13.png

Kiro の Spec は、3つのファイルが順番に作られていきます。それぞれざっくりこんな役割です。

  • requirements.md … 何を作るかをユーザーストーリーと受け入れ基準でまとめたもの。「WHEN(こういうとき)THE SYSTEM SHALL(システムはこうする)」という EARS(Easy Approach to Requirements Syntax)という記法で書かれます
  • design.md … どう作るかをまとめた技術設計書。アーキテクチャやコンポーネントの構成、シーケンス図などが入ります
  • tasks.md … design をもとに、実装を細かいタスクに分解したチェックリスト。完了・進行中といった状態で進捗を追えます

requirements で「何を」を固めて、design で「どう作るか」に落とし込み、tasks で「実装の手順」に分解する、という流れですね。コードを書く前にこの3つで認識を合わせられるのが、仕様駆動開発の肝だと感じました。

requirements.md
# 要件定義書

## はじめに

本機能は、A社2名・B社5名の計7名が毎週行うペアプログラミングのために、ランダムなペア(2人組)を生成するWebアプリケーションを実現する。メンバーリストを画面上で管理し、ボタン操作1回でペアを生成・表示する。奇数人数の場合は1人余る「あまり」が発生するため、その扱いも明確にする。

---

## 用語集

- **PairGenerator**: ランダムペア生成機能全体を指すシステム名
- **Member**: ペアプロに参加する個人(名前で識別)
- **Pair**: 2名で構成されるペアプログラミングの組
- **Leftover**: 奇数人数のときに余る1名
- **MemberList**: 現在登録されているメンバーの一覧
- **PairResult**: ペア生成の結果(Pair の配列 + 必要に応じて Leftover 1名)

---

## 要件

### 要件 1: メンバーリストの表示

**ユーザーストーリー:** メンバー管理者として、現在登録されているメンバー一覧を確認したい。そうすることで、ペア生成前に参加メンバーを把握できる。

#### 受け入れ基準

1. THE PairGenerator SHALL 初期表示時にデフォルトのメンバーリスト(A社2名・B社5名の計7名)を画面に表示する。
2. THE PairGenerator SHALL MemberList 内の各 Member を名前で識別可能な形式で表示する。
3. THE PairGenerator SHALL 現在の参加人数を MemberList とあわせて表示する。

---

### 要件 2: メンバーの追加

**ユーザーストーリー:** メンバー管理者として、新しいメンバーを MemberList に追加したい。そうすることで、参加者が変わっても柔軟に対応できる。

#### 受け入れ基準

1. WHEN メンバー名が入力されて追加操作が実行された場合, THE PairGenerator SHALL 入力された名前の Member を MemberList に追加する。
2. WHEN 空文字または空白のみのメンバー名で追加操作が実行された場合, THE PairGenerator SHALL Member を追加せず、入力エラーメッセージを表示する。
3. WHEN 既に MemberList に存在する名前で追加操作が実行された場合, THE PairGenerator SHALL Member を追加せず、重複エラーメッセージを表示する。
4. WHEN Member の追加が成功した場合, THE PairGenerator SHALL 入力フィールドをクリアする。

---

### 要件 3: メンバーの削除

**ユーザーストーリー:** メンバー管理者として、MemberList から特定のメンバーを削除したい。そうすることで、欠席者を除外してペアを生成できる。

#### 受け入れ基準

1. WHEN 削除操作が特定の Member に対して実行された場合, THE PairGenerator SHALL その Member を MemberList から削除する。
2. WHEN MemberList が 0 名になった場合, THE PairGenerator SHALL ペア生成ボタンを非活性化する。
3. WHEN MemberList が 1 名になった場合, THE PairGenerator SHALL ペア生成ボタンを非活性化する。

---

### 要件 4: ランダムペアの生成

**ユーザーストーリー:** チームリーダーとして、ボタン1回でメンバーをランダムにペアリングしたい。そうすることで、毎週の組み合わせを手作業なしに決定できる。

#### 受け入れ基準

1. WHEN ペア生成操作が実行された場合, THE PairGenerator SHALL MemberList 内のすべての Member をランダムにシャッフルして Pair の配列を生成する。
2. WHEN ペア生成操作が実行された場合, THE PairGenerator SHALL 各 Pair がちょうど 2 名で構成されることを保証する。
3. WHEN MemberList の人数が奇数の場合, THE PairGenerator SHALL 1 名を Leftover として PairResult に含め、Pair には含めない。
4. WHEN ペア生成操作が実行された場合, THE PairGenerator SHALL すべての Member がいずれか 1 つの Pair または Leftover に過不足なく割り当てられることを保証する。
5. WHEN ペア生成操作が実行された場合, THE PairGenerator SHALL 生成された PairResult を画面に表示する。
6. WHEN ペア生成操作が実行された場合, THE PairGenerator SHALL 同一の MemberList で再度ペア生成操作を実行したとき、前回と異なる Pair 構成が生成される可能性を持つ(ランダム性の保証)。

---

### 要件 5: ペア結果の表示

**ユーザーストーリー:** チームメンバーとして、生成されたペアを一目で確認したい。そうすることで、今週の組み合わせをすぐに把握できる。

#### 受け入れ基準

1. WHEN PairResult が生成された場合, THE PairGenerator SHALL 各 Pair のメンバー名を並べて表示する。
2. WHEN PairResult に Leftover が含まれる場合, THE PairGenerator SHALL Leftover の Member 名を「今週はお休み」または同等の識別可能なラベルとともに表示する。
3. WHEN PairResult が生成された場合, THE PairGenerator SHALL Pair の番号(例: ペア 1、ペア 2)を表示する。
4. WHEN PairResult が生成される前の初期状態では, THE PairGenerator SHALL ペア結果エリアに案内メッセージを表示する。

---

### 要件 6: メンバーリストのリセット

**ユーザーストーリー:** メンバー管理者として、MemberList をデフォルト状態(7名)に戻したい。そうすることで、誤って変更した場合でもすぐに元の状態に復元できる。

#### 受け入れ基準

1. WHEN リセット操作が実行された場合, THE PairGenerator SHALL MemberList をアプリ初期化時のデフォルトメンバー(7名)に戻す。
2. WHEN リセット操作が実行された場合, THE PairGenerator SHALL 表示中の PairResult をクリアする。

requirements が自動で作られるのはすごーく便利なのですが、ご覧のとおり量がかなり多いです。今回みたいなシンプルなアプリでもこれだけのボリュームになるので、抜けや認識のズレがないか文章をすべて読んで確認するのに、けっこう時間がかかりました。

最後に実行を押下します。

スクリーンショット 2026-06-20 22.22.39.png

20分程度待つと完了メッセージが出るので、実際に実行してみます。

スクリーンショット 2026-06-20 22.56.26.png

FireShot Capture 036 - Create Next App - [localhost].png

いい感じにペアプロのアプリケーションが作成できました。インストールからリポジトリの準備、デプロイ、Spec での実装まで含めて、トータルでだいたい1時間ほどでここまでたどり着けました。独自ルールは、また新しく Spec を作っていくだけです。

わかったこと

1 つの Spec を実行しただけで、無料プランの半分(約25クレジット)を使ってしまいました。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_95954_66cb5b8a-e80e-4195-954d-1d470f430591のコピー.png

本格的に独自ルールを足していくなら、Pro プランが必要そうです。とはいえ、コードを一切書かずにデプロイまでできたのは便利でした。次は、休みの人の扱いや技術力の均等化といった独自ルールを Spec で追加していこうと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?