大学時代のレポート作成用PCでAmazon Q Developer CLIを使ってゲームを作ってみた！！

# 大学時代のレポート作成用PCでAmazon Q Developer CLIを使ってゲームを作ってみた！！
こんにちは、yamasachi117です。

AmazonQ CLIの面白いイベントが開催されていましたので、アウトプットの練習がてら挑戦してみました。

https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/
## 前提
- 使用PCは大学時代に使っていたMacBook Air (13-inch, 2017)
- レポート作成用のPCでしたので、開発ツール等はほぼ無し。一からの環境構築です。

## 作成したゲーム
https://github.com/yamasachi117/MaruBatsuGame/blob/813b763cd843d928c94262b42bda924112f0ac05/README.md

## 環境構築
### Amazon Q Developer CLI インストール
[AWS公式ドキュメント](https://docs.aws.amazon.com/ja_jp/amazonq/latest/qdeveloper-ug/command-line-installing.html)を参考にインストールしました。インストールまでの手順はそちらを参考にしていたければと思います。

私は、インストーラーをダウンロードして対応しました。
Homebrewでもインストールできるみたいなのでそちらが慣れている人はその方が楽ですね。


### Builder IDを作成
1. [aws.training](https://www.aws.training/ )にアクセスし、右上のサインインからBuilde IDを作成。


### ターミナルからAmazonQにログイン
#### 1. ターミナルを起動。以下コマンドを実行
  ```
  q login
  ```
#### 2. ログイン方法を聞かれるので```Use for Free with Builder ID```を選択
```cmd
? Select login method ›
❯ Use for Free with Builder ID
  Use with Pro license
```
#### 3. AWSの画面が立ち上がってきます。画面の案内に従ってログインをしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/c836cd3e-b4e6-4ecb-a141-d9222f5ea49e.png)

#### 4. AmazonQ CLIのアクセスを許可
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/ca03e36e-0196-444e-820a-4e7a42d7a424.png)

```cmd
✔ Select login method · Use for Free with Builder ID
Device authorized
Logged in successfully
```


ログインが出来たみたいです！


## チャット開始
ログインが出来たみたいなので実際にチャットをしていきます。

```cmd
q chat
```

![スクリーンショット 2025-06-08 20.48.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/b4de6eef-c8b3-45cc-89a8-ca9317af7804.png)

cloud-3.7-sonnetなんですね。
全然使ったことないのでよく分かりませんが（笑）


実際にプロンプトを書いていきましょう。
今回は皆さん使われているPyGameで作っていこうと思います。
```
> pygemeを使用してゲームを作成したいです
Pygameを使用してゲームを作成したいとのことですね。Pygameは、Pythonでゲーム開発をするため
の優れたライブラリです。まずは環境構築から始めましょう。

まず、Pygameがインストールされているか確認しましょう：


🛠️  Using tool: execute_bash
 ⋮ 
 ● I will run the following shell command: 
pip list | grep pygame
 ⋮ 
 ↳ Purpose: Pygameがインストールされているか確認


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
```
PCにPyGameがインストールされているか確認してくれるみたいです。
画面の案内に従って`t`を入力していきます。

```cmd
> t
/usr/local/Cellar/pyenv/1.2.21/pyenv.d/exec/pip-rehash/pip: /usr/local/bin/pip: /usr/bin/python: bad interpreter: No such file or directory

 ⋮ 
 ● Completed in 3.968s
エラーが発生しているようです。Pygameをインストールする必要があります。以下の手順で進めま
しょう：

1. まず、Pythonがインストールされているか確認します：


🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: python --version
 ⋮ 
 ↳ Purpose: Pythonがインストールされているか確認

pyenv: python: command not found

The `python' command exists in these Python versions:
  3.6.5

Note: See 'pyenv help global' for tips on allowing both
      python2 and python3 to be found.

 ⋮ 
 ● Completed in 1.648s



🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: python3 --version
 ⋮ 
 ↳ Purpose: Python3がインストールされているか確認

Python 3.7.2

 ⋮ 
 ● Completed in 0.743s
Python 3.7.2がインストールされていますね。次にPygameをインストールしましょう：


🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: pip3 install pygame
 ⋮ 
 ↳ Purpose: Pygameをインストール

Collecting pygame
  Downloading https://files.pythonhosted.org/packages/ea/68/9154ed05ced562698c217ce34beeb0481fa8f92c0eede47889ffe86cb617/pygame-2.6.1-cp37-cp37m-macosx_10_9_x86_64.whl (13.1MB)
Installing collected packages: pygame
Successfully installed pygame-2.6.1
You are using pip version 18.1, however version 24.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

 ⋮ 
 ● Completed in 11.498s
素晴らしい！Pygameが正常にインストールされました。では、簡単なゲームの例を作成しましょう
。以下は、シンプルな四角形を動かすことができる基本的なゲームの例です：


🛠️  Using tool: fs_write
 ⋮ 
 ● Path: ~/simple_game.py

+     1: import pygame
+     2: import sys
+     3: 
+     4: # Pygameの初期化
+     5: pygame.init()
+     6: 
+     7: # 画面設定
+     8: WIDTH, HEIGHT = 800, 600
+     9: screen = pygame.display.set_mode((WIDTH, HEIGHT))
+    10: pygame.display.set_caption("シンプルゲーム")
+    11: 
+    12: # 色の定義
+    13: WHITE = (255, 255, 255)
+    14: RED = (255, 0, 0)
+    15: BLUE = (0, 0, 255)
+    16: 
+    17: # プレイヤーの設定
+    18: player_size = 50
+    19: player_x = WIDTH // 2 - player_size // 2
+    20: player_y = HEIGHT // 2 - player_size // 2
+    21: player_speed = 5
+    22: 
+    23: # ゲームループ
+    24: clock = pygame.time.Clock()
+    25: running = True
+    26: 
+    27: while running:
+    28:     # イベント処理
+    29:     for event in pygame.event.get():
+    30:         if event.type == pygame.QUIT:
+    31:             running = False
+    32:     
+    33:     # キー入力処理
+    34:     keys = pygame.key.get_pressed()
+    35:     if keys[pygame.K_LEFT] and player_x > 0:
+    36:         player_x -= player_speed
+    37:     if keys[pygame.K_RIGHT] and player_x < WIDTH - player_size:
+    38:         player_x += player_speed
+    39:     if keys[pygame.K_UP] and player_y > 0:
+    40:         player_y -= player_speed
+    41:     if keys[pygame.K_DOWN] and player_y < HEIGHT - player_size:
+    42:         player_y += player_speed
+    43:     
+    44:     # 画面の描画
+    45:     screen.fill(WHITE)
+    46:     pygame.draw.rect(screen, RED, (player_x, player_y, player_size, player_size))
+    47:     
+    48:     # 画面の更新
+    49:     pygame.display.flip()
+    50:     clock.tick(60)  # 60FPSに制限
+    51: 
+    52: # Pygameの終了
+    53: pygame.quit()
+    54: sys.exit()


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
```
PyGameのインストールからPythonのインストール有無、サンプルゲームの作成まで一気にやってくれました。

1言ったら10やってくれるので、とても優秀な部下を持った気分です（笑）

実行して良いか聞かれています。```t```を入力します。
```cmd
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> t

Creating: ~/simple_game.py

 ⋮ 
 ● Completed in 0.8s
シンプルなゲームのサンプルコードを作成しました！このゲームでは、矢印キーを使って赤い四角形を動かすことができます。

## 実行方法

以下のコマンドで実行できます：

python3 simple_game.py


## コードの説明

1. 初期化と画面設定:
   • Pygameを初期化し、800x600ピクセルのウィンドウを作成します
   • ウィンドウのタイトルを「シンプルゲーム」に設定します

2. プレイヤーの設定:
   • 赤い四角形（プレイヤー）のサイズと初期位置を設定
   • 移動速度を設定

3. ゲームループ:
   • イベント処理（ウィンドウを閉じる操作など）
   • キー入力の処理（矢印キーでプレイヤーを移動）
   • 画面の描画と更新
   • FPSの制限（60FPS）

## 発展させるには

このシンプルなゲームをベースに、以下のような機能を追加できます：

1. 敵キャラクターの追加
2. 衝突判定の実装
3. スコアシステムの追加
4. 背景画像や効果音の追加
5. アニメーションの実装

何か特定の機能を追加したい場合や、他のタイプのゲーム（例：シューティングゲーム、パズルゲームなど）を作りたい場合は、お知らせください。詳細なコードを提供できます。
```
これでサンプルのゲームの作成が完了しました。
加えて、機能改善案もわかりやすくまとめてくれています。さすが私の部下ですね。

## ゲーム作成
環境構築からサンプルの作成まで完了しました。
こちらからゲームの要件を指示して対応してもらいましょう。

チャットは会話レベルでいきたいと思います。
今回は○×ゲーム（3つ揃えたら勝ちのやつ）を作って貰いましょう！！

```
> ○×ゲームを作成して！
-------------------
ソースコードなので省略
-------------------

 ⋮ 
 ● Completed in 0.8s
○×ゲーム（マルバツゲーム）を作成しました！古典的な三目並べゲームをPygameで実装し、視覚的に楽しめるようにしました。

## ゲームの特徴

1. プレイモード:
   • **対人戦**: 2人のプレイヤーが交互に手を打つモード
   • **CPU戦**: コンピュータと対戦するモード（2段階の難易度あり）

2. CPU難易度:
   • **簡単**: ランダムに手を打つ初心者向けAI
   • **難しい**: 勝ち手を見つけたり、プレイヤーの勝ち手をブロックする戦略的なAI

3. 視覚効果:
   • カラフルな○（青）と×（赤）のマーク
   • 勝利ラインのハイライト表示
   • 直感的なユーザーインターフェース

## 使い方

1. アプリケーションを起動します:
  
   cd ~/Desktop/MaruBatsuGame
   python3 maru_batsu_game.py
   

2. タイトル画面で以下を選択します:
   • 「対人戦」: 友達と交互に遊ぶモード
   • 「CPU戦」: コンピュータと対戦するモード

3. CPU戦を選んだ場合は、難易度を選択します:
   • 「簡単」: 初心者向け
   • 「難しい」: 経験者向け

4. ゲーム画面で3×3のグリッド上の空いているマスをクリックして、○または×を置きます。

5. 先に縦、横、または斜めに3つ並べたプレイヤーの勝ちです。

6. ゲーム終了後、「もう一度プレイ」ボタンをクリックして新しいゲームを始められます。

## ゲームの仕組み

• **ゲーム状態管理**: タイトル画面、プレイ中、ゲーム終了の3つの状態を管理
• **勝敗判定**: 縦・横・斜めのラインをチェックして勝者を判定
• **CPU AI**: 難易度に応じた戦略でコンピュータが手を選択
• **視覚的フィードバック**: 勝利ラインのハイライト表示や結果の表示


このゲームは、シンプルながらも戦略性があり、何度でも楽しめる古典的なゲームです。カスタマイズも容易なので、自分好みにアレンジすることもできます。

何か質問や追加機能のリクエストがあれば、お気軽にお聞きください！


```

出来たものを遊んでみると初回から中々のものを作ってくれました。
いくつか機能改善をお願いしてみます。

```
> CPUとの対戦は先手後手はランダムにしてください。
  プレイヤーが入力した時に少し待ってからCPUが入力するようにしてください。
  最初のページのレイアウトが崩れているから直してほしいです。

了解しました。CPUとの対戦で先手後手をランダムにし、CPUの手番に遅延を追加し、
最初のページのレイアウトを修正します。以下の変更を行いましょう：
```
![スクリーンショット 2025-06-20 0.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/b80026b8-df8f-4d14-a03b-62b20d78f8fd.png)

すごいですね。差分を色分けして分かり易くしてくれています。
レビューする側からすると、とてもありがたいです。


![スクリーンショット 2025-06-20 0.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/e7e7f7b8-fe05-4d1c-9426-93f28ea49713.png)
コメントアウトも書いてくれていますね。後任者への配慮も忘れない素晴らしい人材です。

![スクリーンショット 2025-06-20 0.59.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4110101/ac14aa2f-37db-463f-925a-0f0bea79fe4d.png)
最後に対応報告までしてくれてありがとう。これからもよろしく。




## 使ってみて
- 環境構築含めとても使いやすいです。仕事の時よく環境構築で躓いている私でもすぐ始めることが出来る点はありがたいですね。


- 初めてAIを使用してソースコードを作成してみましたが、知識０でも形になるものが数時間で作れて感激です。

- 個人的に嬉しかったのは機能改善時の差分表示はとても良い点ですね。既存のソースコードを読ませて分析させたりしても面白そう。

- 生成されたソースコードにもコメントアウトがされており、想定以上の精度でした。

- READMEを自動で生成してくれていました。こういったドキュメント関連をなにも言わずに作ってくれるのはとてもいいですね。

## まとめ
今回はお試しでしたのでプロンプトも簡単に話し口調でやってみましたが返答も分かりやすく同僚とペアコーディングしているような感覚で楽しかったです。

いろんな方が今回のイベントで記事を書いてくれていますので、利用方法含めみてみようと思います！
ここまで閲覧いただきありがとうございました！