chatGPTを使ってレジスタンス:アヴァロンをウェブアプリ開発してみようと思う

いつも仲間内でレジスタンス:アヴァロンで遊んでいるので、個人開発のテーマとしてウェブアプリ開発してみます。chatGPTという便利なツールが流行っているので、これも最大限活用しながら進めます。

chatGPTを使ってどの程度の規模のアプリ開発ができるのか試してみます

chatGPTは無料で誰でも使えるツールなので、気になる方はこちらから登録してみてください。

https://openai.com/blog/chatgpt

取り組みの記録を記事にまとめアウトプットの場として活用していきます

まず最初にchatGPTさんに開発宣言したら、ルールの概要をまとめてくれました。

chatGPTがまとめたルールを確認→修正というやりとりを何度か繰り返して、ルールをまとめたものがこちらです。

  • ゲームの概要
    • 青陣営と赤陣営に分かれ、陣営によって役割が異なります。
    • 青陣営は任務を成功させ、赤陣営は任務を失敗させることを目指します。
    • 陣営の勝敗は、任務が成功したか失敗したかによって決まります。
  • プレイ人数
    • 5人以上10人以下でプレイ可能です。
  • 役割
役職陣営能力

マーリン
青陣営赤陣営のプレイヤーを知ることができるが、役職まではわからない。ただし、モードレッドは青陣営であると表示される。
パーシヴァル青陣営マーリンのプレイヤーを知ることができる。ただし、モルガナのプレイヤーもマーリンと表示される。
レジスタンス青陣営特殊な能力はない。
アサシン赤陣営自分が赤陣営であることはゲーム開始時に知ることができるが、役職までは知ることができない。
3回任務が成功した後に、自分の役割がアサシンであると知る。マーリンの正体を推測し、指名する。指名が正しい場合、暗殺成功となり赤陣営の勝利となる。赤陣営のプレイヤーを知ることができるが、役職まではわからない。
モルガナ赤陣営自分が赤陣営であることはゲームの開始時に知ることができるが、役職までは知ることができない。
パーシヴァルのプレイヤーにマーリンであると表示される。赤陣営のプレイヤーを知ることができるが、役職まではわからない。
モードレッド赤陣営自分が赤陣営であることはゲーム開始時に知ることができるが、役職までは知ることができない。
マーリンのプレイヤーから青陣営であると表示される。赤陣営のプレイヤーを知ることができるが、役職まではわからない。
オベロン赤陣営特殊な能力はない。
スパイ赤陣営自分が赤陣営であることはゲーム開始時に知ることができるが、役職までは知ることができない。
赤陣営のプレイヤーを知ることができるが、役職まではわからない。
  • ゲームの流れ
    1. リーダーが1人選ばれ、リーダーは任務を行うメンバーを決定します。
    2. リーダーにより選出された、任務を行うメンバーを承認するかどうかを参加者全員で投票します。過半数が承認した場合、任務が開始されます。
    3. 青陣営は任務を成功させ、赤陣営は任務を成功または妨害から選択することができます。
    4. 1人以上に任務を妨害されたらそのクエストの任務は失敗となります。プレイヤー人数によって第4クエストは2人以上の妨害で任務失敗となる場合もあります。
    5. 5.次のリーダーに交代し、ステップ1から繰り返します。
  • ゲーム終了条件
    • 青陣営の勝利
      • 3回の任務に成功する。
    • 赤陣営の勝利
      • 3回の任務に失敗する。
      • 3回の任務に成功した後に、アサシンがマーリンを暗殺する(指名し言い当てる)ことに成功する。

chatGPTを使ってみて感じたこと

chatGPTの上手い使い方、そうでない使い方があること

ざっくりとした聞き方をすると、流石のchatGPTさんも困ってしまうようです。

システム開発の時の仕様を作るような感覚ですが、しっかりと具体的に指示をすれば精度の高い回答が帰ってきます。うまく活用するためにはコツがあります。

Garbage In, Garbage Out
 品質の悪い不完全なデータを入力したり品質の悪い特徴量を作成したりすると、品質の悪い不完全な
 機械学習済みモデルが出力される

例えばこんな感じ(指示がざっくりすぎて困っちゃった例)

すぐにプログラムを書き始めるのではなく、まずは作りたいものの具体性を上げていく作業から取り組み始めました。

取り組みの流れはざっくりこんな感じをイメージしています。

  1. ゲームルールの整理 ←今ここ
  2. フレームワークやプログラミング言語を選ぶ
  3. 全体構成を考える(使用するバックエンドのサービスをリストアップ)
  4. データ構造を考える
  5. フロントエンドのファイル構成を考える
  6. 実装(コーディング)