Amazon Q Developer CLIを使用してゲームを作成してみた

こんにちは、しろみです！
今回 Amazon Q Developer CLIを使用して2Dゲームを作成した内容を記事にしようと思います。

## 作成したゲームについて
下記の2Dゲームを作成しました。
* 主人公の猫が障害物を避けながら、飼い主の待つ家まで進む
* 飼い主の待つ家に着いたらゴール、障害物に触れてしまうとゲームオーバー

プレイの様子については、X上に動画をアップロードしております

https://x.com/siromiascode08/status/1926974238398849422


ソースコードやゲームの説明書については、下記のリポジトリに保存しております。

https://github.com/siromi08/cat_game

## 作成したキッカケ
AWSから、下記のキャンペーンを実施しているとアナウンスがありました。
内容をみて面白そうだと感じ、申しこむために今回チャレンジしました。

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

※日本語版の記事もあります。

* AWSの日本支社の方が作成したアナウンス記事

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

* クラスメソッドの方のブログ記事

https://dev.classmethod.jp/articles/q-developer-cli-game-cbs/

## 参加するにあたって必要なこと
下記を実施する必要があります。

* **AWS Builer IDの作成**
こちらのキャンペーンに参加する、AWS Q Developer CLIを使用する際にBuilder IDが必要となります。そのため、作成されていない方はこちらのIDの作成が必要となります。

* **Amazon Q Developerのインストール**
こちらのキャンペーンですが、Amazon Q Developer CLIとのチャットのみでゲームを作成する必要があります。そのため、インストールしていない場合はインストールを実施する必要があります。

### Amazon Q Developer CLIのインストール
OSによってインストールする手順が異なるため、自身が使用しているOSに応じて実施する手順を偏光する必要があります。

* **Linux版のインストール手順**

https://community.aws/content/2ulGwNwLFj5grS8hXJBMCN78Qwl/the-essential-guide-to-installing-amazon-q-developer-cli-on-linux

* **Windows版のインストール手順**

https://community.aws/content/2v5PptEEYT2y0lRmZbFQtECA66M/the-essential-guide-to-installing-amazon-q-developer-cli-on-windows

**※WindowsOSの場合、WSLの導入が必要となります。**
WSLの導入手順については、Amazon Q Developer CLI導入手順内に手順のリンクがあります。

### ゲーム作成について
今回はpygameというpythonで動作するゲーム開発用のライブラリを使用し、ゲームを開発しました。

* **pygameについてのwiki**

https://www.pygame.org/wiki/GettingStarted

```Linux:pygame導入のコマンド
python3 -m pip install -U pygame --user
```

導入できているかの確認については、下記のコマンドにて確認が出来ます。

```Linux: pygame導入確認のコマンド
python3 -m pygame.examples.aliens
```

このコマンドを実行すると、下記のシューティングゲームが表示されます。無事にpygameが導入できています。![スクリーンショット 2025-05-23 095159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933264/127498ab-8ec0-481e-b2a3-98b8911a14c4.png)

### ゲーム作成の仕方について
ゲーム作成については、下記のようにAmazon Q Developer CLIとのチャットのみで作成しました。

ゲームを一から作成するときの要件は、文章が長くなるため
下記の流れでAmazon Q Developer CLIにお願いをしました。

* テキストファイル(今回はgame_requirements.txtというファイル名で作成)にゲームの要件等を記載
* fs_readツールでテキストファイルの中身を読み取ってもらう

```
> fs_read path="game_requirements.txt" mode="Line"
I'll help you read the game requirements file. Let me check if that file exists in your current directory.


🛠️  Using tool: fs_read (trusted)
 ⋮ 
 ● Reading file: game_requirements.txt, all lines
 ⋮ 
 ● Completed in 0.0s


要件を確認しました。以下のような横スクロールゲームを作成できます：

1. 主人公：猫
2. 操作方法：
   • 右矢印キー：右に移動
   • 上矢印キー：ジャンプ
3. 背景：住宅地

このゲームを Python の Pygame ライブラリを使って作成することをお勧めします。コードを作成しましょうか？

また、以下の詳細についても確認させてください：
• ゲームオーバーの条件は必要ですか？
• 得点システムは必要ですか？
• 障害物や敵は必要ですか？
• 音効果は必要ですか？

これらの要素を追加することで、よりゲーム性の高いものを作ることができます。

> ありがとうございます。要素の追加は後で指示します
承知しました。では、まずは基本的な機能（猫のキャラクター、右移動、ジャンプ、住宅地の背景）を実装したシンプルな横スクロールゲー
ムを作成しましょう。

Pygameを使用したベースとなるコードを作成します：
```

