Amazon Q Developerが自走しないのはどう考えてもお前らの指示が悪い

※この記事の 10% 程度は人間が書いています

## はじめに

AWSの公式ブログで「[Build games with Amazon Q CLI and score a T-shirt!](https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/)」という記事を見つけて「Tシャツほしい」と思い立ち、Amazon Q Developerを使ったゲーム開発に挑戦してみました。

テーマはリズムゲームにしました。私は音ゲーが大好きで、特に任天堂のリズムゲームシリーズには長年親しんでおります。[2026年に新作が出る](https://www.famitsu.com/article/202503/37979)のを楽しみにしていますが「それなら自分でリズムゲームを作ってしまおう！」としました。

今回作ったのは「**Everyday Rhythm**」という、スペースキー1つで楽しめるシンプルなリズムゲームです。「**誰でも楽しめるシンプルさ**」を目指しながら、Amazon Q Developerの力を借りて開発しました。

## 「Everyday Rhythm」- Python/pygame製リズムゲーム

### コンセプト
「リズムは誰の中にもある」をテーマに、日常の何気ない行動をポップで楽しいリズムゲームに変える新感覚ミニゲーム。名作リズムゲームからインスピレーションを得つつ、「誰でも直感的に楽しめるシンプルさ」を独自に追求しました。

### 特徴
- **超シンプル操作**: スペースキー1つだけで遊べる（直感的な操作性を重視）
- **自動ステージ生成**: Amazon Q Developerが音楽と自然言語から自動でステージを作成
- **身近なテーマ**: 日常の行動をゲーム化して親しみやすく
- **高精度判定**: ±25ms以内のPerfect判定で本格的なリズムゲーム体験

### 技術スタック
- **言語**: Python 3.10+
- **ゲームエンジン**: Pygame
- **音声処理**: librosa, pydub
- **AI機能**: Amazon Q Developer API
- **テスト**: pytest（102テスト、カバレッジ78%）

## 【事実】Amazon Q Developerが使えないのは100%お前らの指示が悪い

### 失敗パターン

実は、最初の挑戦は失敗でした。先週、`q chat`コマンドで対話的に開発を始めたのですが、AIをうまくコントロールできず、途中で行き詰まってしまいました。

- 「リズムゲームを作りたい」（ゴールが曖昧）
- 「音が出ない、どうすればいい？」（状況説明不足）
- 「もっと面白くして」（評価基準が不明）
- 「エラーが出た」（エラー内容を共有せず）

AIからの提案がぶれてしまい、方向性が定まらないまま挫折してしまいました。
「**問題はAIの性能ではなく、私の指示の仕方だった**」ということです。

### 成功パターン

AIに「何をしてほしいか」ではなく「どういう状況で、何を目指し、どう判断すべきか」を明確に伝えることにしました：

1. **PRD（Product Requirements Document）の作成**
   - ゲームのビジョンと目標を明文化
   - ターゲットユーザーと価値提案を整理
   - 必須機能と優先度を定義

2. **アーキテクチャ設計の事前検討**
   - システム全体の構成を設計
   - モジュール分割と責任範囲を明確化
   - 技術スタックの選定理由を整理

3. **段階的な開発計画（ロードマップ）の策定**
   - Phase別の具体的なマイルストーン
   - 各段階での成果物と評価基準
   - リスク要因と対策の事前検討


これらは、拙作の [AI エージェント用のテンプレートプロジェクト](https://github.com/daktu32/claude-code-dev-starter-kit
)を利用しました。
別の AI エージェント向けの内容ではあるものの、Amazon Q に読み込ませ、アレンジを指示するだけで応用できました。しごできQ。

**驚きの結果**:
この準備をしてからAmazon Q Developerと開発を再開すると、まるで別のツールのように自走してくれるようになりました。

具体的な変化：
- 私：「Phase1のゲームループを実装して」
- AI：「承知しました。60FPSの安定したループと、イベント処理、描画の分離を実装します。また、後の音声同期のためにタイムスタンプも管理します」
- 結果：期待以上の品質で、次のPhaseまで考慮した実装が完成

特に印象的だったのは、買い物に出かけている間（約1時間）も、設定した方針に沿って：
- エラーハンドリングの追加
- テストケースの自動生成
- パフォーマンス最適化の実装
- ドキュメントの更新

これらを着実に進めてくれていたことです。

Amazon Q Developerは、TDD（テスト駆動開発）のアプローチも強力にサポートしてくれました。

**私**: 「RhythmEngineのテストケースを考えてください」

**Amazon Q**: 「以下のようなテストケースが重要です：
- 正確なタイミングでのPerfect判定
- 境界値でのGood/Miss判定
- コンボシステムの動作
- スコア計算の正確性」

結果として、102個のテストケースで78%のカバレッジを達成し、高品質なコードを維持できました。


## 【開発成果】1日で2,000行・テストカバレッジ78%の高品質コードベース

### 現在の状況：しっかりとした基盤が完成
現時点では、ゲームの「スケルトン」が完成した段階です。しかし、このスケルトンは非常にしっかりとした基盤になっています。

### 数値で見る基盤の品質
- **開発期間**: 1日（集中開発）
- **コード行数**: 約2,000行
- **テストケース**: 102個
- **テストカバレッジ**: 78%
- **パフォーマンス**: 60FPS安定動作、音声レイテンシ15-30ms

### 完成した基盤機能
- ✅ 基本ゲームフレームワーク（安定した60FPSループ）
- ✅ 高精度音声システム（±10ms精度での同期）
- ✅ リズム判定エンジン（Perfect/Good/Miss判定）
- ✅ レスポンシブUI（滑らかなアニメーション）
- ✅ 包括的テストスイート（品質保証）
- 🔄 自動ステージ生成機能（開発中）

### これから肉付けしていく部分
基盤ができたので、これからポップで気軽にできるミニゲーム集に育てていきます：

**予定している機能**:
- 多様なミニゲーム（日常をテーマにした様々なシチュエーション）
- Amazon Q Developerによる自動ステージ生成の完成
- ポップなビジュアルとサウンド
- 段階的な難易度設定
- コミュニティ機能（ステージ共有）

## 【今後の計画】自動ステージ生成機能でミニゲーム集に拡張予定

### 目指すビジョン
現在完成したスケルトンを基に、ポップで気軽にできるミニゲーム集に育てていく予定です。名作リズムゲームからインスピレーションを得つつ、独自の「日常リズム」というコンセプトで差別化を図ります。

### Phase 5以降の開発計画
**短期目標**:
- Amazon Q Developer APIを使った完全自動ステージ生成の完成
- 最初のミニゲーム「通勤ラッシュリズム」の実装
- ポップなビジュアルデザインの導入

**中期目標**:
- 5-10種類のミニゲーム追加
  - 「お料理リズム」（野菜を切るタイミング）
  - 「お掃除リズム」（掃除機のリズム）
  - 「散歩リズム」（歩くペースに合わせて）
- より多様な音楽形式のサポート
- 難易度選択システム

**長期目標**:
- コミュニティ機能（ステージ共有・ランキング）
- モバイル版の検討
- 「みんなで楽しめる」要素の追加

### Amazon Q Developerとの継続的な協働
今後の開発でも、Amazon Q Developerとの協働を続けていきます：
- 新しいミニゲームのアイデア生成
- ゲームバランスの調整提案
- ユーザビリティの改善案
- パフォーマンス最適化

基盤がしっかりしているので、これからの肉付け作業が楽しみです！

## 【まとめ】お前らの指示が悪い問題を解決する3つのポイント

今回の開発体験を通じて、Amazon Q Developerの真の価値と、効果的な活用方法を理解できました。

### 効果的な活用のポイント

#### 1. 前提条件を明確にする
- **PRDを書く**: 「何を作るか」を明文化する
- **アーキテクチャを事前設計**: 「どう作るか」の方針を決める
- **ロードマップを作成**: 「いつまでに何を」の計画を立てる

#### 2. 指示の質を改善する
- ❌ 悪い例：「エラーが出た、どうすればいい？」
- ⭕ 良い例：「Python 3.10でpygameを使用中、`pygame.mixer.music.load()`で'FileNotFoundError'が発生。ファイルパス'assets/music.mp3'は存在確認済み。ワーキングディレクトリの問題か、pygame初期化の問題かを特定して解決策を提案してください」

#### 3. よくある失敗パターンを避ける
- 一度に全てを求める → Phase別に分割する
- 曖昧な指示を出す → 具体的で測定可能な指示にする
- AIの提案を理解せずに使う → 内容を理解してから採用する

---

## 【おまけ】Amazon Q Developerに法務相談したら的確すぎた件

この記事を書く過程でも興味深い体験がありました。

最初の下書きでは、インスピレーション元のゲームについて「○○のような」「○○にオマージュした」といった表現を使っていました。
しかし、Amazon Q Developerに「任天堂の知的財産権に関する法的リスクはどうでしょうか？」と相談したところ、以下のような的確なアドバイスをもらいました：

**Amazon Q Developerからの提案**:
- 商標名の直接的な使用を避ける
- 「オマージュ」ではなく「インスピレーション」という表現を使用
- 独自性と差別化を明確に示す
- 批評・紹介の範囲内での言及に留める

この指摘を受けて、記事全体を見直し、より適切な表現に修正しました。

**修正例**:
- 修正前：「**実在するタイトル**のようなゲーム」
- 修正後：「名作リズムゲームからインスピレーションを得たゲーム」

これも、Amazon Q Developerが技術的な支援だけでなく、法務的な観点からもサポートしてくれる例ですね。個人開発者にとって、こうした多角的な視点でのアドバイスは非常に価値があります。

開発だけでなく、記事執筆においても活用できることが分かりました。

---

**プロジェクト情報**
- GitHub: https://github.com/daktu32/everyday-rhythm
- デモ動画: https://github.com/daktu32/claude-code-dev-starter-kit


**開発環境**
- macOS
- Python 3.10+
- Amazon Q Developer CLI

#AmazonQ #ゲーム開発 #Python #リズムゲーム #AI開発支援