【期限延長、申請についての追記あり】Amazon Q CLIでゲームを作ろう Tシャツキャンペーンにトライしてみた

どうもこんにちは！

AWSのキャンペーンでAmazon Q CLIを使ってゲームを作りブログを書いて申請すればTシャツがもらえるというものがあります。せっかくの機会ということでチャレンジしたので、以下にまとめます。

https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/

# そもそもAmazon Q CLIとは？
Amazon Qという生成AIのバリエーションの1つです。この1つにAmazon Q Developerというソフトウェアの構築・運用・変換に活用できる生成AI搭載アシスタントがあり、Amazon Q CLIはこのCLI版です。(そのためか、Amazon Q Developer CLIと書いているAWSブログもありました)
有料版もありますし無料で使うこともできます。

https://aws.amazon.com/jp/q/developer/

# 申請までにやったこと
ゲームを作成して申請するには下記をする必要があります。
1. ゲーム作りの事前準備
    1. Builder IDの作成とcommunity.awsユーザー名の取得
    1. 環境構築
2. Amazon Q CLIを使ってゲームを作る
    1. アイデア出し
    1. Amazon Q CLIを使ってコーディング
    1. テストプレイ
2. ゲームをどのように作ったかブログを書いてSNSに投稿(ここ)
2. [フォーム](https://pulse.aws/survey/ZO9G4AEL?p=0)から申請

## 事前準備
### Builder IDの作成とcommunity.awsユーザー名の取得
Builder IDはAWSの学習や認定試験の受験の際にも使用するものです。AWSが提供する学習プログラムを無料で使えるので独習にもおすすめです。
さらに作成したBuilder IDを使って[AWSコミュニティ](https://community.aws/)のユーザープロフィールを作る必要があります。

### 環境構築
Amazon Q CLIのセッティングに必要なものは下記です。
* Amazon Q CLIをインストールするコンピュータ
* Amazon Q CLI
* ゲームライブラリ(pygameまたはその他)

Amazon Q CLIはLinuxかmacOSに直接インストールできますがWindowにインストールすることもできます。自分は[このサイトを参考に](https://community.aws/content/2v5PptEEYT2y0lRmZbFQtECA66M/the-essential-guide-to-installing-amazon-q-developer-cli-on-windows)WindowsでAmazon Q CLIを使えるようにしました。また、ゲームライブラリはpygameを使用するとし、Windowsにpythonとあわせてインストールしました。
なお、Windows subsystem for Linux(WSL)上でLinux(Ubuntu)をインストールときにエラーが出ました。これは「Windowの機能の有効化または無効化」で、「Hyper-V」と「Linux用Windowsサブシステム」にチェックを入れたらインストールできました。(正解はどちらか1つだけだった可能性はあります)

## ゲーム作り
### アイデア出し
Amazonのサービスを使うということで、表示したフレーズの最初にAmazonが付く・AWSが付く・何もつかないの3択から答えるクイズゲームを作るとしました。 例えばCloud Watchと表示されたらAmazonが付く、CloudTrailと表示されたらAWSが付く、という感じです。~~AWSのサービス名称に混乱するんです~~

### Amazon Q CLIを使ってコーディング
Amazon Q CLIにゲームの仕様を提示して作ってほしいと指示しました。指示とその応答が下図。まさかの英語での応答。いや日本語で指示したから日本語で返ってくるものと思い込んでいただけですが。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/87f278ff-99ac-4def-ac51-5bcfd7bac06f.png)

生成されたソースコードは下図です。待ち時間もほとんどなく生成されました。(Pathのところだけ一部加工しています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/0941fd36-6a62-4a3b-9162-d448d49464ac.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/50159700-2052-4135-aabd-6998204b71d1.png)

生成されたものはどうやらCLIで遊ぶようになっていましたので、GUIで遊べるように調整を指示したのが下図。生成まで少し待ち時間が発生しました。(ソースコードはちょっと長いので最初の少しだけ)
なお、生成コードを見てのとおりフォントがArialに指定されていて日本語が考慮されていませんでした。また、pygameのデフォルトフォントでは日本語を表示できないという投稿も見かけたので、生成にあたってフォントは要チェックでした。
![tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/a2206876-f502-46e5-991b-095282a02f44.png)

### テストプレイ
まずはCLI版のテストプレイが下図。出題→回答→正当判定という挙動自体は問題なさそうですが、6,7問目が不正解になったのはバグです。~~Amazonのサービス名を間違えられるのは想定外~~Amazon Q Developerの調整に貢献できそうです。よくみたら6,7問目の出題には_____が無いので、ないが正解となる場合の出題フォーマットの修正も必要のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/e5dccc2c-96db-48fd-ab8f-75642fee3727.png)

GUI版はこんな画面になるように生成したようです。見た目のメリハリ付けや色味の調整とかはやった方がよいですね。
なお、フォントは別途ダウンロードしたものをつかうようにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/29d539a1-b4a6-4292-8101-5271b1616ea0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/d2ad43b8-356e-4d60-a349-557e9a3ab89f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/baacbc94-ef58-44fd-9131-78b6b352b370.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/1735950e-4641-418c-8637-6ac92ca0d5d4.png)


# おわりに
ここまで無料枠の範囲でできたようです。生成AIを活用した開発に関するエントリを見かけてはいたものの使うのは初めて、使ってみると驚きがありました。生成物のデバッグが大変そうですが、コーディングの大部分を実行してもらえるのは楽そう。(現場はそんな簡単な話でもないんでしょうけど)
なお、このキャンペーンは~~2025/6/20~~2025/6/30までとのこと。残り1週間を切っていますがシャツは申請者全員にプレゼントということなので、興味わいた方はやってみてはいかがでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015053/09f3a0ab-567d-4fae-b736-5b8676ad0279.png)

-- 2025/6/23追記 --
* キャンペーンの期限が2025/6/30までに延長したそうです。あと1週間、土日あればきっと作れますよ！
* 内容が基準を満たしたそうで、Tシャツの送付先などの連絡依頼がきました。登録フォームにIDかパスポート番号の項目がありましたが、ここはN/Aでよいようです。インドとか輸入に身分証明の書類が必要な国でつかうみたいですｎ
* Tシャツサイズはインチ表示なのでよくわかりませんね。。インチ変換とUNIQLOなどのサイズ表を使って選ぶしかないかと。
-- 追記ここまで --


ではでは。