
Amazon Q CLIで鉄鉱石採掘体験ゲームを作ってみた #AmazonQCLI
「Factorioみたいなゲーム、AIで作れたら面白そうじゃね?」
そんな希望を胸に、ハマコーはAmaozn Q CLIを使って、ゲーム開発してみました。結局最初のコンセプトの詰めを適当にしてしまったがため、Factorioとは似ても似つかぬゲームに仕上がってしまいましたが、これはこれで面白かったので、その作成過程も含めてブログにまとめました。
出来上がったものは、こちらからプレイできます。
Amazon Q CLIを使ったゲーム作成や、最初の取っ掛かりが気になる方に参考にしてもらえればと思います。
最初の準備に必要な内容
そもそも、Amazon Q CLIでゲームを作ろうとおもったきっかけは、こちらの記事を見たからです。そう、これがまさしく物欲駆動開発。AWSさん、うまいキャンペーン思いつきますね!
Amazon Q CLI でゲームを作ろう Tシャツキャンペーン (好評につき期間延長!) | Amazon Web Services ブログ
キャンペーンの応募方法や最初のセットアップなど一通りまとまっているので、これを見るとよいかと思います。
Amazon Q CLI起動時の画面。こういうターミナルで起動するロゴ画面に興奮する人、一定数いるんじゃないでしょうか。レトロモダンとでも言いますか、よい味わいですね。
ちなみにモデルは、claude-4-sonnetを利用しています。
> /model
✔ Select a model for this chat session · claude-4-sonnet (active)
Using claude-4-sonnet
開発の記録(プロンプトと共に)
最初にゲーム開発をしたい旨を伝えます。
この手の開発系ですが、いきなりプロトタイプの作成から入ると、ライブラリの選定などが勝手に進んでしまうため、ヒアリングしてもらいながら進めるのが良いですね。
> あなたと一緒にゲームを作りたいです。どのようなライブラリや言語を使うかは、私からヒアリングしつつ進めてください。
ゲーム開発、楽しそうですね!一緒に作っていきましょう。
まず、いくつか質問させてください:
1. どんなジャンルのゲームを作りたいですか?
• アクション、パズル、RPG、シューティング、プラットフォーマーなど
2. ゲーム開発の経験はどの程度ありますか?
• 初心者、少し経験がある、経験豊富
3. プログラミング言語で慣れ親しんでいるものはありますか?
• Python、JavaScript、C#、Java、C++など
4. どこで動かしたいですか?
• ブラウザ、デスクトップ、モバイル
5. 開発期間はどのくらいを想定していますか?
• 数日、数週間、数ヶ月
これらの情報を教えていただければ、最適な言語とライブラリの組み合わせを提案できます。例えば:
• **初心者向け**: Python + Pygame
• **ブラウザゲーム**: JavaScript + HTML5 Canvas
• **本格的な2D/3D**: C# + Unity
• **軽量な2D**: JavaScript + Phaser
どんなゲームを作りたいか、まずは教えてください!
以下、やり取りを続けていきます。
1. どんなジャンルのゲームを作りたいですか?
• Factorioのような工場シミュレーションゲーム。非常に簡易なもので良いです。
2. ゲーム開発の経験はどの程度ありますか?
• 初心者
3. プログラミング言語で慣れ親しんでいるものはありますか?
• JavaScript
4. どこで動かしたいですか?
• ブラウザ
5. 開発期間はどのくらいを想定していますか?
• 1時間程度
素晴らしい選択ですね!1時間でFactorio風の簡易工場シミュレーションを作りましょう。
JavaScriptとHTML5 Canvasを使って、以下の機能を持つミニマルなゲームを作ります:
基本機能
• グリッドベースのマップ
• 資源(鉱石)の配置
• 採掘機の設置
• ベルトコンベアで資源を運搬
• 簡単なアイテム管理
技術構成
• HTML5 Canvas(描画)
• JavaScript(ゲームロジック)
• 外部ライブラリなし(シンプルに)
まず基本的なHTMLファイルを作成しましょう。プロジェクトの構造はこんな感じです:
factory-game/
├── index.html
├── game.js
└── style.css
最初にHTMLファイルを作成しますか?それとも、もう少し詳細な仕様について相談したいですか?
例えば:
• マップサイズ(20x15グリッドくらい?)
• 資源の種類(鉄鉱石のみ?)
• 建物の種類(採掘機、ベルト、チェストのみ?)
どこから始めましょうか?
開発の様子(最初のものが出来上がってから)
一番最初に出来上がったのがこの画面。一見良さそうなのですが、一体何をするゲームなのかよくわかりません。
そのため、以下のやり取りで、ガイドや操作方法を出力してもらいます。
> > 非常に良い出来ですね!まずは、遊び方をもう少し詳しく、画面に表示してください。初めて触ってみる人が、すぐにゲームを遊べるようにしたいです。
(中略)
🎉 大幅改善完了!
## 追加した初心者向け機能
✅ 詳細な遊び方ガイド
• ステップバイステップの説明(1〜4の手順)
• 各建物の役割と設置方法
• 実用的なコツとヒント
✅ 画面上のリアルタイムヒント
• 建物がない時:「鉱石エリアに採掘機を設置しよう」
• 採掘機のみの時:「ベルトで運搬ラインを作ろう」
• ベルトまである時:「チェストでアイテムを回収しよう」
✅ 見やすいUI改善
• カラフルなステップ番号
• 背景色で情報を整理
• 絵文字でわかりやすく
• 生産状況の強調表示
これで初めての人でも:
1. 下の説明を読んで理解
2. 画面上のヒントに従って操作
3. すぐに工場ラインを構築
できるようになりました!実際に遊んでみて、他に改善したい点はありますか?
出来上がった画面がこちら。一通りの内容が出力されています。
試しに動作確認ということで、以下のように採掘機とベルトとチェストを設置してみましたが、うまく動作しません。うまく動作していれば、画面下部にある鉄鉱石が自然にカウントされるはずです。
> 採掘機とベルトとチェストを設置しましたが、鉄鉱石がカウントされません。確認をお願いします。
(中着)
🔧 バグ修正完了!
## 修正した問題
✅ アイテム移動ロジックの改善
• 採掘機で生成されたアイテムが正しく右に移動
• ベルトからベルトへの連続移動が正常に動作
• 建物がない場所のアイテムも移動可能
✅ チェストでの回収処理の改善
• アイテムがチェストに到達した時の回収処理を強化
• 鉄鉱石カウンターが正しく増加
✅ デバッグ情報の追加
• 建物の数とマップ上のアイテム数を表示
• 問題の特定が容易に
## テスト手順
1. 茶色の鉱石エリアに採掘機を設置
2. 採掘機の右側にベルトを一直線に設置
3. ベルトの終点にチェストを設置
4. 1秒後に採掘機がアイテムを生成
5. アイテムがベルトを通ってチェストに到達
6. 鉄鉱石カウンターが増加
バグが見つかったのと同時に、テストを追加しているのが良いですんね。
で、やってみると確かに鉄鉱石は採掘できているんですが、ベルトが無くてもチェストで回収できてしまっています。
以下の修正をお願いします。
> 採掘機から鉄鉱石を採掘しチェストに格納し、鉄鉱石がカウントされることは確認しました。非常に良い出来です。ただ、以下の不具合があります。ベルトが無くてもチェストの設置だけで鉄鉱石がカウントされる。 これをベルトがあるときだけ鉄鉱石が運ばれるように改善してください。
(中略)
🔧 重要なバグ修正完了!
## 修正内容
✅ ベルト必須システムの実装
• 採掘機からアイテムが出るのは、**右隣にベルトがある場合のみ**
• ベルトなしでチェストを隣接させても、アイテムは運ばれない
• より現実的な工場シミュレーションに
✅ ガイドの更新
• ベルトが必須であることを強調
• 重要なポイントを太字で表示
## テスト方法
❌ 動作しないパターン(修正済み)
[採掘機][チェスト] → アイテムが運ばれない
✅ 正しいパターン
[採掘機][ベルト][ベルト][チェスト] → アイテムが運ばれる
これで、プレイヤーは必ずベルトコンベアシステムを構築する必要があり、より戦略的で楽しいゲームプレイになります!
試してみて、採掘機の隣にチェストだけを置いても何も起こらず、ベルトを設置した時だけアイテムが流れることを確認してください。
このあたりの不具合修正は、実際にどのあたりがコードのDiffになっているのかも合わせて表示してくれます。
ここまでで最低限のロジックと動作確認はできました。見た目がすこしさびしいので、いい感じにしてもらいます。
> 動作確認できました。ルールはこれで問題ないです。もう少し見た目をきれいにしたいです。Unicodeの絵文字で該当するもので良いのですが、採掘機、ベルト、チェストをグラフィカルに表現してくれ
ますか?
🎨 グラフィカル改善完了!
## 追加した絵文字表現
✅ 建物の視覚化
• ⛏️ 採掘機: ピッケルで採掘を表現
• ➡️ ベルト: 矢印でアイテムの流れを表現
• 📦 チェスト: 箱でアイテム保管を表現
✅ 地形とアイテム
• 🪨 鉱石エリア: 石の絵文字で鉱脈を表現
• 🔩 鉄鉱石: ボルトで金属アイテムを表現
✅ UI全体の統一
• ツールバーのボタンにも絵文字
• 遊び方ガイドも絵文字で分かりやすく
• 視覚的に一目で何をするゲームか理解できる
## 見た目の改善点
🎯 直感的な理解
• 🪨を見れば「ここに⛏️を置く」と分かる
• ➡️を見れば「アイテムが右に流れる」と分かる
• 🔩が📦に入れば「回収完了」と分かる
これで、言語に関係なく視覚的にゲームの仕組みが理解できるようになりました!絵文字のおかげで、より親しみやすく、分かりやすいゲームになりましたね。
更新された画面。特に指示していないのですが、遊び方ガイドやツールバーの内容なども、アイコンが追加されていて、このあたり融通が効いて非常に好感触。
ベルトの上で動く鉄鉱石もアイコンで表現して、最終的にこんな見た目になりました。
修正したい箇所があったので、追加で動作ルールを変更します。
> 動作で追加で一つ改善をお願いします。現状、採掘されてベルトコンベアーで運ばれた鉄鉱石は、チェストが設置されていない場合、いちばん右までそのまま移動します。これを、チェストが設置されていない場合、ベルトの上で止まるようにしてください。
(中略)
🔧 ベルト終端停止の修正完了!
## 修正内容
✅ 問題の特定と修正
• 以前:ベルトの次に何もなくても移動していた
• 修正後:ベルトの次にベルトまたはチェストがある場合のみ移動
✅ 正しい動作パターン
パターン2: ベルト終端で停止(修正済み)
[⛏️採掘機] → [➡️ベルト] → [➡️ベルト] → [空地]
↑
🔩ここで停止!
✅ デバッグ情報の追加
• ベルト上のアイテム数を表示
• アイテムが正しく停止しているかを確認可能
## テスト手順
1. 採掘機を鉱石に設置
2. ベルトを2-3個連続で設置(チェストは設置しない)
3. アイテムが最後のベルト上で停止することを確認
4. デバッグ情報で「ベルト上: X個」が増加することを確認
5. 後からチェストを設置すると停止していたアイテムが回収される
これで、ベルトの終端でアイテムが正しく停止するようになりました!試してみてください。
というわけで、良い感じで動作してくれるところまで来ました。
最後に、ゲームタイトルとキービジュアルの作成を依頼。
> ありがとうございます!動作は完璧です!見た目を変えましょう。ゲームタイトルの「Factory Game」を「初めての鉄鉱石採掘体験」にしてください。また、これにふさわしい画像を作成して、キービジュアルとして設定してください。
(中略)
🎨 キービジュアル完成!
## 追加した要素
✅ 新しいタイトル
• 「Factory Game」→「初めての鉄鉱石採掘体験」
• より親しみやすく、教育的な印象
✅ オリジナルキービジュアル
• **風景**: 青空、雲、太陽のある自然な背景
• **鉱石エリア**: 茶色の岩で鉱脈を表現
• **工場設備**: 採掘機、ベルトコンベア、チェストを図解
• **動作の流れ**: ベルト上を移動する鉄鉱石アイテム
• **ゲームフロー**: 「⛏️ 採掘 → ➡️ 運搬 → 📦 回収」
✅ デザインの特徴
• **グラデーション背景**: 美しい紫のグラデーション枠
• **影効果**: 立体感のあるデザイン
• **統一感**: ゲーム内の絵文字と連動
• **直感的**: 一目でゲーム内容が理解できる
## 視覚的効果
🎯 第一印象の向上
• プロフェッショナルな見た目
• ゲームの内容が一目で分かる
• 学習体験としての価値を強調
こんな見た目になりました。画像はSVGで作成されています。プロフェッショナルな見た目という割には、非常に素朴な感じになっていますが、まぁそれはそれ。お疲れ様でした!
これまでの内容を仕様書として作成し、GitHubにプッシュ
ここまでいくらか対話を続けてきましたが、そろそろコンテキストが長くなって追加の仕様に対して、意図しない対応をしてしまいそうな恐怖がでてきました。
そのため、以下のプロンプトで仕様をまとめるようにお願いしました。
> ありがとうございます。ここまでのこのゲームのルールをテキストとしてまとめて保存してください。あなたが、またこのゲームの機能を拡張していくときに基本的な仕様書として利用したいです。
(中略)
📋 ゲーム仕様書完成!
## 保存した内容
✅ 完全な仕様書を作成
• **基本仕様**: マップ、地形、技術構成
• **建物システム**: 3種類の建物の詳細仕様
• **アイテムシステム**: 移動ルールと表示方法
• **操作システム**: マウス操作とUI要素
• **ゲームフロー**: プレイサイクルと学習目標
✅ 技術的詳細
• ファイル構成
• 主要関数・クラス
• 設定値とパラメータ
• 拡張可能性の検討
✅ 重要な仕様ポイント
• **ベルト終端停止**: チェストがない場合の動作
• **採掘機出力条件**: 隣接ベルト必須
• **移動速度**: 採掘2秒、運搬0.5秒
• **視覚表現**: 絵文字とアニメーション
## 活用方法
🎯 今後の開発で活用
• 新機能追加時の基準として
• バグ修正時の動作確認として
• 他の開発者との情報共有として
• ゲームバランス調整の参考として
この仕様書があれば、将来的にゲームを拡張する際に:
• 現在の動作を正確に把握できる
• 新機能が既存システムに与える影響を予測できる
• 一貫性のある開発が可能
出来上がった仕様書がこちら。長いので折りたたみますが、過不足無くゲームのルールが記載され、さらに今後の拡張の方向性なども提案してくれています。このあたり、指定しているプロンプトは少ないですが、非常に親切かつ出しゃばりすぎない感じが、好感が持てますね。
ここまでで一通りの器はできあがったので、GitHubリポジトリにプッシュしてみます。
> 非常によい内容です。ありがとうございます! 最後にこの内容をGitHubにPushしたいです。手順を教えて下さい。
GitHubにプロジェクトをPushする手順をご案内します!
## 1. GitHubでリポジトリを作成
まず、GitHubのWebサイトでリポジトリを作成します:
1. GitHub.comにアクセス
2. 「New repository」をクリック
3. Repository name: iron-ore-mining-experience(または任意の名前)
4. Description: 初めての鉄鉱石採掘体験 - Factorio風シンプル工場シミュレーションゲーム
5. Publicを選択(他の人にも見てもらえます)
6. 「Create repository」をクリック
(中略)
## 🎉 完了後の確認事項
✅ GitHubで確認できること
• 全ファイルが正しくアップロード
• README.mdが美しく表示
• ゲームの説明とスクリーンショット
• 詳細な仕様書
✅ GitHub Pagesでの公開
リポジトリの Settings → Pages で GitHub Pages を有効にすると、以下のURLでゲームが公開されます:
https://YOUR_USERNAME.github.io/YOUR_REPOSITORY_NAME/
## 📝 次のステップ
1. GitHubでリポジトリ作成
2. 上記のコマンドを実行
3. GitHub Pagesで公開
4. 友達にシェア!
これで「初めての鉄鉱石採掘体験」が世界中の人に公開されます!🌍✨
何か質問があれば、お気軽にお聞きください!
というわけで、GitHubへのリポジトリの作成は自分でやる必要はありますが、GitHubで公開するために必要なリポジトリの初期化と関連README.mdファイルの作成などは、全部自動でやってくれます。助かりますな。あとは、リモートリポジトリを設定して、プッシュするのみ。
このあたりも全く手動介入せずに対応してくれます。
作成したゲームの成果物
というわけで、プッシュされたリポジトリはこちら。
GitHub Pagesで公開したので(このあたりの手順もAmazon Qが教えてくれます。)、ここから遊べます。
ゲーム作成完了後の、開発関連のベースラインの整備
一旦、ここまででゲームの機能開発は完了してますが、これからさき継続的に開発を進めていくには、まだ不安要素があったので、以下を作成してもらいました。
ブランチ作ってからの機能開発の依頼
最初のコミットだったので、Mainブランチにそのままコミットしてましたが、これ以降は、機能開発を行う前に、必ずGitブランチを作成することを依頼。
テストの作成
プロンプトでざっくり「テストを作成してほしい」と書いたところ、メインロジックのモジュール分割とテスト実行用基盤のもろもろを作成してくれました。
開発に関する包括的なドキュメントの作成
以下のプロンプトで、非常に内容が充実した開発関連ドキュメントを作成してくれました。このあたりは、かなり驚きでした。
分量多いかもですが、これだけしっかりまとめてくれたら、この内容を参照にしつつプロジェクトのベースラインをおきながら、破綻しないゲーム開発を続行できそうです。素晴らしい。
このあたりもリポジトリに格納しているので、気になった方は、是非中身も見てみてください。
> これから開発を進めていくにあたって、あなたと、開発の進め方について常に参照でき前提となるドキュメントを作成したいです。どういった内容を追加するべきか、検討して推奨してください。
🎉 包括的な開発ドキュメント完成!
## 📚 作成したドキュメント一覧
### 1. DEVELOPMENT.md - 開発ガイドライン
• **開発理念・原則**: テストファースト、モジュラー設計
• **ブランチ戦略**: 命名規則、開発フロー
• **コミット規約**: 絵文字付きメッセージフォーマット
• **テスト戦略**: ユニット・統合・E2Eテスト
• **コーディング規約**: JavaScript規約、命名規則
• **パフォーマンス指針**: 最適化の優先順位
### 2. ARCHITECTURE.md - アーキテクチャ設計書
• **システム概要**: MVCパターン、モジュラーモノリス
• **モジュール設計**: 6つのコアモジュールの責任分担
• **データフロー**: 初期化、操作、ゲームループ
• **パフォーマンス設計**: 効率的なデータ構造
• **拡張性設計**: 新機能追加パターン
• **将来の改善計画**: 3フェーズの技術ロードマップ
### 3. CONTRIBUTING.md - 貢献ガイド
• **貢献プロセス**: 6ステップの詳細手順
• **コード品質基準**: 必須要件・推奨事項
• **テスト要件**: 新機能のテスト作成ガイド
• **PRテンプレート**: 標準化されたレビュー項目
• **バグ報告・機能提案**: テンプレート付き
• **コミュニケーション**: 行動規範・貢献者認識
### 4. ROADMAP.md - 開発ロードマップ
• **4つの開発フェーズ**: 基盤強化→機能拡張→高度な機能→コミュニティ
• **具体的な機能計画**: 製錬炉、電力システム、研究ツリー
• **優先順位マトリックス**: 影響度×優先度での整理
• **成功指標**: 技術・ユーザー・コミュニティKPI
• **貢献の機会**: レベル別の参加方法
### 5. VS Code設定
• **推奨拡張機能**: 開発効率向上のツール
• **プロジェクト設定**: 一貫したコーディング環境
## 🎯 これらのドキュメントの価値
### ✅ 継続開発の基盤
• 一貫した開発プロセス
• 品質保証の仕組み
• 技術的負債の予防
### ✅ コミュニティ形成
• 新規貢献者の参入障壁を下げる
• 明確な貢献方法の提示
• 長期的なビジョンの共有
### ✅ プロジェクト管理
• 優先順位の明確化
• 進捗追跡の基準
• 意思決定の指針
## 🚀 次のステップ
### プルリクエスト作成
以下のURLでPRを作成できます:
https://github.com/HamadaKoji/iron-ore-mining-experience/pull/new/docs/development-guidelines
### 活用方法
1. 新機能開発時: ROADMAPで優先順位確認 → CONTRIBUTINGで手順確認
2. コードレビュー時: DEVELOPMENTの品質基準を参照
3. アーキテクチャ変更時: ARCHITECTUREで影響範囲を確認
4. 新規貢献者: CONTRIBUTINGから開始
これで、あなたと私が今後の開発で常に参照できる包括的なドキュメントが完成しました!🎊
ざっと動かしてみた感想
というわけで、実際にプロンプトを考えて、Amazon Qにコーディングしてもらう時間だけに限定すると、おおよそ30分ぐらいでここまで来ることができました。
ここまでの感想をざっとまとめてみます。恐らく、他のAIコーディングツールでも似たような感じかとは思う部分もありますが、Amazon QがAI駆動の初めての体験だった自分なりに、便利だと思った点を挙げてみます。
レスポンスの速さ
プロンプトを与えてから作業に入るまでのリアクション、また作業時間も多く待たされることはなく、比較的レスポンスよく作業を進めてくれていた印象です。もちろん作業の複雑性や、プロンプト次第だとは思いますが、これぐらいの軽量な仕様であれば、特に問題なく動作してくれていました。
良い感じのおせっかい具合
作業の進め方については、特段最初にプロンプトとして指定していなかったのですが、「そうそう、そこは、一緒に対応してくれると助かる!」という部分は、勝手に対応してくれていました。アイコンの追加などについては、ゲーム画面だけではなく、操作説明やREADMEへの反映ももれなく実施してくれています。
機能つくるだけではない、開発全般のサポートも実施
単純なところだと、作成したゲームの動作確認用にデフォルトWebブラウザを開いてくれたり、Git関連の操作(ブランチ作成、コミットメッセージ作成、マージ)も、アバウトな指示でざっとやってくれるあたりもありがたい。正直、これ使ってると、細かいGitコマンドを全て忘れてしまう感覚があります。それぐらい、便利。
実際やってみると感じる小気味よさと品質
AI駆動開発で利用できるプロダクトは非常に多くあり、その中で、Amazon Qはあまり存在感は強くないかもしれません。ただ、実際に触ってみると、レスポンスの速さ、品質面、安定性などもろもろ非常に高品質で、作業中、特にこまったりする点はありませんでした。
Claude Codeや、Gemini CLIなど、コマンドラインベースのAIツールもものすごい勢いで進化していますが、Amazon Q CLIからAI駆動開発を体験してみるのも良いんじゃないでしょうか。
まずは、実際に触ってみることをおすすめします。
それでは今日はこのへんで。濱田孝治(ハマコー)でした。