Amazon Q Developer CLI で2Dゲーム「Element Catcher」を開発してみた

## はじめに
AWS が開催している「Amazon Q Developer CLI を使ってゲームを作ろう！」というキャンペーンに参加するため、簡単な2D教育ゲームを開発してみました。今回は、Python と Pygame、そして Amazon Q Developer CLI を活用して、「**Element Catcher**」という学習ゲームを制作しました。
この記事では、実際にゲームを開発するまでの手順、CLI の使い方、遭遇した課題やその解決法などを、紹介します。これから参加しようと思っている方や、Amazon Q CLI に興味のある方の参考になれば幸いです。

## キャンペーンの概要
AWS 公式ブログでも紹介されている以下のキャンペーンに基づいています。

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

キャンペーン参加の流れは以下の通りです：
1. AWS Builder IDに登録する
2. Amazon Q CLI をインストールする
3. ゲームを開発する
4. ブログやSNSで公開
5. 「**#AmazonQCLI**」 を付けて SNS で公開投稿する
6. GitHub にソースコードを公開する
7. 応募フォームに提出する

**キャンペーン期間：2025/05/20～2025/06/20**

### 事前準備
#### 1. AWS Builder IDに登録する

Amazon Q CLI の利用には AWS Builder ID が必要です。無料で登録できます。

https://profile.aws.amazon.com/?workflowID=bf5eb6d6-e44e-46d7-b249-c63081f0edd7#/signup/enter-email

Q CLI の認証で操作が必要なため登録完了後、ログインをしてください。

#### 2\. Python の仮想環境を構築する
他プロジェクトとライブラリの競合を防ぐために、仮想環境で開発をしました。

```bash
# Python仮想環境の作成
python3 -m venv ~/myenv

# 仮想環境の有効化
source ~/myenv/bin/activate
```

#### 3\. Pygame のインストールと動作確認
```bash
python3 -m pip install -U pygame --user
```

インストール後、Pygame が正しく動作するか確認します：
```bash
python3 -m pygame.examples.aliens
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958955/f6d48199-67df-4a55-9283-fb96ff2f42f5.png)

ゲームウィンドウが表示されれば成功です。

ログイン時には AWS Builder ID を使用します。

#### 4\. Amazon Q CLI をインストールする

以下のコマンドで Q CLI をインストールします：

**Linux(Ubuntu)の場合**

Amazon Q Developer CLI の Linux（Debian/Ubuntu系）向けインストーラパッケージである `.deb`ファイルをダウンロードします：

```bash
wget https://desktop-release.q.us-east-1.amazonaws.com/latest/amazon-q.deb
```

依存パッケージとQ CLI をインストールします：
```bash
sudo apt-get install -f
sudo dpkg -i amazon-q.deb
```
**Macの場合**
```bash
brew install amazon-q
```   
#### 5\. Q CLI のログイン
```bash
q login
```

ブラウザで認証コードを確認・承認するだけでログインが完了します。

## Amazon Q Developer CLIとは？
Amazon Q Developer CLIは、AWS が提供する開発支援ツールで、自然言語でのやり取りを通じてアプリ・ゲームの雛形コードを生成することができます。

## アプリ概要

### 「Element Catcher」
このアプリは、ペンギン博士（Dr. Penguin）🐧 と一緒に、落ちてくるさまざまな元素の中から「正しい元素記号」をキャッチしていく、楽しく学べる化学ゲームです。ゲームを通じて、元素記号とその特徴を自然に覚えられる設計となっています。

**ターゲットユーザ**
- 化学に興味を持ち始めた小学生
- 元素記号を復習したい中高生

**ゲームの特徴**
- シンプルな操作性
    - ペンギン博士を左右キーで操作して、指定された元素記号をキャッチするだけ
- キャッチ成功で元素の解説を表示
    - 正解の元素をキャッチすると、実生活と結びついた解説が表示され、知識として定着します
- 自然に化学を学べる設計：繰り返しプレイで、自然に元素記号と名前、役割が身につく
    - ゲームの繰り返しによって、元素の記号・読み方・特徴が少しずつ頭に入り、気づけば理科の基礎力がついている設計です


## Q CLI を使ってゲームを開発する
実際の開発の流れについて

このコマンドを実行すると、自然言語による対話形式の開発が始まります：

```q
q chat
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958955/afd3148c-adf7-4699-9472-aa22d901f103.png)

起動すると、ペアプロをしているような感覚で「どんなアプリを作りたいか？」を Q に伝えます。

```bash
PythonとPygameで、元素をキャッチする2D教育ゲームを作りたいです。
```

と入力すると、Q がゲーム構成や雛形コードを提案してくれます。そこから要望に応じてコードを追加・修正してもらい、リアルタイムで形にしていくことができます。

これ以降も、
- 「スコア機能を追加したい」
- 「キャラの当たり判定を調整して」
- 「ゲームオーバーの条件を変更したい」

などの要望を伝えることで、AI がリアルタイムでコードを提案・反映してくれます。

## GitHub リポジトリ

今回開発した「Element Catcher」のソースコードは、以下の GitHub リポジトリで公開しています：

https://github.com/ARISA1115/Element-Catcher

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3958955/52d4c0b6-e5fe-47bd-9a50-577613d58260.png)

ゲーム画面では、上から元素記号がランダムに落下し、プレイヤーはペンギン博士を操作して指示された元素をキャッチします。

## 開発中に得られた学び

### 良かった点
- 雛形コード作成が速い
    - 「PythonとPygameで、元素をキャッチする2D教育ゲームを作りたい」、「キャラを左右に動かす処理を追加して」といった自然言語での指示だけで、基本構造が即座に生成され、手書きでやっていたら数十分かかる工程が、数十秒で完了します
- プロンプト設計次第で開発がスムーズになる
    - 漠然とした指示よりも、具体的な要件を伝えると、より実用的なコードが出力されるため、プロンプトの質が成果の質に直結します

### 注意点
- コードの正当性やパフォーマンスは要確認
    - 出力されたコードは基本的に動きますが、構造が冗長だったり、設計原則を満たしていないことがあるため、最終的には人間のリファクタリングが必要です
- 状態管理や当たり判定など、複雑なゲームロジックは人間の理解が不可欠
    - ゲームの核心部分となるロジック設計やバグ調査は自力でやる場面が多い
- UI の演出やデザイン面の調整には、依然として人による微調整が必要
    - Q CLI はロジック中心の実装支援に強みがありますが、UI レイアウトやアニメーションなど、見た目の微調整は一発で意図通りにいかないことが多く、手作業によるチューニングが不可欠です

## まとめ
開発スピードと柔軟性を両立したい開発者にとって、Amazon Q CLI は極めて有力な選択肢です。CLIはあくまでアシスタントであり、設計力やアイディアの質が成果を左右します。そのため、Q CLI を最大限に活かすためには、開発者側の主体性と構造理解が不可欠です。学習系ゲームは、ロジックや内容が複雑になりがちですが、Q CLI によって開発のハードルが大きく下がることを実感できました。これから試してみたい方は、まずは簡単なアプリから始めて、AI との開発体験を楽しんでみてください。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html

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

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

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