【Vibe Coding】Amazon Q CLI でゲームを作ってみた【すべてお任せ!】


みなさんこんにちは! 開発統括部のAKIHISAです!
AWS 公式から、Amazon Q Developer CLI を利用してゲームを作成すると、T シャツをもらえるキャンペーンが 2025/6/20 まで開催されています!
https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt
僕も波に乗って、このキャンペーンに参加してみることにしました。
【ライターの紹介】
AKIHISA
■保有資格・応用情報技術者試験
・AWS Certified Cloud Practitioner
・AWS Certified Solutions Architect - Associate
・AWS Certified Developer - Associate
・AWS Certified SysOps Administrator - Associate
・AWS Certified Data Engineer - Associate
・AWS Certified Solutions Architect - Professional
・AWS Certified DevOps Engineer - Professional
・AWS Certified Advanced Networking - Specialty
・AWS Certified Security - Specialty
・AWS Certified Machine Learning - Specialty
・AWS Certified Database - Specialty
・AWS Certified Data Analytics - Specialty
・AWS Certified: SAP on AWS - Specialty
・Pythonエンジニア認定基礎試験
・Pythonエンジニア認定データ分析試験
・Pythonエンジニア認定実践試験
・Oracle Certified Java Programmer, Silver SE 11
・G検定製造業からIT業界未経験でALHへ入社
AWSでの開発環境整備に力を入れており、IaC(Infrastructure as Code)やCI/CDを得意としている。
好きなAWSサービスはAWS CDKとAmazon Bedrock。
Amazon Q Developer CLI とは?
Amazon Q Developer CLI は、AWS が提供するチャットベースの AI エージェントです。
コマンドラインツールから簡単に呼び出すことができ、コードの生成や AWS リソースの管理、デバッグ支援などを行ってくれます。
似たようなサービスのCursorやClineと比較すると、AWS のベストプラクティスをコンテキストとして持っているので開発をサポートしやすいです。また、AWS の CLI コマンドを実行してくれるツール「use_aws」がネイティブに実装されている点が大きな利点です。
この use_aws ツールを利用して AWS リソースの情報をリアルタイムでチェックしながら問題解決している様は、見ていて圧巻です!
今回は AWS リソースに対して利用するわけではありませんが、トライ&エラーしている様子をお届けできればと思います。
できたもの
リンク先の動画を見ていただけるとわかりやすいかと思いますが、2 桁同士の加算・減算・乗算問題を解くスピードを競う計算ゲームです!
車のナンバープレートをイメージした暇つぶしゲームになってます。
このゲームは、Amazon Q CLI を使って合計 5 時間程度で完成させることができました。 僕が一から作るのであれば、1 週間以上はかかったと思います。。。
また、ロゴや車の画像は ChatGPT の o3 モデルに作ってもらいました。 Amazon Q CLI は最近画像も読み込めるようになったので、テーマに合わせた画像を活用するのもお手のものです!
参考記事: https://cantabile.alhinc.jp/technology/10832
作成したゲームは GitHub にソースコードをあげています。
リポジトリ:https://github.com/aki-kii/number-drive
要件定義
ゲームの要件は、Amazon Q CLI と対話しながら決めていきました。コンセプトから細かい仕様まで、対話を通じてどんどん明確にしていきました。 対話形式で要件を固めていくことで、仕様が決まってないところを聞いてくれたり困った時に相談したりします。
できた要件定義はこちらです!
https://github.com/aki-kii/number-drive/blob/main/prompts/requirements.md
Vibe Coding!
Vibe Coding とは?
Vibe Codingは、「人間が AI に対してテキストや音声を用いて指示をだし、AI が主体的にコードを書く」手法です。 今回はコードの詳細を全く確認せず挑戦することにしました!
それでは Amazon Q CLI にコーディングしてもらいましょう。
ゲームの作成
要件定義書をベースにして Amazon Q CLI へ次のような指示をだしました。
> 要件定義書(prompts/requirements.md)に基づいてNumberDrive!というゲームを作成してください
Amazon Q CLI は要件を理解し、たくさんのコードを一気に生成してくれました! しかし、実行してみると失敗してしまいます...
> uv run number_drive/main.py Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "***/number-drive/main.py", line 21, in main() ~~~~^^ File "***/number-drive/main.py", line 17, in main game.run() ~~~~~~~~^^ File "***/number-drive/number_drive/game.py", line 63, in run self.handle_events() ~~~~~~~~~~~~~~~~~~^^ File "***/number-drive/number_drive/game.py", line 79, in handle_events self.title_screen.handle_event(event) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "***/number-drive/number_drive/screens/title_screen.py", line 65, in handle_event self.game.set_game_mode(list(self.game.GameMode)[i]) ^^^^^^^^^^^^^^^^^^ AttributeError: 'Game' object has no attribute 'GameMode'. Did you mean: 'game_mode'?
トライ&エラー
ゲームの実行は失敗してしまいましたが、エラーの解決も Amazon Q CLI にお任せすることにしました。
先ほどは Amazon Q CLI ではなく、通常の Shell 上でゲームを実行していました。 実行を Amazon Q CLI にお願いすると、トライ&エラーまでやってくれます!
> `uv run number-drive/main.py`を実行してエラーを解決してください 了解!コマンドを実行して、number-driveディレクトリに移動してからmain.pyを実行するね。 🛠️ Using tool: execute_bash ⋮ ● I will run the following shell command: cd ***/number-drive && uv run main.py ⋮ ↳ Purpose: number-driveディレクトリに移動してmain.pyを実行 Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: ... ~エラーメッセージなので中略~ ... ● Completed in 4.647s おっと、実行してみたけどエラーが出たね!エラーの内容を見てみると: AttributeError: 'Game' object has no attribute 'GameMode'. Did you mean: 'game_mode'? これはGameクラスにGameModeという属性がないというエラーだね。おそらくGameModeは列挙型 (Enum)として定義されるべきものだけど、まだ実装されていないか、別の名前(game_mode )で実装されているみたい。 コードを修正する必要がありそうだね。title_screen.pyの65行目でself.game.GameModeを参 照しているけど、正しくはself.game.game_modeかもしれない。 コードを確認して修正する?
Amazon Q CLI は問題を特定し、修正を提案してくれました。 このようなトライ&エラーを繰り返し、半自動で動くゲームが出来上がりました!
UI の調整
できあがったものの、UI がとても見づらいです...

