【Amazon Q CLI】AI開発ブームの最後尾でリズムゲームを作って驚いた話

# はじめに
Amazon Q CLIのゲーム開発チャレンジに参加し、Pythonとpygameを使った4キーリズムゲームを作成しました。この記事では、AIエージェント（Amazon Q CLI）と協力しながらゲーム開発を進めた体験談と、そこから得られた知見をお伝えします。

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

:::note
本記事では環境構築やゲーム作成の詳細な手順についての説明は省略します。それらの情報については上記リンクを確認してください。
:::

# 作ったもの
### 4-Key Rhythm Game Collection
サイバーパンク風のビジュアルエフェクトが特徴的な4キーリズムゲーム

### 主な機能
- **4レーン操作**：D, F, J, Kキーによる4キー入力システム
- **判定システム**：Perfect/Good/Missの判定システム（コンボシステムとスコア計算も実装）
- **難易度設定**：複数の難易度レベルに応じてノート（音符）の密度を調整
- **結果画面**：詳細なリザルト画面（S/A/B/C/Dランク）の実装
- **設定機能**：設定システム（ノート速度、音量調整）の実装

リズムゲームに必要であろう最低限の機能は実装したつもりです。

### （おまけ）〇✕ゲーム
リズムゲーム作成前に、pygameの動作確認もかねて、〇✕ゲーム（Tic-Tac-Toe）も実装しました。

# 開発環境

- **言語**：Python 3.11+
- **ライブラリ**：pygame 2.6.1+
- **パッケージ管理**：uv（現代的なPythonパッケージマネージャー）
- **AIエージェント**：Amazon Q CLI
  - 以下のmcpを追加で導入
    - Fetch MCP Server

https://github.com/modelcontextprotocol/servers/tree/main/src/fetch

- **音楽**：魔王魂のフリー楽曲

https://maou.audio/

### プロジェクト構造
```md
ama_q_dev_cli_game/
├── src/rhythm/              # 4キーリズムゲーム
│   ├── game/
│   │   ├── rich_rhythm_game.py    # v3.0 メイン実装
│   │   ├── effects.py             # ビジュアルエフェクト
│   │   ├── song_manager.py        # 楽曲管理
│   │   ├── game_settings.py       # 設定システム
│   │   └── versions/              # 開発履歴
│   │       ├── rhythm_game.py           # v1.0
│   │       ├── advanced_rhythm_game.py  # v2.0
│   │       └── chart_generator.py       # チャート生成
│   ├── music/               # 楽曲ファイル
│   └── run_rhythm_game.sh   # 起動スクリプト
└── src/tictactoe/           # おまけ：〇✕ゲーム
```

### GitHubリポジトリ

https://github.com/ryu-ki-tech/amazon_q_dev_cli_game

# 開発の流れ

### Phase 1：基本実装（v1.0）（開発時間：30分）
「まずは動くものを作ろう」というところからスタートしました。基本的なリズムゲームの構造を相談しながら、シンプルな4鍵リズムゲームを実装しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/3c45a277-58aa-479d-8717-1254074d1c84.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/d07d152d-5a3a-4683-9483-1d647c2f0899.png)

#### 作成時に投げたプロンプト
```md
https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/

このキャンペーンに参加しようと思っている。

そのために、リズムゲームを作ってみたい。

ama_q_dev_cli_game/src/rhythm
配下で作業してゲームを作って。

現状のイメージは以下のとおりである。
- 4鍵
  - キーボード入力（D,F,J,K）
- 音源は以下mp3ファイルを使ってみて
  - ama_q_dev_cli_game/src/rhythm/music/maou_short_05_halzion.mp3
  - 音源は自由に変えやすい実装にしてね
- 全体的に見た目はかっこいい感じで統一して
- メニュー画面を作る際はわかりやすい英語を使って
```

### Phase 2：拡張版（v2.0）（開発時間：30分）
基本版の動作確認後、より本格的な機能を追加しました。チャートシステムやBPM同期など、リズムゲームらしい要素を強化していきました。この時期にはadvanced_rhythm_game.pyとして独立したバージョンを作成し、チャート生成システム（chart_generator.py）も実装しました。

#### 機能改善時のプロンプト例
```md
スタートを押すといきなり始まるのはちょっと不親切だと思うな。
あと、オプション画面に遷移できるけど、実際にオプションを変えることができていないので修正が必要。
オプションは以下の項目が欲しい
- ノーツの速さ
  - 1～10で0.5刻みで設定できるようにしてほしい。現状の速さを6として設定は調整して。
- 音量の大きさ
  - こちらは1～10で1刻みで設定できるようにして。現状を7として調整して。
```

#### v2.0で追加された主な機能
- チャートファイルシステム（.chart形式）
- BPMベースのノート生成
- より詳細な設定システム
- 楽曲選択機能の強化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/7ac14b0d-adbc-42c4-a40a-649c3322029e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/15921055-923c-4d5d-8236-696f10cb16f8.png)

### Phase 3：エフェクト強化版（v3.0）（開発時間：1時間）
「見た目も楽しくしたい！」ということで、ビジュアルエフェクトを大幅に強化しました。この段階でrich_rhythm_game.pyとして完全に統合されたバージョンが完成しました。パーティクルシステムやライトニングエフェクトなど、派手な演出を追加し、effects.pyとして独立したエフェクトシステムを構築しました。（**が、あまりしっくり来ていない部分もあります**）

#### v3.0の主な特徴
- Cyberpunk-inspired UI with glowing animations
- 独立したエフェクトシステム（effects.py）
- 楽曲管理システム（song_manager.py）
- 設定システムの完全統合（game_settings.py）
- versionsディレクトリでの開発履歴保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/dbb16854-f99a-49fb-9c61-805496c3d76d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921802/8842f44d-f295-4854-972a-568b4d4632f7.png)

