Kiroで仕様書駆動開発!欲しいものを手に入れろ!!StreamlitをFargateでホストする!!!
こんにちは。AWS AmbassadorのTsumitaです。
いきなりですが、皆さんはKiroをお使いですか?
KiroはVS Codeをフォークして作られたAI IDEです。仕様書(Spec)駆動開発やVibe Codingをすることができます。
無料枠もあるため、一度使ってみることをお勧めします。なお、今回は完成までに60クレジット程度消費しました。
この記事を記載した2025/10/10時点ではPreviewですが、2025年中にはGAされると信じています。
いきなりまとめ
- Kiroは万能ではない。要件を言語化して伝えてあげることが大切。言語化して伝える力を身に付けよう。
- 少なくともLinter, Formatter, 静的解析ツールは必ず組み込もう。
- Kiroかわいい。この世に存在しないものはKiroで作ってみよう。
前置き
さて、皆さんはStreamlitを使ったことがあるでしょうか?
公式ページを見てもらえればわかるのですが、爆速でWeb Appを作成することができます。
最近は生成AIと組み合わせたアプリを作るのに使われているのをよく見ます。
私も生成AIを組み込んだStreamlitアプリをAWSににデプロイしようと考えて調べたのですが、HTTPSで通信可能な状態でホストする方法がパッと見つからなかったです。
この世にないものはどうすれば良いのでしょうか?
答えは簡単です。「Kiroで作りましょう」
本題
ようやく本題です。
ここからは実際にKiroを使って欲しいものを作っていきましょう。
前提
- Kiroがインストール済みであること
- Kiroにログイン済みであること
- uvがインストール済みであること
- 適切なIAM 権限を持っていること
1. MCPサーバを設定する
まずはMCPサーバを設定しましょう。今回はAWS公式が提供している3つのMCPサーバを利用します。最新のLLMであっても、知識カットオフ以降の情報は持っていないため、MCPサーバを活用するなどして最新の情報を取得しましょう。
※うまく設定できない場合はuvxコマンドをフルパスで記載したらうまくいくかもしれません。
{
"mcpServers": {
"aws-docs": {
"command": "uvx",
"args": [
"awslabs.aws-documentation-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": [
]
},
"awslabs.terraform-mcp-server": {
"command": "uvx",
"args": [
"awslabs.terraform-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": [
]
},
"awslabs.aws-api-mcp-server": {
"command": "uvx",
"args": [
"awslabs.aws-api-mcp-server@latest"
],
"env": {
"AWS_REGION": "us-east-1"
},
"disabled": false,
"autoApprove": [
]
}
}
}
MCP設定後は以下のような画面になるはずです。User ConfigとWorkspace Configがありますが、今回はWorkspace Configに設定することでKiroで開いているワークスペース(フォルダ)内でのみ有効にしています。他のPJを含めて有効化したい場合はUser Configに設定しましょう。
2. モデルを選択しよう
基本的に最新のモデルを選択すれば良いと思います。今回はClaude Sonnet 4.5を選択します。
Autoだと1x creditですが、古いモデルが利用される可能性が高いため、最新のモデルを利用するのが良いです。
3. Let's 仕様書駆動開発
Kiroの仕様書駆動開発は「要件定義・設計・実装計画/実装」の流れで進んでいきます。
要件定義(Requirements)
Specモードにした上でKiroさんにお任せしていきましょう。今回は以下のようなインプットを行いました。
生成AIを組み込んだアプリをStreamlitにデプロイしようと考えて調べたのですが、HTTPSで通信可能な状態でホストする方法が載っていなかったので、ホストする仕組みを作りたいです。インフラはIaCツールのTerraformで管理したいです。AWSのベストプラクティスに沿った形で作成をして欲しいです。セキュリティももちろん考慮して欲しい。可用性も担保したいのでECS Fargateだと嬉しいな。MCPサーバが設定してあるので、実装する際にはMCPサーバを利用して欲しい。Linter, Formatter, 静的解析ツールも絶対に入れたい。あとはKiroさんにお任せ!
入力するとKiroさんが要件定義(requirements.md)を作成してくれます。
Kiroさんが作ってくれた要件定義は必ず見返しましょう。ここで意図しない要件があると手戻りが大変です(実際のPJと同じですね)
今回は以下の修正・追加をお願いしました。お願いするときはチャットウィンドウに投げ込むだけです。
- ACMは使用しなくてOK。CloudFrontが持っているドメインでHTTPS通信ができればOK
- CI/CDは不要
- NAT GWは1AZ配置でOK。AZは3AZで分散したい
- 利用するリージョンは東京リージョン
- 環境面の考慮は不要
- システムデフォルトタグを設定したい
- 各種パッケージは最新のものか確認した上で利用して欲しい
- システムの構成図を最新のAWSアイコンを使った.drawioで作成して欲しい
前回との差分が見られるので必ず確認しましょう。
確認して問題がなければ、"Move to design phase"ボタンを押下して次に進みます。
設計フェーズ(Design)
設計書を作成する際には以下のようにMCPサーバの利用を確認されます。Trustを押下するとMCPサーバの該当アクションは以後確認されずに実行されるようになります。都度確認したい方はRunを押下しましょう。
5分ほど待つと1,200行弱の設計書を作成してくれました。
設計では以下をお願しました。
- Future Enhancementsは不要
- Budget Alertsは不要
- checkovはCRITICALとHIGHのみ対応、それ以外はレポートのみ
- S3のステートはローカル管理でOK
- CloudWatch Alarmsは不要
- AWS Secrets Manager, SSM Parameter Storeは不要
- ECSのOutboundポート80は不要
- ALBのInboundポート80は不要
5分ほど待つとDesignを修正してくれたので、"Move to implementation plan"を押して実装に進みます。
実装計画(Implementation, Task list)
タスクリストが出来上がったら内容を確認して"Yes"を押すことで実装に進めます。
tasks.mdの各種タスクの"Start task"を押すことでタスクごとに実装されていきます。
各タスクは別のタブで直列で実装されていきます。タスクごとにコンテキストを綺麗にすることで実装精度をあげる工夫がされているのだと思います。
1時間弱くらいで全てのタスクが完了しました。結構時間がかかりましたが、自分で実装するよりは早いと思います。
treeコマンドで確認してみると、いい感じで出来上がっているようです。
デプロイ
それではKiroさんが作ってくれたデプロイスクリプトを実行してみましょう。
**失敗しました。**まあそんなものです。
Kiroさんに修正してもらう前に、以下コマンドを実行してGit管理を行いましょう。Kiroさんが暴走した時の保険です。
git init && git add . && git commit -m "first commit"
右上の”+”ボタンで新しいウィンドウを開き、エラー文をそのまま貼り付けた上でKiroさんに修正してもらいましょう。
修正してもらう際にはVibeモードを利用します。
どうやらdockerの割り当てボリュームが足りていないようです。
dockerの割り当てボリュームを増やして再度Terraform Applyをしたら別のエラーが出てきました。同じようにKiroさんに修正をお願いします。
良い感じで直してくれました。
デプロイが成功したので、アクセスしてみるとエラーが出ています。
またまたKiroさんに修正をお願いしましょう。どうやらコンテナイメージのアーキテクチャ不一致のようです。
※今回はKiroさんがビルドするイメージのアーキテクチャを変更してくれましたが、稼働する側(Fargate)のアーキテクチャ変更でも動作します。
デプロイが完了しました!!
Streamlitの画面にアクセスできました。めでたし、めでたし。
Kiroさんがエラーで止まったポイントと対策
今回は2種類のエラーに遭遇しました。いずれも該当チャットウィンドウを閉じてから再試行することで前に進めました。
An unexpected error
1. design.md作成時の対策:該当チャットウィンドウを閉じてから再試行
時間をおいてリトライしても復旧不可でした。
Session Too Long
2. Vibeコーディング時の対策:該当チャットウィンドウを閉じてから再試行
時間をおいてリトライしても復旧不可でした。
Kiroさんの改善して欲しいポイント
1. コマンドでエラーが出力されているのに強行突破
以下のようにエラーが出ていてもperfect!
のように謎コメントとともに強行突破されました。
2. 実装スピードが遅い
今回の仕様書定義〜実装完了まで2~3時間程度かかりました。他のAI系ツールであれば数十分程度で実装完了するので遅いです。
早さが正義ではないですが正直スピードは遅いです。
3. 課金メソッドの拡充
2025/10/10時点だとクレジットカード決済のみです。Amazon Q Developer Proと同じようにAWSマネコン上から課金できると嬉しいです。
個人利用であればクレジットカード決済で良いのですが、会社で利用する場合はAWSマネコン上から課金できると利用拡大や管理もしやすいので嬉しいです。
Kiroさんの良いポイント
1. アイコンがかわいい
公式ページを見てもらえればわかります。
2. 実装差分がわかりやすく、切り戻しが容易
チャットウィンドウのボタンを押すと差分がわかりやすく、ワンクリックで切り戻し(Undo)ができます。
おまけ
Kiroさんが作ってくれた構成図です。ざっくり構成を理解するには良いですが、CloudFront-->ALBの部分がHTTPSも含まれているなど微妙に間違えている部分がありますね。とはいえ.drawio形式なのでGUIで自由に編集することが可能です。初手でこのレベルの構成図をサクッと作ってくれるのは嬉しいですね。
おわり
冒頭で
この世にないものはどうすれば良いのでしょうか?
答えは簡単です。「Kiroで作りましょう」
と大きく出てみましたが、どうでしたでしょうか?
知識が全くない人が0から作り切るのは難しいですが、一定知識のある人であれば強い相棒となってくれることでしょう。
AIと仲良くして自分の好きなものをどんどんアウトプットしていきましょう。AIが全てを解決してくれるわけでもないため、人間自身も継続的に努力をして技術力や経験を積み重ねていきましょう。
この記事を読んでくれた方が少しでもアクションを起こしてくれたら嬉しいです!
Discussion