ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

【re:Invent 2025】アヒルを生成する

こんにちは、AWS グループの尾谷です。

re:Invent 2025 に参加しております。

本ブログでは、/dev/quest のコンテンツとして公開されている Quack the Code チャレンジの概要と、その攻略方法をご紹介します。

この記事で分かること

  • /dev/quest と Quack the Code チャレンジの概要
  • Kiro と MCP を使ってアヒル画像ジェネレータを完成させる手順
  • ローカル環境構築でハマったポイント(Python バージョンなど)

EXPO の /dev/quest について

re:Invent 2025 は、Chalk talk(ホワイトボード形式の双方向セッション)や、Code Talk(ライブコーディングを見ながらコーディング技術を学ぶセッション)など、現地で参加しないと視聴できない魅力的なコンテンツがたくさんあります。

そんな、現地体験型コンテンツの一つに EXPO があります。

EXPO は、企業ブースや、AWS ブース、コミュニティブースなど、それぞれに、参加したくなる仕掛けがあり、毎年ブラッシュアップされていっています。

今年は、/dev/quest というブース・コンテンツがあり、写真のようなイベントに参加・体験すると、その数に応じてスタンプを集めることができました。
更に、集めたスタンプ数に応じて、限定ノベルティがもらえました。

スタンプをレベル 4 まで全て集めると、なんと、Kindle Scribe & ケースや、Rayban Meta グラスがもらえるなど、なかなか見逃せないコンテンツでした。

/dev/quest の詳細は公式の紹介ページ(英語)にまとまっています。

builder.aws.com

/dev/quest のクエスト一覧

ベネチアンコンテンツ

  • AWS Skill Builder
    • 場所:AWS Skill Builder キオスク
  • Arcade Game
    • アーケードゲームコーナーでゲームを 1 プレイする
  • Quack the Code
    • コードチャレンジに参加する
  • OS Learning Corner
    • Deep-dive セッションのデモに参加する
  • Serverlesspresso Order coffee and backend
    • Serverlesspresso ブースでコーヒーを注文する
  • Content Creator Hub
    • Dev photo ブースで写真撮影する
  • Content Creator Hub
    • @awsdevelopers の x アカウントをフォローする
  • Gaming Arena
    • ゲームアリーナに参加する
  • Developer Community Feedback
    • フィードバック・サーベイを行う
  • AWS Communities
    • AWS User Group か Cloud Club に参加する

EXPO AWS Village コーナー

  • Kiro Kiosk
    • Kiro challenge を完走する

マンダレイコンテンツ

  • AWS Builder Loft
    • AWS Builder Loft に入場する
  • Tech Challenge
    • Tech challenge に参加する

Jams ルーム

  • Jam
    • Jam に参加する

トレーニングルーム

  • Escape Room
    • 脱出ゲームに参加する

キャンパスロケーション

  • セルフペーストレーニング

    • コンテンツに参加する
  • Skill Builder トリビア

    • 参加する

Caesars Forum

Participate

  • Builder's エリア
    • スポーツテックチャレンジを完走する

上記のコンテンツを体験するとスタンプをゲットでき、レベルが上がっていきます。
レベルごとにもらえるノベルティが上がっていきます。

/dev/quest でもらえたノベルティ

レベル 1 / レベル 2

レベル 3 / レベル 4

僕は、レベル 3 まで進めることができたのですが、Labubu(ラブブ)は売り切れていて、モバイルバッテリーをいただきました。

Quack the Code チャレンジ

本ブログでご紹介するのは、ブースコンテンツの一つであった Quack the Code のアヒル生成です。

このアヒルの画像を生成してブースで見せるとスタンプがもらえました。

github.com

このアヒル生成は、GitHub リポジトリからクローンして、README.md を参照しながら、デプロイします。
このデプロイがなかなかうまくいかず、最終的に Kiro CLI にデプロイ方法を教えてもらいました。

