ER図作成とコードファースト(migrate)に GitHub Copilot を活用する

設計書に ChatGPT を使うシリーズの続き。

以下の手法は、ChatGPT 上でも可能ですが、Visual Studio Code 上で Github Copilot を使ったほうが便利です。現在、自分は ChatGPT と Github Copilot に二重に課金をしている状態なのですが(執筆の関係上というのもあるけど)、通常の開発者ならば Github Copilot だけで十分かもしれません。

テーブル定義(create table)から ER 図を作成する

いわゆる DDL(create table の定義)から、ER 図を作成できる。テーブル作成自体は SQL Server Managerment Studio とか MySQL Workbeanch とかを使っても構わない。この手のツールでは、create table をダンプする機能があるので、それを使ってSQL文を書けばよい。あるいは、手書きでもかまわない。

実際に 10 個程度のテーブルが書いてある。この最後の行当たりで、次のプロンプトを書く。

「これらのテーブルから ER 図を書いて」

これを ChatGPT でやると「ER図のツールがあれば、云々」と文句を言が「mermaid形式で書いて」と頼むと、素直に以下のように erDiagram で書いてくれる。mermaid 形式は、markdown 形式を使って図を書くフォーマットである。

この前後に、「“`mermaid」を入れると、プレビューで ER 図を表示できる。

これを手作業で直しても良いし、そのまま仕様書に貼り付けても良い。

Laravel の migrete を作る

同時に、Laravel の migrate も作ってしまう。

php artisan make:migration create_products_table

このように database/migrations の下にファイルができるようにする。

migrate ファイルに該当する create table の SQL を貼り付けて選択状態にする。

プロンプトで「createに直して」で十分である。手作業で直すよりも圧倒的に早いし、created_at と updated_at を timestamps() に変換してくれる。softDeletes() のほうはたまに失敗するので、手作業で直すとか、何度か生成させればよい。

注意:softDeletes() にすると、deleted_at か is_delete になるので、厳密にしたい場合は指定したほうがいいかも

ChatGPT だと、関連するコードを貼り付けたり言語をしていしないといけないが( ChatGPT のデフォルト言語が Python なので、Python コードが最初に出力されてしまう)、VSCode 上の GitHub Copilot だと、拡張子や前後のコードから判断してくれるらしく、かなりスムーズにコードが生成されることがわかる。

参考先

https://github.com/moonmile/h2w-traning-2024/tree/master/src/laravel/webapi の ER.md あたりを参考にしてください。

カテゴリー: 開発 パーマリンク