🐷

GPT-4で設計をしてみた

2023/05/14に公開

こんにちは!!
ピーやラスタです!!

今日は、エンジニアとしての仕事を少しでもサボる効率的にやりたいので
GPT-4を使った設計サービスを作ろうと思い立ちました。
そのための技術検証?をまとめました。

前提

仮想のアプリとしてマッチングアプリの友達作り版というものを設計するとする。

・要件定義(機能洗い出し)
 →軽くアプリの説明をし、どのような機能が必要そうかを考えてもらう。

・DB設計
 →洗い出した機能を実現するために、必要なDB設計を考えてもらう。

プロンプト

友達作りトークアプリを実装するに従い一緒に考えてください。
ç

##条件
・必要な機能を列挙する。
・それに応じたDB設計をMySqlで表示する。なお、データ型、属性、も記載してください。
 データ容量を意識した設計にしてください。
 各カラムに入る値を表示してください
 それらを表で表してください

回答

まず、アプリの主な機能を考えてみましょう:

ユーザー登録/ログイン
プロフィール作成/編集
友達探し(興味・趣味、地域、年齢などに基づく)
メッセージング機能
ミーティングのスケジューリング
レビューと評価
これに基づいて、以下にDB設計を示します:

Usersテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
username: VARCHAR(255), UNIQUE, NOT NULL
password: VARCHAR(255), NOT NULL
email: VARCHAR(255), UNIQUE, NOT NULL
created_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP
Profilesテーブル

user_id: INT, FOREIGN KEY REFERENCES Users(id)
age: INT
location: VARCHAR(255)
interests: VARCHAR(255)
bio: TEXT
Friendsテーブル

user_id: INT, FOREIGN KEY REFERENCES Users(id)
friend_id: INT, FOREIGN KEY REFERENCES Users(id)
status: ENUM('pending', 'accepted', 'declined')
Messagesテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
sender_id: INT, FOREIGN KEY REFERENCES Users(id)
receiver_id: INT, FOREIGN KEY REFERENCES Users(id)
message: TEXT, NOT NULL
sent_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP
Meetingsテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
user_id: INT, FOREIGN KEY REFERENCES Users(id)
friend_id: INT, FOREIGN KEY REFERENCES Users(id)
location: VARCHAR(255)
date_time: TIMESTAMP
description: TEXT
Reviewsテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
reviewer_id: INT, FOREIGN KEY REFERENCES Users(id)
reviewee_id: INT, FOREIGN KEY REFERENCES Users(id)
rating: INT, NOT NULL
comment: TEXT
created_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP
ご希望のER図の作成はテキストベースでは難しいですが、これらのテーブルがどのようにリンクするかを理解することは可能です。Usersテーブルが中心となり、Profiles, Friends, Messages, Meetings, and Reviewsテーブルがそれぞれ異なる方法で参照します。

上記の設計は初期段階のものであり、実際のアプリケーションのニーズにより調整が必要かもしれません。また、これはあくまでデータベース設計の一例であり、具体的なアプリケーションの要件、セキュリティ要件、パフォーマンス要件などに応じて調整が必要です。

粗探し

①機能洗い出し

まず、アプリの主な機能を考えてみましょう:

ユーザー登録/ログイン
プロフィール作成/編集
友達探し(興味・趣味、地域、年齢などに基づく)
メッセージング機能
ミーティングのスケジューリング
レビューと評価

②DB設計

Usersテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
username: VARCHAR(255), UNIQUE, NOT NULL
password: VARCHAR(255), NOT NULL
email: VARCHAR(255), UNIQUE, NOT NULL
created_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP

Profilesテーブル

user_id: INT, FOREIGN KEY REFERENCES Users(id)
age: INT
location: VARCHAR(255)
interests: VARCHAR(255)
bio: TEXT

Friendsテーブル

user_id: INT, FOREIGN KEY REFERENCES Users(id)
friend_id: INT, FOREIGN KEY REFERENCES Users(id)
status: ENUM('pending', 'accepted', 'declined')

Messagesテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
sender_id: INT, FOREIGN KEY REFERENCES Users(id)
receiver_id: INT, FOREIGN KEY REFERENCES Users(id)
message: TEXT, NOT NULL
sent_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP

Meetingsテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
user_id: INT, FOREIGN KEY REFERENCES Users(id)
friend_id: INT, FOREIGN KEY REFERENCES Users(id)
location: VARCHAR(255)
date_time: TIMESTAMP
description: TEXT

Reviewsテーブル

id: INT, PRIMARY KEY, AUTO_INCREMENT
reviewer_id: INT, FOREIGN KEY REFERENCES Users(id)
reviewee_id: INT, FOREIGN KEY REFERENCES Users(id)
rating: INT, NOT NULL
comment: TEXT
created_at: TIMESTAMP, DEFAULT CURRENT_TIMESTAMP

ここまでの感想

正直使えない!!!!!!

機能洗い出しにフォーカスしプロンプトを書いてみる。

プロンプト

友達作りトークアプリを実装するに従い機能を考えてください
このアプリは、互いに友達が欲しいもの同士でマッチングして友達を作り、
実際に遊びに出かけたりすることを想定したアプリです。

回答

このアプリに必要な機能を以下にリストアップします。

1.ユーザー登録・ログイン機能:ユーザーがアカウントを作成し、ログインできる機能。

2.プロフィール作成・編集機能:ユーザーが自己紹介、興味・趣味、好きな活動等を記載できる機能。

3.マッチング機能:ユーザーのプロフィール情報を基に、同じ興味・趣味を持つユーザーを推薦する機能。

4.友達リクエスト送信・受信機能:ユーザーが他のユーザーに友達リクエストを送り、またそれを承認・拒否できる機能。

5.チャット機能:マッチングしたユーザー同士でメッセージを交換できる機能。

6.イベント企画・参加機能:ユーザーが遊びのスケジュールを立て、友達に招待できる機能。また、そのイベントに参加・不参加を回答できる機能。

7.フレンドリスト管理機能:ユーザーが友達リストを管理し、友達のプロフィールを閲覧できる機能。

8.レビュー・評価機能:ユーザーが遊びに行った後、友達やイベントに対して評価・レビューを残せる機能。

9.プッシュ通知機能:新しいマッチング、メッセージ、イベント招待などに対してユーザーに通知を送る機能。

これらの機能を考慮に入れた設計を行い、ユーザーが友達を作りやすい環境を提供します。

4.友達リクエスト送信・受信機能:ユーザーが他のユーザーに友達リクエストを送り、またそれを承認・拒否できる機能。
6.イベント企画・参加機能:ユーザーが遊びのスケジュールを立て、友達に招待できる機能。
また、そのイベントに参加・不参加を回答できる機能。
7.フレンドリスト管理機能:ユーザーが友達リストを管理し、友達のプロフィールを閲覧できる機能。
8.レビュー・評価機能:ユーザーが遊びに行った後、友達やイベントに対して評価・レビューを残せる機能。

読み取れたこととして
→友達リクエストを送信し、承認され次第、フレンドリストに友達が増えていく。
そのフレンドリストに対して遊びの予定を募るイベント企画・参加機能があると思われる。

そしてそこで悪徳なマルチなどがないか、マナーよく遊べていたかというレビュー機能で
管理して行くという流れが予想される。

悪くなさそう。

結論

DB設計などの正確性が求められるようなことなどはおそらくGPT-4には向いてないが、
必要機能の洗い出しなど創造性・想像性が求められる作業には強く向いているように感じた。

Discussion