こんにちは。デジタルイノベーション推進室の戦闘員Oです。
今回は、AWS Kiroを使いまして、Javaのファイルアップロードアプリを作成してみようと思います。

※AWS KiroとはAI駆動型統合開発環境と呼ばれるIDEです。仕様駆動開発(Spec-driven Development)となるspecsと、エージェントフック(Agent Hooks)と呼ばれるコード保存時のイベントからバックグラウンド作業に特徴がありますが、今回はspecsをお試し実行してみます。 

目次

1.    今回のゴール:AWS KiroでJavaファイルアップロードアプリ
2.    AWS Kiroのインストール
3.    Kiroとはじめての会話
4.    Kiroに作ってもらう
5.    さいごに

1.今回のゴール: AWS KiroでJavaファイルアップロードアプリ

以下の要件を元にアプリケーションを作成します。

  •     ファイルアップロードのJavaWebアプリケーション。
  •     アップロードしたファイルはS3に保管される。
  •     ユーザは、ALBとCognitoで認証されたユーザのみがJavaWebアプリケーションにアクセスします。
  •     ユーザの所属部署ごとに、S3のファイル保管フォルダパスを分ける。
  •     ユーザの所属部署は、RDSのUser_Infoテーブルに定義されています。
  •     ユーザの所属部署は、Cognitoで認証されたJWTトークンのメールアドレスをもとにRDSのUser_Infoテーブルの所属部署を引き当ててください。
  •     利用言語はJava
  •     利用フレームワークはSpringBootを基本とし、相性の良いその他フレームワークを選択する。
     

2. AWS Kiroのインストール

主役のKiroをダウンロードします。

 

https://kiro.dev/downloads/

ダウンロードしたらインストールします。
特に設定変更する必要はありませんので、確認の上次へ進んでください。 

Kiroが起動しますので、お好みのサインインを行います。
私は『AWS Builder ID』でサインインしました。

『AWS Builder ID』を選択するとブラウザが開き、ログインになります。

ログインが終わると『Kiro IDEに許可する』というボタンが出ます。

Kiroの画面に戻りまして、『VSCodeの設定をKiroにインポート』のボタンをクリックします。

テーマを選ぶ 黒or白 (白にしました。)

3. Kiroとはじめての会話

Kiroが立ち上がったので早速チャット欄で質問します。

プロンプト:
 IDEを日本語化できますか?
応答:
 Kiroの日本語化についてですが、現在のところKiro IDE自体の言語設定を変更する機能は提供されていません。Kiroは英語ベースのインターフェースとなっています。
 ただし、以下の点については日本語で対応可能です:
 チャットでの会話: 私とのやり取りは日本語で行えます
 コードコメント: 日本語でコメントを書くことができます
 ファイル名: 日本語のファイル名も使用可能です
 文字列リテラル: コード内の日本語文字列も問題ありません
 もしVS Codeの拡張機能として使用している場合は、VS Code自体を日本語化することで、一部のUI要素が日本語表示される可能性があります。
 何か特定の作業で日本語サポートが必要でしたら、お手伝いできることがあるかもしれません。どのような作業をされる予定でしょうか?

プロンプト:
 システム要件をお伝えする形で作成してもらえますか?
応答:
 はい、システム要件をお聞かせください。お伝えいただいた内容をもとに、仕様書(spec)を作成いたします。
 どのような機能やシステムを作成したいか、以下のような情報を教えてください:
 何を作りたいか:アプリケーションの種類や主な目的
 誰が使うか:対象ユーザ
 どんな機能が必要か:主要な機能や操作
 技術的な制約:使用したい言語、フレームワーク、プラットフォームなど
 例えば:
 「タスク管理アプリを作りたい」
 「ウェブサイトの在庫管理システム」
 「チャットボット」
 「データ分析ツール」
 など、どのようなものでも構いません。詳細をお聞かせください。

4. Kiroに作ってもらう