その履歴を確認しながら、改めて、公式の README.md に沿ったデプロイ方法をまとめましたのでアプトプットさせていただきます。

GitHub リポジトリ

基本的には以下のリポジトリに記載されたヒントを元に未完成の Web ページを修正してアヒルを生成します。

https://github.com/aws-banjo/riv25_duck_game

4 つのタスクに沿って、実際にどのような作業を行なったか、ご紹介します。

タスクリスト

README.md から引用して日本語に加工しています。

  • 事前作業: GitHub: リポジトリからソースをクローン
  • タスク 1: バックエンドを起動して MCP をテストする (5 分)
  • タスク 2: コーディング標準の作成 (5 分)
  • タスク 3: アヒルジェネレーターの構築 (10 分)
  • タスク 4: Chrome DevTools でテストする (5 分) 🎉

作業内容

タスク 1: バックエンドの起動と MCP のテスト

まず、本ミッションは、アヒルジェネレーターのバックエンドを起動するところからスタートします。
バックエンドは、Nova Canvas を使用した Strands Agent が既にデプロイされていて、6 つの MCP *1 も Kiro が使える事前構成済みファイルとして、予め設定がされています。

タスク 1: バックエンドを起動して MCP をテストする

メインの README.md には、バックエンドのデプロイ方法が以下とだけ記載されていますが、

cd backend
python duck_agent.py

このターミナルは起動したままにして、新しいターミナルで次のステップを実行してください。

バックエンドの README.md を確認すると、追加の手順が存在することが分かりました。

この手順に沿って、Mac で実行したのが以下のログです。

なお、バックエンドをデプロイするには、Python 3.10 以上が必要でした。
僕が最近新調した MacBook Air には実行環境が整っていなかったため、pyenv をインストールするところから始めました。

% brew update
% brew install pyenv
% (中略)
% pyenv --list | grep 3.10
otanikohei@KO-MacBook-Air backend % pyenv install --list | grep 3.10
  3.10.0
  3.10-dev
  3.10.1
  3.10.2
  3.10.3
  3.10.4
  3.10.5
  3.10.6
  3.10.7
  3.10.8
  3.10.9
  3.10.10
  3.10.11
  3.10.12
  3.10.13
  3.10.14
  3.10.15
  3.10.16
  3.10.17
  3.10.18
  3.10.19
  3.13.10
(中略)
% pyenv install 3.10.19
(中略)
% export PYENV_ROOT="$HOME/.pyenv"
% export PATH="$PYENV_ROOT/bin:$PATH"
% eval "$(pyenv init -)"
% pyenv local 3.10.19
% python3 --version
Python 3.10.19
% 
% cd riv25_duck_game
% cd backend 
% pip install -r requirements.txt
(中略)

バックエンドは、以下のログの通り起動しました。

% python duck_agent.py
(中略)
==================================================
🦆 Duck Generator Agent
==================================================
✅ Starting on port 8081...
✅ Nova Canvas MCP configured
🦆 Fallback ducks available: 23
✅ Ready to generate ducks!

🔗 Health check: http://localhost:8081/health
🔗 Generate endpoint: http://localhost:8081/api/duck/generate

==================================================

 * Debugger is active!
 * Debugger PIN: 129-597-041

バックエンドを起動したターミナルは置いておき、次に、Kiro を使って MCP Server を起動します。
README.md に記載された通り、Kiro に尋ねてみました。

"利用できる MCP サーバーはありますか?"

Kiro より、以下のレスポンスがありました。

はい、以下の6つのMCPサーバーが利用可能です:

利用可能なMCPサーバー
- nova-canvas - AWS Bedrock Nova Canvasを使った画像生成
- frontend-mcp - フロントエンドコンポーネントの分析
- aws-docs - AWSドキュメントの検索と参照
- code-doc-gen - コードの自動ドキュメント生成
- strands-agents - Strandsエージェントツール
- chrome-devtools - Chromeブラウザの自動化とテスト

