過去に開発したアプリをKiroのスペック駆動で再開発してみた

こんにちは、エンジニアの君島です。

みなさん、Kiro使ってますか?

 

KiroにはSpecという仕様駆動開発をする機能があります。

どんなものなのか、以前生成AIを駆使したアプリケーションで試してみることにしました。

 

おさらい

昨年のAWS Summit向けにスタンプラリーアプリを生成AIを駆使して開発しました。機能仕様をまとめていたので仕様駆動開発に利用しやすいだろうというのと、昨年と今とで生成AIをつかった開発はどう変わったのか差を感じるためにはちょうどいいだろうと考えて、トライしてみることにしました。

昨年は、Amazon Bedrock、モデルはClaude3 Haikuを利用して、大まかなソースコードを生成してもらい、手動での画像設定を組み合わせて、こんなアプリケーション画面を作成しました。

今回は、同じような機能を持ったアプリをKiroを使って開発しようと思います。

 

 

Kiroを駆使した仕様駆動開発の流れ

導入

まずはバイブコーディングか仕様駆動開発かを選択しましょう。

今回は、上記の通り仕様が定まっているので仕様駆動を選択します。

 

要件書を作成

仕様駆動だからと言って、要件書(requirements.md)を頑張って自作しなくても大丈夫で、最初の導入は簡単なプロンプトからでも自動で生成してくれます。

以下は実際に投げたプロンプトです。

 

 

たったこれだけのインプットなのに、かなりしっかりした構成にも見える要件書を作成してくれました。

 

要件書のレビュー

もちろん、この仕様では問題があるという場合は、修正することができます。以下は、不足していた管理画面の機能を少し詳しめに説明しています。

 

 

プロンプトを投げると、これまた要件書を書き換えてくれます。

書き換えてくれた要件書を確認して、良さそうなら次のステップに進みます。次は設計書の作成です。こちらもガイダンスに従って生成してもらいましょう。

 

 

設計書の作成

画面に従ってボタンを押して、設計書(design.md)の生成を任せます。

少し待っていると、既にプロジェクトがあるのではとpackage.jsonを探そうとし、その後設計書の生成が始まります。

 

 

生成された設計書には簡単な図も表現されていますし、結構わかりやすいですよね。

関数一覧も記載されており、まさに設計をしているというのが読み取れると思います。

 

 

設計書のレビューとタスクの作成

要件書道用に、できあがった設計書を読んでレビューします。気になる点があれば質問することもできますし、意図しない設計なら改めることができます。

問題がなくなれば、次は画面に従ってタスク(実装計画)の作成をします。

タスクは、設計をもとに実装をいくつかの段階に分けているものです。各タスクには、どの要件を満たすのかが青字で書かれているのも嬉しいですね。

 

 

タスク実行(実装)

それでは、実装を開始しましょう。実装と言っても実際に手を動かすのではなく、ドキュメントに引き続いて、自動生成してもらう形になります。

ユーザーは、タスクを有効化したり、進捗を随時確認しながら、コマンド実行の許可などしていくだけでOKです。

タスクを実行すると左側のファイルが増えたり、コードが実装されていくのもリアルタイムに見れるので楽しいです。もちろん作成途中の画面を見ても、どんどん機能が実装されたりデザインが変わっていきます。

 

 

また、タスクの中で実装だけではなく、テストの生成と実行もされました。

これは、仕様駆動ならではだなと思いました。要件や、それを元に設計をしているがために、テストすべき観点も抽出できるのだと思います。

加えて、正常系だけでなく、異常系もテストしようとしてくれるのもすごいですね。

タスク実行結果のレビュー

タスクを繰り返して実装が完了しますが、出来上がってきたアプリを見て直したいということも発生するでしょう。そのときは、追加でプロンプトを投げて修正することもできます。

 

今回は、スタンプOFFのときの画像が1種類しかなかったので、そのときの画像リソースを変えられないかお願いしました。

デモ的に画像の種類を増やしてくれるだけでなく、実際の画像を使う方法も案内してくれました。

 

 

考察

完成したアプリケーションを見てみよう

こちらがスタンプラリーのメイン画面と管理画面です。きちんと要件で与えた通りに実装してくれています。

 

 

 