この時に、Amazon Q Developer CLIに渡したテキストファイルの中身は下記となっております。
```Linux:game_requirements.txt
ゲームの要件
横スクロールのゲームに変更をお願いします
操作方法
右矢印キーを押すと猫が右に進む
上矢印キーを押すとジャンプ

ゲームの背景
猫が進む画面の背景は住宅地でお願いします。
```

ゲームに関しての細かい修正についても、Amazon Q Developer CLIへお願いをしながら修正をしていただきました。

また、GithubへのプッシュもAmazon Q Developer で実施しようと思ったため実施しました。

```Linux: Amazon Q
> この変更をGithubに反映してほしいです
I'll help you reflect these changes to GitHub. Let me commit and push the updated code with the walking can animation 
feature.


🛠️  Using tool: execute_bash
 ⋮ 
 ● I will run the following shell command: git add cat_game.py
 ⋮ 
 ↳ Purpose: Adding the modified file to git staging area


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮ 
 ● Completed in 0.22s



🛠️  Using tool: execute_bash
 ⋮ 
 ● I will run the following shell command: 
git commit -m "突進型の空き缶に2本足を追加し、走るアニメーションを実装"
 ⋮ 
 ↳ Purpose: Committing the changes with a descriptive message


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y
[main 8ccf366] 突進型の空き缶に2本足を追加し、走るアニメーションを実装
 1 file changed, 47 insertions(+)

 ⋮ 
 ● Completed in 0.17s



🛠️  Using tool: execute_bash
 ⋮ 
 ● I will run the following shell command: git push origin main
 ⋮ 
 ↳ Purpose: Pushing the changes to GitHub


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y
To https://github.com/siromi08/cat_game.git
   c02a1ef..8ccf366  main -> main

 ⋮ 
 ● Completed in 1.259s
突進型の空き缶に2本足を追加する変更をGitHubに正常に反映させました！

以下が実行したコマンドとその結果です：

1. git add cat_game.py - 変更したファイルをステージングエリアに追加しました。

2. git commit -m "突進型の空き缶に2本足を追加し、走るアニメーションを実装" - 変更内容を説明するコミットメッセージでコミットを
作成しました。
   • 1ファイルが変更され、47行が追加されました。

3. git push origin main - 変更をGitHubのリモートリポジトリにプッシュしました。
   • 変更が c02a1ef から 8ccf366 に更新されました。

これで、突進型の空き缶に2本足を追加して走るアニメーションを実装した最新のゲームコードがGitHubリポジトリ（https://github.com/
siromi08/cat_game）に反映されました。

主な追加機能：
• 突進モード時に空き缶から2本の茶色い足が生える
• 足が交互に動いて走っているように見えるアニメーション
• 足の先に黒い靴のような形状を追加
• 時間ベースのアニメーションで自然な動きを表現

この変更により、ゲームにユーモアと個性が加わり、視覚的な面白さが向上しました。突進型の空き缶がより生き生きとしたキャラクター
のように見え、プレイヤーに楽しい驚きを提供します。

他に何かお手伝いできることはありますか？
```

コミットメッセージの内容も、変更内容を基にAmazon Q Developerが考えてくれて非常に便利でした！

## 今回のキャンペーンを取り組んでみて感じたこと
取り組んでいく中で下記の事を感じました。

* 開発からデバッグまで何でも実施してくれる
今回のキャンペーンの条件は、ゲームの作成はAmazon Q Developerとのチャットのみで行うことというものでした。
実際にコードを書かず、こういった機能を追加してほしいといったお願いをすることでコードを作成してくれるというのは触っていてとても便利だと感じました。
また、どのようなコンセプトにしたらいいか、この機能を修正したらいいか
判断に迷った際にいくつかの案を提案してくれた場面もあり、そういった提案に対して驚いた場面もありました。

ただ、触っていく中でそのコードの内容が正しいのかといった判断が使用者側にとって必要になってくるとも感じました。

* 指示の内容をどうするかを考える必要がある
Amazon Q Developer以外の生成AI(ChatGPTなど)に対してもいえる話ですが、何か支持を出すときに内容が整理されている、具体的に落とし込めている必要があると考えております。
そのため、生成AI全般を使用する際には支持の内容を細かい粒度で具体的にする必要があると改めて感じました。

## 最後に
今回初めてAmazon Q Developerを使用しましたが、細かいところまで気配りをしてくれて使用していてとても便利だと感じました。
また、ゲーム制作を初めて実施して「上矢印キーを押すとジャンプする」や「障害物を上下に一定間隔で上下に動かす」といった処理をどのようなソースコードで表現できるかといったコードの実装についてのいい勉強になったと感じました！

これからも手を動かしながら、学習することで理解を深めていきたいです！

ここまでご拝読をいただきありがとうございます。