【Gemini】完全AIチャレンジ! #2ネット対戦五目並べを作る
第1弾では、ローカル限定の日記アプリを作成しました。ほぼ完璧な内容だったGeminiさんですが、今回はどうでしょうか。ということで、Linuxサーバー上でWEBアプリとして対戦型ゲームを作成してみたいと思います。今回もGeminiを使って作成していきたいと思います。
また、題材としては、配信者さん界隈で継続的に話題の「五目並べ」にしたいと思います。環境として指定するのは、OS(AlmaLinux9)とWEBサーバー(nginx)のみにして、あとは自由にさせてみたいと思います。
AIさんにお願いする仕様
今回は、以下の内容を入力してみたいと思います。
Linuxサーバー上にWEBアプリで動作する五目並べゲームを作成したいと思います。
以下の要件をすべて満たすソースコード、および構築手順を作成してください。
# 環境
AlmaLinux9
nginx
# 要件
-nginxにてリバースプロキシ経由でアプリに通信する
-ページにアクセスした際に、「ログイン」もしくは「ユーザー登録」が求められる
-ユーザー登録画面では、IDとパスワードと表示用ニックネームの入力が必要とする
-登録済みのユーザーでログインすると、まずはロビー画面が表示される
-ロビーでは現在ログインしているユーザーのリストが表示されることとする
-ロビー画面でログイン済みのユーザーを選択し、対戦を申し込むと、申し込まれたユーザー側に申し込みがあった旨が通知され、対戦するかどうか選択できる
-「対戦する」が選ばれた際には、五目並べのゲーム開始となるここまでの指示でアプリを起動したところ、エラーが出たのでAIに知らせました。
502 Bad Gatewayが表示されました実は、ここまでで、ほぼ完成したアプリが出来上がったのですが、追加で以下のような修正依頼を加えていますので、共有します。
以下の点について修正をお願いします。
# 修正点
-ユーザー登録を行った際にはそのままログイン状態へと遷移させてください
-勝敗がついた際に、勝った方にも、「あなたが負けました」と表示されました。間違っているので修正してください
-対戦が終わったあと、自動的にログアウト状態にされました。ロビーに戻るようにしてください。
-対戦中に、今どちらの番なのかが分かりません。わかるように修正してください
-勝敗の履歴が見れるページがほしいので、過去の試合の時間・先手・後手・勝敗がリスト表示されるページを作成してください。時間は日本時間にしてください。
-ログイン画面、対戦中画面をスマートフォンで見た場合、最適化されていないので、最適化してください。対戦中画面では、盤面が横幅いっぱいに表示されるように修正してください。
-対戦中に、第三者がロビーに居た場合、第三者から見て対戦中のユーザー「対戦中」と表示されること
-対戦中に、第三者が観戦をできるようにしたい。「観戦する」ボタンを用意して、その試合を閲覧できるようにしてください。第三者は閲覧するのみなので、試合盤面に対して一切操作できないようにします。
-また、観戦中のユーザーは自由にロビーに戻ることが可能にしてください。ちなみに、依頼に対して作成したものが、不十分だった場合には、追加で、
ロビーで対戦中のメンバーが「対戦申込」表示になっており、「対戦中」の表示になっていませんでした。修正してください。のように追加で依頼します。そんなことを何度か繰り返して、完成度を上げていきます。
出来上がったソースコード
https://github.com/supilog/gomoku
ここではソースコードしか記載しませんが、依頼内容どおりLinux上での構築手順も含めて作成してもらってるので、構築手順どおりに構築しました。余計なことはやっていません。
アプリ確認






これも、もうほぼ完璧に近いですね。今回は簡単なゲームではあるもののネット対戦ありというところでしたが・・・しっかりとリアルタイム対戦が出来るように、お互いに(なんなら第三者への観戦モードも含めて)反映されています。
細かい指示もわりと柔軟に対応してくれるのが嬉しいです。
まとめ
AIくん強いっすねぇ。
ちなみに、今回要件でAIが提示してくれた構成はこちら
全体構成図
- OS: AlmaLinux 9
- Web Server: Nginx (リバースプロキシ & 静的ファイル配信)
- App Server: Gunicorn + Eventlet (WebSocket対応)
- Framework: Flask (Python) + Flask-SocketIO
- Database: SQLite (手軽さのため採用。ファイルベース)
細かい修正をかなりいれたので、時間的には2から3時間程度をかけて修正依頼を繰り返しましたが、とても良い仕上がり。なんなら、初期依頼の状態でも、普通に対戦可能な基本機能は十分なほどに出来上がっていました。
はたして、第3回があるのかは分かりませんが、もしあれば、もっと大規模なものに挑戦してみたいですね。