他の方のKiroで開発したアプリを見たりしましたが、カーソルをあわせたときのアニメーションやデザインもなかなか細やかな点まで自動生成してくれます。人間に任せると省略されてしまうであろうちょっとした動作も、特に指示もしていないのに、実装されているのはとても嬉しいですね。

要件書の記載で言うと、このあたりの記載を実装してくれたのかもしれません。

視覚的に分かりやすいグリッド表示で進捗を確認でき、スタンプ獲得時には適切なフィードバックを提供する。

 

 

見た目も、動作も昨年開発したものを30分程度で超えてきましたね。

以下は、載せるのも恥ずかしいですが、昨年色々プロンプトを変えて試していたものです。

色々プロンプトを試行錯誤して生成させたりトライアンドエラーましたが、もうこんな涙ぐましい努力は不要そうでした。

 

 

人の手はどれくらい介在した?

特に意図してはいませんが、本当に上記のスクリーンショット分の数回プロンプトを投げただけで、コードや設計書類に手を加えるということはしていません。

現実の業務では、デザインを凝り始めたり、画像ファイルの置き換えのような場合には人の手が入ることもあるかもしれませんが、全くなしでもこのレベルのものができるのは驚異的なことだと思いました。

 

設計の練度は?

実は昨年開発する際も、生成AIに設計について壁打ちしていました。

例えば、スタンプのON/OFFの情報をクライアント側で持つことも、バックエンドで持つことも両方有りうるかなと思って相談したりしました。

今回、そのような議論をしなくても(バックエンドの構成まで考慮しなかったからかもしれませんが)、ローカルストレージで抱えようという昨年と同じ方針を勝手に導きだしてくれていました。

きちんと設計書にその旨の記載もありますし、要件から適切に検討してくれたのだなと思います。高い設計練度を持つことのできるアプローチだと感じました。

 

テストの観点で見ると?

繰り返しになるのですが、タスク実行時にテストをするというところまであるとは思っていませんでした。

しかも、そのボリュームはなかなかあります。正常系はもちろん異常系も作成してくれましたし、テスト用のランチャー画面のようなものまで生成してくれました。

 

 

 

人間の開発者だと、なかなかテストを得意にしなかったり、テストをしないという人もいますが、Kiroだと実装しながら自動で簡単なテストまで生成してくれるので、もう人間に頼るのやめちゃおうかと思うくらいありがたいです。

 

クレジット消費ってどうなの?

今回はFreeプランでKiroを利用していたのですが、タスク実行の後半、30分~1時間ほどドキュメントに、コードまで自動生成を任せていたところ、そこでクレジット上限に達してしまいました。

つまりは、Freeプランは、ひと月あたり大体1,2画面程度でシンプルな機能を持った仕様のアプリケーションが1つ作成できるかどうかくらいといったところでしょうか。

 

 

なお、クレジット使用料は左下あたりにあるアカウント情報のアイコンから確認できます。

 

まとめ

今回は、Kiroを使って、仕様が明らかだった1年前に開発したスタンプラリーアプリを再開発しました。

予想していたよりも開発スピードも速く、人の手もほとんど介在しなくてもいいのにもかかわらず、視覚的にきめ細やかなディテール部分の実装まで実現してくれたことに感動しました。

絶対、人間の開発者より気が利きます。

 

正直、デモアプリなどで作るのに良いかなと思っていたのですが、すぐに実用できるレベルのものができあがってきて驚きました。

これは、生成AIのモデルの進化も当然あるとは思いますが、ユーザーが望む機能をアプリケーションを開発する仕様駆動開発というアプローチもまた、生成AIと相性がいいんだろうなと思いました。つまり、プロンプトからコード出力するのではなく、要件として整理し、次に設計を固め、その方針に従って実装を自動生成するというアプローチです。

 

また、仕様を決めるところからということで、仕様駆動開発は、バイブコーディングよりハードルが高いかなと思いましたが、仕様案すら生成してもらえるので、やってみると意外と難しくもなく、時間も30分~1時間くらいでアプリケーションを完成させることができました。

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
君島翔
AI事業部事業部長株式会社ギークフィード
Java, .NET系の言語が得意。Laravelも使います。 エディタはvim派。 自分が楽するためにテストやビルド、デプロイを自動化させたい。 2022-2023 AWS Ambassador / 2022-2023 Japan AWS Top Engineer / 2022-2023 Japan AWS ALL Certifications Engineer

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