🤖

AmazonQと作る「ゾンビクラウド」:AIと学ぶインフラ学習サバイバルゲーム開発記録

に公開

生成AIとゾンビが共演!?AWS障害をゲームで学ぶインフラ設計サバイバル をAamazon Qに作ってもらいました。

はじめに

こんにちは なおいち です。

突然ですが、生成AI「Amazon Q」、皆さん使ってますか?

この記事では、Amazon Qを使ってAWSインフラ設計の学習ゲーム「ゾンビクラウド」を作った記録をお届けします。

ゲーム内容としては、AWSの障害対応や設計の大切さを、ゾンビ映画風テキストアドベンチャーとして体験できて、少しでもインフラの面白さ・大切さを知るきっかけになればいいなと思い作成しました。

経緯

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

上記に影響され、Amazon Q をこれまで使ったことない著者ですが、お勉強兼ねてトライしてみたというものです。

Amazon Qのセットアップ

Amazon Q CLI でゲームを作ろう Tシャツキャンペーン の記載を元に、以下の作業を進めていくだけです

  1. AWS Builder ID に登録
  2. Amazon Q CLI インストール
  3. チャットセッション開始して Amazon Q にゲームを作ってもらう

これらの作業はわかって仕舞えば難しいことはなくサクサクと進められました。
強いて言えば、 CLIインストールは、brewでインストールされるのはアプリなので、
CLIのパスは通っておらず、アプリ起動して設定が必要だったのが意外でしたね(後述します)

あと、これはAmazonQ関係ないのですが、当方は昨年M2 Macminiを購入してからというもの、全く環境変更してなかったのでそもそもPYenv環境がおかしい、Brewも動かないとそもそも観点で色々苦労しました。(その辺はまた別の記事に書いてみようと思います)

Amazon Q CLIインストールについて

インストール自体は

brew install amazon-q

と非常に簡単でしたが、 q chat と入力してもパスが通っておらず、最初あれ?ってなりました。

結論から言うと、 Amazon Q.app が導入されており、こちらの起動が必要でした

起動をすると以下のような画面で、CLI=Local shell のインストールを行なってくれます。

また、signinボタンも出てくるので、押してあげることでブラウザが起動し、BUildersIDで認証する形になります。(認証後、Amazon Qアプリの画面が切り替わるはずだと思いますが、初回うまく切り替わらなかったので2回繰り返したところうまく動きました)

ゲーム作り

q chat と入力して、Amazon Qのチャットを起動。

試しに、

こんにちは。 ここにチャットで指示をすればいいのですか?

と投げかけると、

こんにちは!はい、ここでチャットの指示を入力していただければ、お手伝いします。
AWS関連の質問や、コマンドラインでの操作、コーディングの支援など、どのようなこと
でもお気軽にお尋ねください。現在のディレクトリは
/Users/xxxxxxxxxxx/gitrepo/github/amaozn-q-game となっています。どのようなお手伝いが必要ですか?

と言う返答が返ってくる。Amazon Q 何も知らなかったので、ふむふむなるほど・・・と思いながらゲーム開発の指示をすることに。

作りたいゲーム(ゾンビクラウド)、をプロンプトとして入力。
目的として、AWSの障害とインフラ設計の重要性を学びながら、プレイヤーが生成AI(Amazon Q)と協力して生き延びる、テキストベースのクラウドサバイバルゲームを作成します。 みたいなこともインプット。

今回は、作りたいゲームをプロンプトとしてある程度固めておき、それをAmazon Qに与える形としました
(無料枠内ゲームがで完成しなかったら嫌だなぁと思い、やりとりを少なくしたかった)

このプロンプトを与えるとAmaozon Q が考えて、Pythonプログラムを作成、保存して良いかを聞かれるので、「y」を押して許可してあげるとカレントディレクトリに保存してくれます。

今回は、Pythonの1ファイルにしろと指示したから、最初は7日間の全体像のうち、2日までを初回生成する形になりました。

さて、動かそうとします。Amazon Q プロンプト内で 実行をしてみます。
するとエラーが出るのですが、自動的にエラー内容を解析して、Amazon Qがエラー対処を提案してくれます。
その対処に対して Y/N/t を変更することで、自分では何もしなくてもよく、Amazon Qが処理をしてくれます。(tを返答すると、Amazon Qを信頼。今後Yes/Noを質問しなくなります)

ここが今回一番驚きました。 ここまで自発的にやってくれる(コピペすらいらない)のはちょっと驚き。

ゲーム画面

起動後

結果(初回)

惨敗!!!!
インフラエンジニアの矜持どこいった・・・と悲しくなりました。
選択肢もう少し多くしたくなってきます(笑)

試しに2回目はうちの妻に・・・(WEBデザイナー)

なんですと!?
どうも選択肢 D のAmazon Qを選ぶだけでほぼ完璧な動作をする仕様になっていたようです(笑)
さすがAmazon Q作成ゲーム。Amazon Q推しが過ぎますw

このあと、Amazon Q推しすぎるとNGとなるような改修版を作成してもらっています。
また、ブラウザで動作するバージョンも作ってもらったところ、
html+Jsの超シンプル版も出来上がりました。

感想

これでゲームと言っていいのか・・?と言うのはありますが、WEBサーバやファイルサーバに置くだけでも動く形なので、汎用性はとても高く良い感じです。 これを軽い指示ですぐに生成してくれるのはなかなか面白いですね。

また、それぞれのシナリオや、Day1、Day2の関連については、具体的な指示はほとんどしていないのですが、さすがAWSの生成AIなのか、ケースをよくわかっていて、事象と対策がマッチしたような表現になっていると思います(どっち選ぶか迷う感じはまるでAWSの資格試験の時みたいです)。

曖昧な方向性の指示で、こうやってモノを作ってくれるのは非常に役に立ちますね。
今回試してないですが、Gitへの保存やCommmit・PushなどもAmazon Q経由で処理できそうな気がします。

動作イメージ

まとめ

今回は Amazon Q を用いてゲームアプリを作ってみる体験を行いました。

会社が許すのであれば、Proを契約して、テストコードなどもガンガン生成していくと業務が捗るなと感じた次第(弊社には是非とも頑張っていただきたい)

今回作成した(作成してもらった)コード

https://github.com/otanao1/game_zonbie_cloud

参考情報

おまけ Pygameを使ったゲーム作成

Pygameを使っていなかったので、使ったバージョンもAmazon Qに作ってもらいました。

こちらは、タワーディフェンス風味です。来週するゾンビ(脅威)からAWSリソースを守り抜く感じになっています。

守るための対策はAWSのサービスから選定させています。

プロンプトで何度かやり取りをして、上がPublic、下がPrivateで、WEBサーバ経由してSQLInjectionを狙ってくる・・・みたいな動きをしています。

いつ攻撃されるかわからない(常に攻撃されている)というのは伝わる・・・といいなぁと思いながら作ってみました。

色々プロンプトで追加指示していて、お手製EC2は脆弱性高くて、S3は堅牢という感じでリソースごとに防御力みたいなモノを設定してもらっています。

さらに、不定期にコンテンツのUpdateが入ると、新たな脆弱性が出る・・・みたいなことも入っていて、カオスになりました・・・。

Discussion