📆

Laravel+MUI+React+TypeScriptに入門する[3]

2022/12/01に公開

ドキュメント作成(前半)

DB定義書とER図

まずはDBに接続してみよう。DBの設定は.envに書いてある。

※ポート番号が被ってしまい、環境構築が上手くいかなかった場合は13306でポートを開放しているかもしれない。

DB仕様書は好きな手順で作ってよい。

A5Mk-2には、DB定義書とER図をテーブルから自動生成する機能があるので、今回はそれを使っていく。Laravelにはマイグレーションファイルという、RDBMS非依存でDBを生成するためのソースコードを書くことができる神機能があるが…その書き方をイチから勉強するのはめんどい。

そこで下記の手順を踏む。

  1. GUIでテーブルをポチポチつくる
  2. 作ったテーブルからマイグレーションファイルを自動生成する
  3. DB仕様書とER図を生成する

HeidiSQLでDBに接続する

DB名(back)を右クリックしてテーブルを作成する

テーブル名を決めて、カラムを追加して、保存ボタンを押したいところだが、
先に注意事項がある。

テーブルやカラムの命名などの規則について

下記の記事を参照にしてほしい。Laravel側が指定してくる。

https://syoblog.com/laravel-db-name/
https://syachiku.net/laravel-coding-rule/

記事にもある通り、テーブル名はスネークケースの複数形。カラム名もスネークケース。そして、登録日時(created_at)、更新日時(updated_at)のカラム名指定がある。

Laravelに慣れている人なら、これに従わずとも問題ないが、初学者は気を付けて欲しい。

テーブル作成

まずは他のテーブルに依存しないテーブルからポチポチ作る。今回はidとnameだけで良さそうだ。マメな人はコメントにカラムの説明を書いたりしても良い。

コンテンツテーブル

ジャンルテーブル

都道府県テーブル

※全てのテーブルにはidをPRIMARY KEYとして設定する。テーブルのインデックスタブから追加を押下し、タイプをPRIMARY KEYにした後、右クリックからカラムを追加し、idカラムを指定する。

次にユーザテーブルだ。都道府県テーブルを外部キー制約として指定する。

最後に楽曲テーブル。ジャンルとユーザID、コンテンツIDは外部キー制約をかける。

※これらのカラムの長さは結構テキトーである。

ドキュメント生成

  1. ER図

A5Mk-2でDBに接続する。

フォントや紙の大きさ等を指定して、ER図のリバース生成を実行する。テーブルは全選択で良い。

できあがった汚いER図…

手動で整理する。もっといいER図の作り方(無料)がこの世界にはあるかもしれない

ファイル > PDF出力でPDFを出力できる

  1. DB定義書

HTMLでもEXCELでも出力できる。

マイグレーションファイルの生成

  1. DockerのLaravelコンテナのCLIを開く

  2. 下記コマンドを実行する

composer require "kitloong/laravel-migrations-generator"
php artisan  migrate:generate

こんな感じになれば成功。

うわ、マジでちゃんと生成されてるわ…!(驚愕)

マイグレーションファイルの書き方を調べなくても、手で作成したDBから自動生成できるのは画期的。DB定義書やER図もほぼ自動で出来るのも最高。今後も勉強コストやドキュメント作成・管理コストも可能な限り減らしたい。

今回、必要性を感じないため、ユースケース図やシーケンス図は作成しない。
しかしユーザ、管理者のような複数の権限が存在していたり、ステータスが刻一刻変化するデータが存在していたりする場合はこれらを作るべきだろう。

……ロールやステータスが大量に存在し、大量のテーブルがあったのに、なぜか外部キー制約をひとつもかけておらず、ER図もなかった悲惨な大規模案件のことを思い出す。新卒だった自分にできることは多くはなかったが、ドキュメントの大切さを学ぶ良い機会になった。

優秀なエンジニアはたくさんいたのに、どうしてドキュメントを疎かにしてしまったのだろうか。炎上したときこそ、開発の手を止めて、ドキュメントを手入れしなければならない。ドキュメント管理は全く容易ではないが、少なくともDB定義書、ER図、クラス図などは、DBやソースコードから生成できることは覚えておきたい。

次回はAPI仕様書と画面遷移図を作成していく。

Discussion