Supabase × Prisma × Next.js × ChatGPT による設計自動化ワークフロー
はじめに
今回は、AIによる設計工程(DB設計/ER図/アーキテクチャ構築) を徹底的に解説します。
ChoreRights / IP Connect では、DB構造・ER図・API構造・RLS(Row Level Security)など、プロダクト設計の中核となる領域も、ほぼすべてChatGPTに任せています。
本記事ではその具体的プロセスを公開します。
なぜ設計工程をAIに任せるのか?
■ 抽象化と構造化が得意
ChatGPTは、要件から「一般的に最適なデータモデル」を導くのが非常に得意です。
■ 要件変更に強い
仕様変更があった場合、
「この差分を踏まえてER図とPrismaを再生成して」
と指示するだけで設計全体が同期されます。
■ 仕様の漏れが発生しにくい
正規化、関係性の整合性、ユースケースとの齟齬を自動で指摘してくれます。
■ 個人開発の速度が飛躍的に向上
設計工程は数時間〜数日必要ですが、AIを使うと 10〜20分で作成 できます。
ChatGPTでDB設計を自動生成する
例として、IP Connect の「音声IPデータ管理」のDB設計プロセスを紹介します。
Step 1:ユースケースを渡す
僕がChatGPTに渡した要件は非常にシンプルです:
音声クリエイターが自身の音声ファイルをアップロードし、
企業側が商用ライセンス契約を行えるようにしたい。
必要なテーブル設計とER図を生成して。
Step 2:AIがテーブル定義と関係性を生成
ChatGPTの出力(要約)は以下です。
主なテーブル:
- users(クリエイター/企業共通)
- voice_assets(音声IP)
- applications(利用申請)
- licenses(契約)
- transactions(支払い)
- organizations(企業)
関係性(例):
- users 1 → N voice_assets
- voice_assets 1 → N applications
- applications 1 → 1 licenses
- licenses 1 → N transactions
ChatGPTがER図まで生成する
ASCII形式のER図例:
users
├── id (PK)
└── name
voice_assets
├── id (PK)
├── user_id (FK → users.id)
└── file_path
applications
├── id (PK)
├── voice_id (FK → voice_assets.id)
└── status
licenses
├── id (PK)
├── application_id (FK → applications.id)
└── license_type
Mermaid形式版:
erDiagram
USERS ||--o{ VOICE_ASSETS : owns
VOICE_ASSETS ||--o{ APPLICATIONS : receives
APPLICATIONS ||--|| LICENSES : grants
PrismaスキーマもAIが生成
プロンプト例:
上記ER図に基づき、Prisma schema を生成して。
PostgreSQLに最適化し、@relationやindexも含めて。
生成例(抜粋):
model VoiceAsset {
id String @id @default(cuid())
userId String
filePath String
createdAt DateTime @default(now())
applications Application[]
user User @relation(fields: [userId], references: [id])
}
model Application {
id String @id @default(cuid())
voiceId String
status String
license License?
voice VoiceAsset @relation(fields: [voiceId], references: [id])
}
model License {
id String @id @default(cuid())
applicationId String
licenseType String
application Application @relation(fields: [applicationId], references: [id])
}
RLS(Row Level Security)もAIが生成
プロンプト例:
voice_assetsテーブルに対して、
・本人のみ閲覧可能
・企業ユーザーは申請中の音声のみ参照可能
となるRLSポリシーをSQLで書いて。
生成例:
create policy "Creators can view own assets"
on voice_assets for select
using (auth.uid() = user_id);
create policy "Organizations can view assets with pending applications"
on voice_assets for select
using (
exists (
select 1 from applications
where applications.voice_id = voice_assets.id
and applications.status = 'pending'
and applications.organization_id = auth.uid()
)
);
アーキテクチャ設計もAIが比較・提案
ChatGPTは以下のような比較軸で表を作り、最適解を出します。
比較軸例:
- Next.js Route Handlers vs BFF構造
- Serverless Functions
- Supabase Edge Functions
- Webストレージ連携のしやすさ
- スループットとコスト
- Web3連携時の利便性
AIの分析により、
「Next.js Route Handler + Supabase」構成が最適
という判断に至りました。
ADR(Architecture Decision Record)もAIが作る
設計の整合性を保つため、ADRもAIに作成させています。
生成例:
# ADR-0003: Use Next.js Route Handlers for API
## Context
The system requires low-latency APIs with simple integration
into Supabase authentication and RLS.
## Decision
Use Next.js Route Handlers instead of a dedicated BFF layer.
## Consequences
+ シンプルな構成
+ 学習コストが低い
- 重いAPI処理はEdge Functionへ移管が必要
構造化された設計文書が自動で揃い、仕様ズレが減ります。
まとめ
AIによるDB設計・ER図生成・アーキテクチャ選定は、
エンジニアリングの「最も認知負荷の高い領域」を大幅に効率化してくれます。
AI × 設計工程の強み:
- 抽象要件 → ER図 → Prisma → Supabase が一気通貫
- 要件変更も即時反映
- セキュリティ(RLS)まで自動化
- ADRで仕様ズレなし
- 個人開発でもチーム開発の速度