さっそく要件を伝えてKiroに作ってもらいましょう。
※File>Open Folder… で適当な作業場所を開いてください。

 

プロンプト:
 ファイルアップロードのJavaWebアプリケーションを作成してください。
 アップロードしたファイルはS3に保管してください
 ユーザは、ALBとCognitoで認証されたユーザのみがJavaWebアプリケーションにアクセスします。
 ユーザの所属部署ごとに、S3のファイル保管フォルダパスをわけてください。
 ユーザの所属部署は、RDSのUser_Infoテーブルに定義されています。
 ユーザの所属部署は、Cognitoで認証されたJWTデータのメールアドレスをもとにRDSのUser_Infoテーブルの所属部署を引き当ててください。
 利用言語はJava
 利用フレームワークはSpringBootを基本とし、相性の良いその他フレームワークを選んでください。
応答:
 承知いたしました。ファイルアップロード機能を持つJava Webアプリケーションの仕様書を作成いたします。
 まず、この機能の名前を「file-upload-system」として、要件定義書を作成します。
 要件定義書を作成いたしました。この文書では、以下の主要な機能を定義しています:
 認証機能: ALBとCognitoによるセキュアな認証
 部署別ファイル分離: JWTトークンのメールアドレスからRDSで部署を特定し、S3の保管場所を分離
 ファイルアップロード: 直感的なファイルアップロード機能
 ファイル一覧表示: 部署別のファイル一覧表示
 エラーハンドリング: RDSとS3接続の安定性確保
 メタデータ管理: ファイル情報の適切な永続化
 各要件はEARS(Easy Approach to Requirements Syntax)パターンに従って記述し、INCOSE品質ルールに準拠しています。
 要件定義書の内容はいかがでしょうか?このまま設計フェーズに進んでもよろしいですか?


ここで要件を入力し忘れていることに気づきました。


プロンプト:
 S3に保管されるファイルは一定のファイル名ルールがあります
 S3に保管されるファイルはCSVまたはTSVで、ファイル名ルールごとに対象テーブルに追加、主キーが一致する場合は更新します。
応答:
 CSV/TSVファイルの自動処理機能に関する要件を追加いたしました。追加した内容は以下の通りです:
 要件 7: CSV/TSVファイルの自動処理機能
 ファイル形式の検証
 ファイル名ルールに基づく対象テーブルの特定
 データの解析と構造化
 主キーに基づく追加/更新処理
 要件 8: 処理結果の記録と通知機能
 処理状況の追跡
 処理結果の詳細記録
 エラーハンドリングとレポート生成
 また、用語集にも以下の項目を追加しました:
 File_Name_Rule: ファイル名から対象テーブルを特定するためのルール
 Target_Table: 処理対象のデータベーステーブル
 Primary_Key: データベーステーブルの主キー
 更新された要件定義書の内容はいかがでしょうか?CSV/TSVファイルの自動処理機能が追加されました。このまま設計フェーズに進んでもよろしいですか?

出来上がった要件定義書(requirements.md)

この後はKiroに促されるまま。。。
「このまま設計フェーズに進んでもよろしいですか?」➡YES

出来上がった設計書(design.md)

「設計文書の内容はいかがでしょうか?このまま実装計画フェーズに進んでもよろしいですか?」➡YES

出来上がった実装計画(task.md)

実装計画が出来上がったら、tasks.mdの”Start task”をクリックして進めていきます。
また、Kiroがコマンドを実行する際にチャット欄に[Run]ボタンが出るので押してあげます。

Kiroにされるがままに出来上がった画面です。

5.さいごに

今回はKiroに思うがまま作成してもらいました。
所要時間は約4時間でした。
設計書(spec)と言ってもいわゆる設計書というよりは、AIに読ませるためのプロンプトという印象ですが、コレはコレで読みやすくて個人的には好きです。
もっと深い使い方を覚えてKiroを使いこなしたら、また投稿します。
 

※参考文献:特になし