初めてER図制作までの流れ

## 職場で使用する時間割作成アプリにおけるER図制作の記録
### 1.スケッチの作成
まずはコピー用紙に時間割アプリのデザインを簡単にスケッチしました。
スケッチを行うことによって、のちに行う要件定義が容易になったと感じます。

### 2-1.モックアップの作成
スケッチをベースにFigmaで制作しました。
必要なページを一通り制作し、同時にどのような操作がユーザーにとって良いか判断していきました。
のちの更新を行なっていく前提で簡単に制作する予定でしたが、デザインのイメージが浮かばなかったため初めからそこそこ具体的なものを制作してしまいました。
結果的には良かったと思っています。

### 2-2.マインドマップ作成
モックアップと同時進行でマインドマップを作成しました。
boardmixというツールを使用し、階層に分けて必要な機能を洗い出します。

![スクリーンショット 2024-08-13 15.52.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/8d98e2f6-a9ac-a625-632e-ad82aed9c042.png)

### 2-3.ベンチマークアプリのリサーチ
自分が作りたいアプリのイメージに近いアプリケーションをリサーチしました。
目標は2つ見つけることでしたが思いの他イメージに近いものはありませんでした。
そもそも登録しないと使えないアプリばかりで…
資料請求を行った結果、wagacoというアプリがかろうじて参考になりそうでした。

### 4.現状の課題と解決機能の洗い出し
現在スクールで使用している時間割アプリはスプレッドシートで管理しています。
その管理状態で起こっている課題を洗い出しました。
洗い出しを行った理由としては、アプリで実装したい機能が多く制作がそれなりに難しかったためです。
洗い出しを行うことで、アプリに必要な機能を明確にすることができました。

### 5.実装すべき機能の優先順位決め
一度にすべての機能を実装するのは大変困難なため、機能の優先順位を決めました。
ここで改めて要件定義を行いました。
詳細についていは以下に添付した画像を参照していただければと思いますが、行った手順を記します。
①実装すべき機能を記述
②必須要件(1校舎における最初に目指したい機能)を決める
③優先要件(1校舎において実用的に使うための最低機能)を決める
④任意要件(複数校舎での使用・現時間割で行う作業を全てカバーするのに必要な機能)を決める
⑤非機能要件を決める

FigJamを使用
![スクリーンショット 2024-08-13 16.05.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/2bdf4ea5-1653-a78d-4430-d14e07149dc4.png)

### 6.データ要素の特定
要件定義をベースにデータ要素の特定を行いました。
データ要素については別の記事を参照してください。
「講師」「生徒」「時間割」の3つのエンティティに分類しそれぞれに必要と思われるアトリビュートを記述しました。
その後以下の画像をChat-GPT4oに送信し、不足する要素とver1.0、ver1.2でそれぞれ実装していきたい機能を伝え、不足があれば追加し、ER図のカーディナリティとリレーションシップを生成させました。

データ要素の特定の画像
![スクリーンショット 2024-08-13 16.11.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/4fd08b94-9cd0-0ba0-f6c5-448e1ae48625.png)

GPTにプロンプトした時の内容
![スクリーンショット 2024-08-13 16.12.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/9775feed-a7d0-0f08-4de3-29c8d2396eeb.png)

GPTの回答①
![スクリーンショット 2024-08-13 16.13.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/ca4ff903-0272-6848-d9f8-b168e7790c76.png)

GPTの回答②
![スクリーンショット 2024-08-13 16.14.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/4e6e10ae-54a5-cd0c-bc28-37f41fceefda.png)

GPTの回答③
![スクリーンショット 2024-08-13 16.15.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/efaece1b-5d2b-d9df-77b7-e652a9f4315a.png)

### 7.GPTの回答をもとに情報を追加・修正し精度を上げていく
何度か生成を繰り返すことで、不足していた点に気づくことができたり、不要な点を鮮明にできました。
また、この過程を経て自分の中でER図のイメージが明確になっていきました。

### 8.Mermaid形式でER図を生成させる
GPTに生成させ必要な情報がすべて揃った段階で次のように命令しました。
![スクリーンショット 2024-08-13 16.19.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/7f56c921-0e84-e79f-685b-ee3a86fbe292.png)

GPTの回答として、Mermaid形式で生成してくれたので、それに日本語表記を追加させました。
この段階でGPTの使用は一時終了です。

### 9.VScordのプラグインでMermaid形式のERを図に変換
まずVScordで以下の2つのプラグインをインストールしました。
・Markdown Preview Mermaid Support(コードをもとにプレビューを表示する)
・Mermaid Markdown Syntax Highlighting(コードを着色し可読性をあげる)

そして「.md」という拡張子のファイルを作成しました。
VScord画面右上のプレビューマークをクリックしプレビューを表示しておきます。
ここからはコーディングです。
まずは以下の記述し、その中にGPTが生成したMermaid形式のERをコピペします。
```
```mermaid
erDiagram
ここにコードを書いていきます。
```
結果は以下の画像の通りです。
![スクリーンショット 2024-08-13 16.24.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3842446/e43b6e84-6dc9-cc80-0186-e90e2fa10654.png)

これでER図の完成です。