さぁ始めよう！Amazon Q CLIで楽しいゲーム制作体験🎵

# はじめに
　先週から、とても興味を惹かれるキャンペーンが開催されています。（タイムゾーン不明ですが、2025年6月20日まで）
AWSJのSAさんが翻訳してBlogにしていただいています。

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

元記事は以下になります。

https://community.aws/content/2xIoduO0xhkhUApQpVUIqBFGmAc/build-games-with-amazon-q-cli-and-score-a-t-shirt

　Amazon Q CLIは個人のAWS環境で構築のサポートをしてもらったり、AWS Documentation MCP Serverでドキュメントの調べ物サポートをしてもらったりと、今では欠かせない相棒です。ただ、コーディングしてもらうということはあまりありませんでした。（※私はコーディングがちゃんとできません）せっかくの機会ですので、今回のキャンペーンを機に、Amazon Q CLIにコーディングをしてもらうことにチャレンジしました。
　結論から言うと、とても楽しかったです。まだ経験していない方、ぜひやってください。私はコーディングエージェントのいい面、悪い面、両方経験でき、大きな学びを得ました。

# 始め方
　AWS Builder IDだけ作れば、AWSアカウント不要でゲームが作れます。つまり、無料で実施できます。
 上記の記事にも進め方が記載されているので、1つずつ進めていけます。

# Amazon Q CLIへの指示の仕方
　普段、Amazon Q CLIを使っていて、曖昧な指示、大量の指示をすると期待する回答がもらえないことを経験していました。そのため、少量の指示に分けて繰り返し実施することにしました。

　最初の指示は以下の文だけです。
```
pygameを利用してゲームを作成します。
amazonq_gameフォルダ配下で作業を行なってください。
神経衰弱ゲームを作りたいです。
2人対戦で、多くカードを獲得した方が勝ちです。
プレイヤー１は左側、プレイヤー２は右側に自陣を持ちます。
真ん中のエリアがプレイエリアになります。
```
出来上がったものはこちら。

![pygame1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/c65428bd-d2d5-455f-a11c-167937e9ffa1.png)

おぉ、あんな曖昧な指示なのに物ができた！とテンションが上がって嬉しくなりました。
文字コードの問題で文字が潰れていたりしますが、そんなところもご愛嬌です。
さらには同じディレクトリにREADME.mdを作成してくれました。ありがたい。

さて、次の指示です。

```
画面内は全て英語表記にしてください。
```

![pygame8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/ac070a01-8fbe-4418-9e8d-d4ce2463e219.png)


英語になりました！
あれ？指示していないのに、色味も変えてきました。これは...？

気になる部分はありますが、その後、Amazon Q CLIに色々と相談しながら、2時間ほどかけてアップデートしていきました。（なぜこんなに時間がかかったのかは後述します）

以下の改良を加えていきました。
・難易度を選択可能
・難易度に応じてカードの枚数を変更
・Ultra Hardは同じ背景色、カードの向きもバラバラ、カードを選ぶ制限時間も追加
・カードの絵柄としてAWSアイコンを設定
・READMEやLICENSEもアップデート、作成してもらいました。

出来上がったものはこちらです。

https://github.com/sh-fk2/memory-card-game


メイン画面
![pygame7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/cf5b5f45-fb85-48b5-9af3-30d8f6d3fc7b.png)

Easyモード
![pygame6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/c014f21b-0e13-424d-a0a9-490b71fd7650.png)

Normalモード
![pygame5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/294d16f8-31f0-4464-8b29-5b3e7964bedc.png)

Hardモード
![pygame4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/438c5e7b-c140-49dd-8e3a-d2f34c900f0e.png)

Ultra Hardモード
Ultra Hardはかなりツライです。同じ背景色、似た形のアイコンで、向きもバラバラという、Ultra Hard仕様です。

![pygame3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/bc158949-01b9-4efa-a4f1-580184a838d0.png)

カードの裏面はこんな感じです。

![pygame2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/48d2f269-7c5c-47aa-b2f2-0a676dbfbb8c.png)


# 学んだこと
　私が調子に乗って、複数の変更内容を同時に指示してしまったことがありました。結果、戻せないほどの更新をQがやってくれました。ゲームが起動できなくなり、原因を調査して修正するよ！とQは言って笑顔で（？）さらに破壊してくれて・・・ということもありました。そんな時には、新しいファイルで作り直すことまで提案してくれました（涙）。そんな訳で2時間掛かりました。。
 
　一気に進めるのではなく、提案してくれる実施内容を1つずつ確認して、承認していくことが望ましいですね。私は何回かやらかした後に学びました。個人の遊びなので、まだ良いですが、仕事では怖いですね。

　ちなみに変更を行う時は、こんな形で差分表示をしてくれます。ちゃんと読め、自分。

![pygame9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/277f71fd-12a0-4cd9-a268-d297322296b6.png)


# if　もしも･･･　まとめて指示を出したら
　勉強用に今回、投入した指示を全て記録に残しておきました。約2000文字強の指示を新たに立ち上げたAmazon Q CLIに一括で与えてみたらどうなるのだろうかと思い、試してみました。
　その結果は、こちら。

![pygame10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/da4a0ca0-a1f6-4d54-a793-b8291f4427b2.png)

![pygame11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/143b87da-7768-4f9d-9039-19f7b0e30dde.png)

![pygame12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3925746/158cb232-ab48-42a1-b7c0-9ab1788754fb.png)

ボタンがなかったり、画面の表示が崩れていたり、重なっていたりと課題はあるものの、1回である程度形になりました。メインメニューの背景色などは、AWSっぽいな〜と思いましたが、ボタン色が惜しい。


# まとめ
　コーディングエージェントは私の適当で曖昧な指示でもなんとかしようとしてくれました。とはいえ、甘えてはいけません。具体的に、少しずつ指示をして、相談をしながら改善していく必要があります。人と働く時と同じですね。
 
　今回の件を通して、コーディングエージェントで作ることってこんなに楽しいのか、とキャンペーンの策にまんまとハマりました。穴があることを知りながら、敢えて落ちるのも良い経験です。
　ぜひ、みなさんも一緒に作りましょう！！