すべてのサーバーが有効化されており、すぐに使用できます。

次のステップとして、Nova Canvas MCPを使ってテスト用のアヒル画像を生成してみましょうか?

Kiro に MCP サーバーを用いたテスト用のアヒル画像の生成をお願いしました。

はい、お願いします。

すると、画像が生成されました。

Context
Nova Canvas MCPを使ってテスト用のアヒル画像を生成します。

generate_image

Accepted
✅ 成功しました!

Nova Canvas MCPを使ってテスト用のアヒル画像を生成しました!

生成された画像:
/Users/.../riv25_duck_game/output/test_duck.png

ビーチでサングラスをかけた可愛いアヒルの画像が生成されました。🦆🕶️🏖️

これで <b>タスク 1</b> が完了です:

✅ バックエンドが起動している

✅ MCPサーバーが動作している

✅ アヒル画像が生成された

次は <b>タスク 2</b> : コーディング規約の作成に進みましょうか?

タスク 2: コーディング標準の作成

次は、Kiro のステアリングドキュメントを使って Kiro にコードの書き方を指示します。
Kiro アイコンをクリックして、AGENT STEERING にある [+] ボタンをクリックし、

.kiro/steering/duck-standards.md を作成しました。

.kiro/steering/duck-standards.md には以下を追記しました。

- ユーザーとのやりとりは全て日本語で行う
- すべてのAPI関数はアヒルテーマの名前を使用 (quackFetch, waddle など)
- プロンプトには必ず 'duck' を含める
- エラーメッセージは励ましの言葉でアヒルテーマにする
- API呼び出しにはasync/awaitを使用

タスク 3: アヒルジェネレーターの構築

フロントエンドが壊れているため、Kiro に修正してもらいます。

先ほど同様、Kiro のアイコンから、SPECS の右側にある [+] アイコンをクリックし、

以下をコピペし、[Return] キーを押しました。

私の以下の Spec から、アヒルジェネレータを実装してください。
Spec ファイルの名前は、`duck-generator-feature.md` でお願いします。
- 基本的には、既に作成されているコードを修正する形で実装する
- なければ、追加実装したいもの
-- アヒルの説明を入力するフィールド
-- "アヒルを生成" ボタン
-- ローディング状態 ("あなたのアヒルを孵化中...")
-- 生成されたアヒル画像の表示
-- "もう一度生成" ボタン
-- アヒルのダジャレでエラーハンドリング

すると、画面右側に New Session タブが開き、要件定義が作成されました。

続いて、[Move to design phase] ボタンをクリックし、デザインフェーズを進めました。

最後に、[Move to implementation plan] ボタンをクリックしてタスクリストを作成すると、

以下のオプションが表示されたので、Keep optional tasks (faster MVP) をクリックしました。

その後、タスクは「Make task required」と記載されたものを飛ばして実行しました。

タスク 4: Chrome DevTools でテストする

Kiro がフロントエンドを改修してくれたので、アプリを起動します。

cd frontend
npm run dev

アヒルが生成できるようになりました。

まとめ

いかがでしたでしょうか。
/dev/quest は体験できるコンテンツの数が多く、セッションの合間に消化するのが難しいほどのボリュームがあったと感じます。

その多くが、手を動かして学ぶコンテンツばかりで、ただ単に、スタンプを集めるだけではなくて、楽しく学ぶ機会を得ることができました。

特に、Quack the Code は、Python のバージョン差異や、バックエンド README の場所などハマりポイントが多く、チャレンジを諦めた人も多かったのではないしょうか。

re:Invent 2025 の EXPO や /dev/quest は終了してしまいましたが、Quack the Code は、リポジトリからまだ挑戦できますので、この機会に Kiro を使う上での学び(steering doc / spec の使い分け など)をご経験されては如何でしょうか。

*1:MCP(Model Context Protocol)は、AI エージェントが外部ツールやサービスに接続するためのオープン標準です