こんにちは
AWSグループのホンドウです。
最近、鉄分補給のためにMIL○を飲んでいます。
ということで今回もKiroでやってみたことについて書かせていただきます。
前回はVibeモードを使ってゲームを作りましたが、今回はSpecモードを使ってアプリを作ってみました。
Specモードでできること
このモードでは「こんなものが作りたいよ!」と雑なお願いをするだけで、ヒアリングしながら要件定義書の作成から実装までやってくれちゃいます。
震えますね。

さて、どんなものを作ろうか…
毎日何を食べるか考えるのって面倒ですよね。
それに加えて栄養ある食事となると…健康を維持しつつ生きるのってハードルが高いです。
そんな私のために献立提案アプリを作ってみようかと思います。

要件定義フェーズ
Specモードには①Requirements > ②Design > ③Task listという3つのステップがあり、まず①Requirementsの要件定義から進めていきます。
本来はもっと具体的に指示を出すべきでしたが、アプリ開発未経験者の私は
まずは経験!ということで細かいことはKiroに丸投げしてしまいました。
要件定義書の作成が完了したので、中身を確認して要望を追加してみます。
そうすると要件定義書を書き換えてくれます。
設計書フェーズ
要件定義を終えたので、②Designの設計書作成です。
design.mdという名前のファイル名の800行を超える設計書が数分で作成されました。
下記のような内容が記載されているようです。
・概要と主要機能 ・レイヤードアーキテクチャの設計 ・6つの主要コンポーネントとインターフェース ・データモデル定義 ・計算アルゴリズム(BMR、推奨栄養値、献立生成など) ・25個の正確性プロパティ(要件から導出) ・エラーハンドリング戦略 ・デュアルテストアプローチ(ユニットテスト + プロパティベーステスト)
こちらも今回はさらっと確認して次のフェーズに進んでしまいます。
Kiroはこちらの要望について気の済むまで聞いてくれるので、必要があれば何度でもやり取りしてみてください。
実装タスクフェーズ
続いては、③Task list 実装タスクリストの作成です。

テストを含むタスクを20個に分割して、実装するリストを作成してくれました。
タスクの実行をお願いすると上から順に進めてくれます。
実行中や完了したタスクのステータスを都度更新してくれるので、今どこまで終わっているかがわかりやすいですね。
タスクを進めていく中で、テストコマンドを実行しようとして失敗を繰り返していました。
原因は、作業端末にnode.jsがインストールされていないためnpmコマンドの実行ができなかったのですが、
こちらから指摘するまで気づかなかったみたいです😣
インストールの手順まで教えてくれましたが、ひとまずスキップして進めてもらうことにしました。

そして何度か進捗報告を受けつつ、「先に進めてください」などの会話を繰り返しながらすべてのタスクが完了しました!
アプリを起動してみよう!
完成したようなので早速動かしてみよう~と思ったんですが、ちょっとどうやって起動するのかわからないので質問してみました。
手のかかるクライアントですね。
実行手順のドキュメントを作ってくれるみたいです。
ありがたい
実装中に頑なに拒否していたnode.jsのインストールはアプリの起動に必須だったらしく、渋々インストールしました。
面倒くさがった以外にとくに理由はないのでね…
無事にアプリを起動することができましたが、開けないページがあったので聞いてみます。
すぐに原因を見つけて改修してくれました。
そしてついに…!

ページのデザインについては全く指示を出していなかったですが、落ち着いた感じのデザインですね。

食材を並べているだけで、なんの料理を作るかまでは考慮されていないです。
今回のゴールは形にするところまでということで…
残念ながら満足するところまではいきませんでしたが、改善に改善を重ねて理想のアプリにしていこうと思います。
Specモードを使ってみて
要件定義から実装まで一通り流してみましたが、Vibeモードよりは時間がかかる印象でした。
正確な時間は計っていなかったのですが、2時間くらいですかね?
それでも、人間がゼロから始めるよりも遥かに早いのは言うまでもありませんね。
前回作成したゲームはかなり簡易的なものだったので比較にはならないかもしれませんが…
要件定義書とデザインシートの作成、実装とテストまで実施してくれるためクレジット消費も早かったです。
反省と気付き
あまりにも雑な指示出しの結果、想定していたものとは異なるアプリが完成しました。
物分かりのいいKiroとはいえ、ちゃんと伝えてくれなきゃわからないよ…ということですね。
これはAIに対しても、人に対しても言えることだなと。
自分の考えを伝えるには、伝わるように言語化していく能力が重要ですね。
一度で伝わらなくても、会話を重ねていくことで明確になっていくことも多いかと思います。
いいこと言っちゃったな
…ということで、ここまで読んでいただきましてありがとうございました!