UI の修正もそのまま Amazon Q CLI にお願いしましたが、ここで大きく沼ってしまいました。 その過程を見ていきましょう。
まず、次のような修正依頼をしました。
オブジェクト同士が被らないようにしてください。 モードの説明を簡潔にしてください。 全体的に余白を持たせてください。
修正後の画面はこうなりました。

ほとんど変わっていません。。。さらに修正依頼をかけます。
理想の画面(review/startmenu-model.png)にUIを似せてください。 文字やオブジェクトが被らないようにしてください。
理想の画面

※ 理想の画面は ChatGPTの o3 モデルにて HTML で作ってもらいました。
修正後の画面はこうなりました。

理想の画面にはまだ遠い状態です。
修正がうまくいかなかった理由は、Amazon Q CLI が画面配置の構造を理解できていなかったからです。
Amazon Q CLI に聞いてみると、最初のコードではオブジェクトの位置関係を絶対位置で設定していたとのことでした。
絶対位置だと「画面を見る → 修正」の繰り返しで改善はできるのですが、Amazon Q CLI では自動でゲーム画面を見ることはできません。
スクリーンショットを撮って確認してもらわないといけないので、オーバーヘッドが大きすぎます。
相対位置で指定してもらうように依頼すると、いい感じの画面になってきました。

※ 気づくまで何回か修正依頼をだしているので、この画面では変わった部分も多いです。
修正に行き詰まった時は、Amazon Q CLI と対話してどのような内部構造になっているか教えてもらうと良いかもしれません。
最終的には理想に近い画面が完成しました。

追加機能の実装
一通り画面を作り終えたら、追加で作成したい機能を盛り込んでもらいました。
例えば、問題を解いている途中に中断する機能(ESC キーでポーズ)を追加しました。

追加機能は別途要件をチャットで指定し、Amazon Q CLI にてコーディングしてもらいました。
Git 管理していたので、修正内容が気に入ればコミット、気に入らなければ破棄できたので体験が良かったです。
具体的には、Amazon Q CLI に修正依頼をした時に壊れてアプリが動かなくなってしまうケースがありました。 そんな時は変更を破棄すれば動く状態に簡単に戻せます!
また、試しに修正してもらった結果が気に入らなかった時も、「元に戻して」とお願いするよりも変更を破棄する方が時間をかけずに確実に元の状態に戻せます。 人間にはお願いできない所業ですね。。。
感想 & まとめ
Amazon Q CLI を使って Vibe Coding でゲームを作ってみましたが、かなり楽しい体験でした!
反省としては、最初に要件を提示して一気に書き上げるよりも、要件を示した上で段階的に作り上げていく方が効率的だったかもしれません。
また、生成してもらう時は Amazon Q CLI にどんな変更をするのかプランを立ててもらって、それを確認してから実装してもらうといいと思いました。 変な方向へ進む前に修正できるので、無駄な時間を使わずに済みます。
皆さんもぜひ Amazon Q CLI を使ってゲーム開発に挑戦してみてください!
T-シャツがもらえるキャンペーンは 2025/6/20 までです!