# Amazon Q CLIと開発をしてみて

### よかった点

#### 1. 迅速なプロトタイピング
「こんな機能が欲しい」と伝えると、すぐに実装可能な形で提案してくれました。特に初期の段階で、ゲームの骨格を素早く作れたのはインパクトがありました。

#### 2. 技術的な敷居が下がった
pygameの描画最適化や、音楽同期の仕組みなど、独学では時間がかかりそうな技術的課題を効率的に解決できました。

#### 3. 設計の相談相手になる
単純なコード生成ツールではなく、「どんな構造が保守しやすいか」といった設計思想レベルでの相談ができたのは特に価値がありました。（私の場合は一通り機能が完成してから保守しやすい構造になっているか確認する作業をしてもらいました）

#### 4. 段階的な改善提案
「いきなり完璧を目指さず、まず動くものを作ってから改善しましょう」という提案を自発的にしてくれ、無理のない開発進行ができました。（適度なタイミングで開発を切り上げキャンペーンに応募しやすかったです）

### 工夫が必要だったと感じる点
よかった一方で、ユーザー側が気を付けてあげないといけない部分などもいくつかありました。

#### 1. 詳細仕様の詰めが課題
前述の通り、大まかな機能は素早く実装してくれますが、細かい調整や微妙なユーザビリティの改善は、具体的な指示が必要でした。正直、もっと良いものにできそうだと今でも感じています。

#### 2. トラブルシューティング時の透明性
エラー解決時に何をしているかの説明が不十分で、ユーザーとしては理解が追いつかないまま「y」を入力する場面が何度かありました。本来はよくない状況だと反省しています。

#### 3. 平気な顔をして、"rm"を実行しようとする
Amazon Q CLIは**改良過程で古いファイルを平気で削除しようとする**ため、私は意図的に開発履歴を保存するディレクトリを作成しました。「前のバージョンはどうだったかな？」というときに（~~もしくはやってる感が出るように？~~）振り返れるようにしました。

# これからAI駆動開発を始める人へのアドバイス

### 1. 具体的に伝える
「ゲームを作りたい」ではなく「4キーのリズムゲームで、こんな機能が欲しい」と具体的に伝えると、より良い提案がもらえます。

### 2. 段階的に進める
完璧を最初から目指すより、まず動作するものを作ってから反復改善する方が成功確率が高いと感じます。（意識しなくても勝手にやってくれる気もしますが）

### 3. 理解して使う
AIが提案したコードをそのまま使うのではなく、なぜそうなっているかを理解して、自分なりに改良することが大切です。（口だけでは何とでも言える話ではあります）

### 4. 開発を楽しむ
技術的挑戦も大切ですが、「作っていて楽しい」「遊んでいて楽しい」という気持ちを大切にすべきだと思います。

# （おまけ）セットアップ方法
今回作成したゲームのリポジトリを公開しています。詳細はREADMEを見ていただければと思いますが、以下の手順で遊ぶことができるようになっています。

```bash
# リポジトリのクローン
git clone https://github.com/ryu-ki-tech/amazon_q_dev_cli_game.git
cd ama_q_dev_cli_game

# 依存関係のインストール（uvを使用）
uv add pygame

# リズムゲームの実行
./src/rhythm/run_rhythm_game.sh

# または直接Pythonで実行
uv run python ./src/rhythm/main.py
```

### ゲームの操作方法

**リズムゲーム**
- **楽曲選択**：UP/DOWNキーで楽曲選択、ENTERで決定
- **ゲームプレイ**：D, F, J, Kキーでノーツを叩く
- **タイミング**：ノーツが判定ラインを通過する時にキーを押す
- **その他**：ESCで前画面に戻る、ENTERで確定・リスタート

:::note warn
**注意**：音量設定の作りこみが若干甘く、**爆音が流れる恐れ**があります
:::

**〇✕ゲーム（おまけ）**
```bash
# コマンドライン版
python src/tictactoe/tictactoe.py

# Pygame版
uv run python ./src/tictactoe/pygame_tictactoe.py
```

**Pygame動作確認**
```bash
python src/pygame_test.py
```
このコマンドで跳ねるボールのアニメーションが表示されれば、Pygameが正常に動作しています。


# まとめ
Amazon Q CLIを使ったゲーム開発は、従来の開発手法とは大きく異なる体験でした。AIエージェントとの協働により、短期間で**4-Key Rhythm Game Collection**という機能豊富なリズムゲームを作成できました。特に、v1.0からv3.0への段階的な発展過程で、basic version → enhanced version → rich visual effectsという自然な進化を体験できたのは印象的でした。

同時にユーザー側の判断力や設計思考の重要性も再認識しました。AI駆動開発は単なる「コード生成ツール」ではなく、「**技術パートナー**」として活用することで、その真価を発揮すると感じています。

**チャレンジの成果**
- 4レーン操作：D, F, J, Kキーによる4キー入力システム
- 判定システム：Perfect/Good/Missの判定システム（コンボシステムとスコア計算も実装）
- 難易度設定：複数の難易度レベルに応じてノート（音符）の密度を調整
- 結果画面：詳細なリザルト画面（S/A/B/C/Dランク）の実装
- 設定機能：設定システム（ノート速度、音量調整）の実装

これからAI駆動開発に挑戦される方の参考になれば幸いです。

# おわりに
今回のチャレンジを通じて、AIエージェントとの協働に驚けて良かったなと思います。ClaudeのProプランでもClaude codeが使えるようになったのでこちらも試してみたいと思います。

皆さんもぜひAmazon Q CLIを使った開発にチャレンジしてみてください。きっと新しい発見や体験があると思います。
ありがとうございました。