生成AI「だけ」で作る 〜第二弾: DB設計やれよ〜

に公開

はじめに

株式会社ソニックムーブのmito1111です。

前回の記事でTodoアプリケーションのSwaggerをAIに作らせましたが、今回はそのアプリケーションで使うDBを設計させてみようと思います。

アプリケーションはNext.jsで実装させる予定なので、今回はその環境構築とPrismaでのDB設計などをやってもらいます。

具体的な流れとして、以下を考えています。

  1. Node.js/Next.jsプロジェクト初期化
  2. Prismaインストール・セットアップ
  3. Prisma DBスキーマ実装
  4. DockerでのDB永続化
  5. Prisma DBマイグレーション

使用するモデルは引き続きGitHub Copilotのclaude-sonnet-4モデルを使います。

最近はClaudeモデルが下火になってはいますが、検証の意味も込めてこちらを採用してます。


条件

基本的に前提条件などは第一弾と同じです。新たに使用するアプリケーションは↓ です。

開発環境条件

【表】開発環境条件
アプリケーション・ランタイム系 バージョン 用途 備考
TablePlus 6.7.0 DBクライアント (DBへの接続を行う)
PNPM 10.15.1 Node.jsパッケージマネージャー Next.js・Prismaコマンドの実行を担う。ちなみにstable版はv9である。ノリで使っている
Docker 27.4.0 DBコンテナ構築 ローカル・テストDB永続化
Docker Compose 2.31.0 DBコンテナ構築 ローカル・テストDB永続化
asdf 0.18.0 言語・ランタイムマネージャー Node.js・PNPMを管理

実際の流れ

1. Node.js/Next.jsプロジェクト初期化

まずはPrismaを使いたいこともあり、Node.jsとPNPMでNext.jsプロジェクトを初期化します。

今回は前回作成したSwaggerのAPIレスポンスを参考にテーブル設計をやりたいので、作成したプロジェクトにSwaggerをコピーさせます。

前回作成したSwaggerのフルパスは伏せています。

【コード】入力プロンプトその1
input-prompt-1.md
> カレントディレクトリにNext.jsプロジェクトtodo_appを作成したい。
> 以下の要件を全て満たすように作成すること。
> 
> 1. asdfを用いてNode.js 24.0.1がカレントディレクトリ以下で有効になるようにしてほしい。
> 2. asdfを用いてPNPM 10.15.1がカレントディレクトリ以下で有効になるようにしてほしい。
> 3. PNPMを用いてNext.jsプロジェクトをtodo_appという名前で作成して欲しい。
> 4. Next.jsの依存関係として、TypeScript・TailwindCSSをPNPMを用いてインストールしてほしい。
> 5. プロジェクト作成後、直下にdocsディレクトリを作成し、<前回作成したSwaggerフルパス>をtodo_app_swagger.ymlとしてそこにコピーして欲しい。

Claudeモデルによって作成されたtodo_appプロジェクトは以下のようになりました。

ちなみに依存関係としてインストールされたNext.js/Reactはstable版ではなく、latest版になっています。

今回は影響がなさそうなので、Claudeが生成した内容をそのまま使っています。

【コード】作成したNext.jsプロジェクト構成 (一部省略)
output-prompt-1.md
 .
├──  .tool-versions
└──  todo_app
    ├──  .env.local
    ├──  .env.testing
    ├──  .gitignore
    ├──  .next
    ├──  docs
    │   └──  todo_app_swagger.yml
    ├──  next-env.d.ts
    ├──  next.config.ts
    ├──  package.json
    ├──  pnpm-lock.yaml
    ├──  postcss.config.mjs
    ├──  public
    ├──  README.md
    ├── 󱧼 src
    │   └──  app
    │       ├──  favicon.ico
    │       ├──  globals.css
    │       ├──  layout.tsx
    │       └──  page.tsx
    └──  tsconfig.json

2. Prismaインストール・セットアップ

次にtodo_appプロジェクトにPNPMを用いてPrismaとその依存関係をインストールします。

prisma initコマンドの初期化コマンド結果として.envが生成されますが、今回はローカル・テストDBの二つを作成するため、

.env.env.local.env.testingの二つになるように処理させます。

Prismaコマンドでのマイグレーションなどを環境ごとに分けたいため、env-cmdを使って実行できるようpackage.jsonscriptsに処理を追加させます。

【コード】入力プロンプトその2
input-prompt-2.md
> カレントディレクトリのNext.jsプロジェクトにPrismaの依存関係をインストールしたい。
> 以下の要件を満たすように処理を行ってほしい。
> 
> 1. PNPMを用いてPrismaとその依存関係をインストールする。
> 2. PNPMを用いてPrismaの初期化を行ってほしい。DBはMySQLを利用するように設定して欲しい。
> 3. 2を行ったのち、.envファイルがカレントディレクトリに作成されるが、それをコピーして.env.localと.env.testingを作成して欲しい。作成後は元の.envを削除して構わない。
> 4. PNPMを用いてenv-cmdをdev-dependancyとしてインストールしてほしい。
> 5. package.jsonのscriptsにpnpmとenv-cmdとprismaコマンドを用いて、.env.localを読み込んでローカル環境のマイグレーション・ロールバック処理を実装してほしい。
> 6. 5と同様にして、.env.testingを読み込んでテスト環境のマイグレーション・ロールバック処理を実装してほしい。ただしローカル環境と異なり、generateとseedはskipするようにしてほしい。

結果として、MySQL版の.env.local.env.testing、接続情報だけのschema.prismaが生成されました。

package.jsonには指示通り、env-cmdpnpmを用いたPrismaの各種コマンドが追加されていました。

後述するDBマイグレーションでは、ここで作成したコマンドを実行します。

【コード】作成したNext.jsプロジェクト構成 (一部省略、Prismaディレクトリ追加)
output-prompt-2.md
 .
├──  .tool-versions
└──  todo_app
    ├──  .env.local --> 追加
    ├──  .env.testing --> 追加
    ├──  .gitignore
    ├──  .next
    ├──  docs
    │   └──  todo_app_swagger.yml
    ├──  next-env.d.ts
    ├──  next.config.ts
    ├──  package.json
    ├──  pnpm-lock.yaml
    ├──  postcss.config.mjs
    ├──  prisma
    │   └──  schema.prisma --> 追加
    ├──  public
    ├──  README.md
    ├── 󱧼 src
    │   └──  app
    └──  tsconfig.json
【コード】DBマイグレーション処理を追加したpackage.json
todo_app/package.json
{
  "name": "todo_app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "db:migrate:local": "env-cmd -f .env.local pnpm prisma migrate dev",
    "db:reset:local": "env-cmd -f .env.local pnpm prisma migrate reset",
    "db:generate:local": "env-cmd -f .env.local pnpm prisma generate",
    "db:seed:local": "env-cmd -f .env.local pnpm prisma db seed",
    "db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate dev --skip-generate --skip-seed",
    "db:reset:test": "env-cmd -f .env.testing pnpm prisma migrate reset --skip-generate --skip-seed"
  },
  "dependencies": {
    "@prisma/client": "^6.15.0",
    "next": "15.5.2",
    "prisma": "^6.15.0",
    "react": "19.1.0",
    "react-dom": "19.1.0"
  },
  "devDependencies": {
    "@tailwindcss/postcss": "^4",
    "@types/node": "^20",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "env-cmd": "^11.0.0",
    "tailwindcss": "^4",
    "typescript": "^5"
  }
}

3. Prisma DBスキーマ実装

Prismaのセットアップが完了したので、生成したschema.prismaにDBテーブル設計を追加していきます。

先述の通り、前回作成したSwaggerの内容を考慮して生成させるため、プロンプトではSwaggerの内容を事前に把握させます。

【コード】入力プロンプトその3
input-prompt-3.md
> docs/todo_app_swagger.ymlの内容を把握し、記載されているAPIレスポンス内容を簡単にレポートしてほしい。

次にその内容を考慮に入れてPrisma DBスキーマを生成するように命令します。

今回はSwaggerで定義された単体取得 (GET: /todos/{id}) のレスポンス内容を参考に設計させています。

【コード】参考にしたSwagger APIレスポンス (単体取得API)
todo_app/docs/todo_app_swagger.yml
components:
  schemas:
    Todo:
      type: object
      required:
        - id
        - isPublic
        - title
        - description
        - createdAt
        - updatedAt
      additionalProperties: false
      properties:
        id:
          type: integer
          minimum: 1
          description: Todoタスクの一意識別子
          examples:
            - 1
        isPublic:
          type: boolean
          description: Todoタスクの公開ステータス
          examples:
            - true
        title:
          type: string
          description: Todoタスクのタイトル
          maxLength: 100
          minLength: 1
          examples:
            - "API仕様書の作成"
        description:
          type: string
          description: Todoタスクの詳細説明
          maxLength: 1000
          minLength: 1
          examples:
            - "Todo APIの包括的なAPI仕様書を作成する"
        createdAt:
          type: string
          format: date-time
          description: Todoタスクが作成された日時
          examples:
            - "2023-12-01T10:00:00Z"
        updatedAt:
          type: string
          format: date-time
          description: Todoタスクが最後に更新された日時
          examples:
            - "2023-12-01T10:00:00Z"
【コード】入力プロンプトその4
input-prompt-4.md
> prisma/schema.prismaについて、把握したdocs/todo_app_swagger.ymlの単体取得APIレスポンス内容を参考に、Todoデータテーブルを追加して欲しい。
> その際に以下の点を準拠すること。
> 
> 1. テーブル名はTodoとすること。
> 2. 各種カラムはAPIレスポンスに準拠する。
> 3. idは整数値でオートインクリメントする。
> 4. isPublicのデフォルト値はtrueとすること。
> 5. createdAt・updatedAtのデフォルト時間はMySQL DB時間に設定して欲しい。
> 6. Todoテーブルスキーマでは、@mapを用いてテーブル名は複数形・スネークケース、各種カラムは単数系・スネークケースにすること。

スキーマを追加したschema.prismaは以下のようになりました。

【コード】todo_app/prisma/schema.prisma
todo_app/prisma/schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model Todo {
  id          Int      @id @default(autoincrement()) @map("id")
  isPublic    Boolean  @default(true) @map("is_public")
  title       String   @db.VarChar(100) @map("title")
  description String   @db.VarChar(1000) @map("description")
  createdAt   DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp(0) @map("created_at")
  updatedAt   DateTime @default(dbgenerated("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")) @db.Timestamp(0) @map("updated_at")

  @@map("todos")
}

4. DockerでのDB永続化

TodoアプリケーションのDBスキーマが完成したので、次にこのDBテーブルを永続化させたいと思います。

今回はDockerでMySQLコンテナを作成し、ローカル用・テスト用のDBを構築します。

4-1. Docker Compose YAMLの生成

先にDocker Compose設定をやってもらいます。ここがかなり調整に時間がかかった感じあります。

DB設定情報は以下にまとめています。

テスト用DBは同じローカルと同じMySQLコンテナ内に作成し、Docker Entrypointのinit.sqlで作成します。

今回はDBのポートを3307にしていますが、これは今3306を別途で使用しているため、この措置を行っています。3306が使える場合は変更しなくても大丈夫です。

【表】各種環境ごとのDB設定
環境変数 ローカルDB テストDB
DB_HOST localhost localhost
DB_PORT 3307 3307
DB_NAME todo_app_local todo_app_testing
DB_USER app app
DB_PASSWORD app app

プロンプトでは、Docker Compose設定YAML (compose.yml) を作成し、流れでEntrypointファイル (init.sql) も作成してもらいます。

また作成したDocker Compose設定がベストプラクティスかどうかも検証し、足りない処理は追記してもらいます。

【コード】入力プロンプトその5
input-prompt-5.md
> schema.prisma用のMySQLコンテナをDocker Composeで作成したい。
> 以下の要件を満たすDocker Compose設定をcompose.ymlとして出力してほしい。
> 
> 1. サービス名はmysqlとし、コンテナイメージはmysql:8.0、コンテナ名はtodo-app-dbとする。
> 2. MySQLルートユーザー名はroot、MySQLルートパスワードはrootとする。
> 3. MySQLユーザー名はapp、MySQLパスワードはappとする。また接続するDB名はtodo_app_localとする。
> 4. 接続ポートでは3306を使わずに3307を解放し、MySQLのTCPポートとして3307を使用する。
> 5. MySQLのタイムゾーンとして、日本時間になるように設定して欲しい。
> 6. カレントディレクトリにopsディレクトリを作成し、MySQLコンテナのDB永続化ディレクトリdb-data、Docker Entrypointとなるinit.sqlを作成して欲しい。
> 7. 5で作成するinit.sqlでは、まずtodo_app_testing DBがない場合作成し、その後appユーザーについて、全てのDB全ての権限を付与する処理を実装してほしい。
> 8. Dockerのベストプラクティスを満たしているかを確認し、不足している内容を追記してほしい。

今回生成した内容は以下のようになりました。

compose.ymlinit.sqlは以下のように生成されました。

思ったよりcompose.ymlが初めより多く修正されましたが、単純にDockerコンテナを起動するだけならここまでしなくても大丈夫です。

compose.ymlでコメントがついている部分は後付けでClaudeに修正された内容なので、その部分は削除しても動きます (port3307:3307で動きます)。

【コード】Docker関連のディレクトリ構成 (一部省略)
output-prompt-5.md
 .
├──  .tool-versions
├──  compose.yml --> 追加
├──  ops
│   ├──  db-data --> MySQLコンテナのDBを永続化
│   ├──  init.sql --> Entrypoint
│   └──  mysql-config --> 外部の別設定があれば使用 (今回は使わない)
└──  todo_app
【コード】生成したcompose.yml
compose.yml
services:
  mysql:
    image: mysql:8.0
    container_name: todo-app-db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
      MYSQL_DATABASE: todo_app_local
      MYSQL_USER: app
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-app}
      MYSQL_TCP_PORT: 3307
      TZ: Asia/Tokyo
      # セキュリティ設定
      MYSQL_ROOT_HOST: localhost
      # パフォーマンス設定
      MYSQL_INNODB_BUFFER_POOL_SIZE: 256M
      MYSQL_MAX_CONNECTIONS: 100
    ports:
      - "127.0.0.1:3307:3307"  # セキュリティ: localhostのみでバインド
    volumes:
      - ./ops/db-data:/var/lib/mysql
      - ./ops/init.sql:/docker-entrypoint-initdb.d/init.sql
      - ./ops/mysql-config:/etc/mysql/conf.d  # 設定ファイル用
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --default-authentication-plugin=mysql_native_password
      - --innodb-buffer-pool-size=256M
      - --max-connections=100
      - --slow-query-log=1
      - --slow-query-log-file=/var/log/mysql/slow.log
      - --long-query-time=2
      - --log-error=/var/log/mysql/error.log
      - --general-log=0
      - --bind-address=0.0.0.0
    restart: unless-stopped
    # ヘルスチェック
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "app", "-p${MYSQL_PASSWORD:-app}"]
      timeout: 20s
      retries: 10
      interval: 30s
      start_period: 40s
    # リソース制限
    deploy:
      resources:
        limits:
          memory: 512M
          cpus: '0.5'
        reservations:
          memory: 256M
          cpus: '0.25'
    # ログ設定
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

【コード】Docker Entrypoint SQL
ops/init.sql
-- テスト用データベースの作成
CREATE DATABASE IF NOT EXISTS todo_app_testing;

-- appユーザーに全てのデータベース権限を付与
GRANT ALL PRIVILEGES ON *.* TO 'app'@'%';

-- 権限の反映
FLUSH PRIVILEGES;

4-2. Docker Compose操作用Makefile

次にDockerコンテナを操作するためのMakefileを作成します。

これはpackage.jsonscriptsに追記してもいいと思いますが、自分のバックエンド開発経験上あると便利なので作成させています。

別に作らなくてもコマンドでやればいいと思います。

【コード】入力プロンプトその6
input-prompt-6.md
> composer.ymlについて、以下のDocker処理を実現するMakefileを実装してほしい。
> 
> 1. compose.ymlの全てのDockerコンテナをバックグラウンド起動
> 2. compose.ymlの全てのDockerコンテナについて、再起動
> 3. compose.ymlの全てのDockerコンテナについて、変更差分を反映
> 4. 全てのDockerコンテナについて、イメージやキャッシュを削除した上で全て削除する

生成されたMakefileは以下のようになりました。

make helpでヘルプ表示までしてくれてるので、思ってたよりいい感じに仕上がりました。

【コード】Docker Compose操作用Makefile
Makefile
.PHONY: up restart rebuild clean help

# compose.ymlの全てのDockerコンテナをバックグラウンド起動
up:
	@echo "Starting all Docker containers in background..."
	docker compose up -d

# compose.ymlの全てのDockerコンテナについて、再起動
restart:
	@echo "Restarting all Docker containers..."
	docker compose restart

# compose.ymlの全てのDockerコンテナについて、変更差分を反映
rebuild:
	@echo "Rebuilding and updating all Docker containers..."
	docker compose down
	docker compose up -d --build

# 全てのDockerコンテナについて、イメージやキャッシュを削除した上で全て削除する
clean:
	@echo "Stopping and removing all containers, images, and volumes..."
	docker compose down --volumes --remove-orphans
	docker system prune -af
	@echo "All Docker containers, images, and caches have been removed."

# ヘルプ表示
help:
	@echo "Available commands:"
	@echo "  up       - Start all Docker containers in background"
	@echo "  restart  - Restart all Docker containers"
	@echo "  rebuild  - Stop, rebuild, and start all containers with changes"
	@echo "  clean    - Remove all containers, images, volumes, and caches"
	@echo "  help     - Show this help message"

4-3. Prisma設定変更

最後にMySQLコンテナとPrismaを接続させるため、.env.local.env.testingDATABASE_URLを修正してもらいます。

prisma initでデフォルト作成される.envDATABASE_URLでは、ホスト以外が適当に作成されていたので、それ以外の部分を全て適したものに修正します。

【コード】元々の.env
.env
DATABASE_URL="mysql://username:password@localhost:3306/db_name"
【コード】入力プロンプトその7
input-prompt-7.md
> composer.ymlで定義したMySQLコンテナとPrismaを連携させるため、
> todo_app/.env.localとtodo_app/.env.testingのDATABASE_URLを修正してほしい。
> 以下の点に準拠して修正すること。
> 
> 1. .env.localでは、DBユーザー名をapp、DBパスワードをapp、ポートを3307、DB名をtodo_app_localとする。
> 2. .env.testingでは、DBユーザー名をapp、DBパスワードをapp、ポートを3307、DB名をtodo_app_testingとする。

修正後の各種.envは以下のようになりました。

【コード】Claudeに修正してもらった各種.envファイル
todo_app/.env.local
DATABASE_URL="mysql://app:app@localhost:3307/todo_app_local"
todo_app/.env.testing
DATABASE_URL="mysql://app:app@localhost:3307/todo_app_testing"

5. Prisma DBマイグレーション

MySQLコンテナとPrisma連携準備ができたので、いよいよPrismaのマイグレーションを実行します。

ここからはプロンプトでやるほどではないので、手動でコマンド実行します。

5-1. ローカルDBマイグレーション

先にDockerコンテナを起動し、その後pnpm db:migrate:localをプロジェクト直下で実行します。

またPrismaマイグレーションディレクトリの名前は初回なので、initとします (CLIコマンド上でも指定できます)。

【コード】pnpm db:migrate:localの結果
ローカル環境マイグレーション結果.txt
> todo_app@0.1.0 db:migrate:local /xxxxxx/todo_app
> env-cmd -f .env.local pnpm prisma migrate dev

Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "todo_app_local" at "localhost:3307"

✔ Enter a name for the new migration: … init
Applying migration `20250909081849_init`

The following migration(s) have been created and applied from new schema changes:

prisma/migrations/
  └─ 20250909081849_init/
    └─ migration.sql

Your database is now in sync with your schema.

✔ Generated Prisma Client (v6.15.0) to ./node_modules/.pnpm/@prisma+client@6.15.0_prisma@6.15.0_typescript@5.9.2__typescript@5.9.2/node_modules/@prisma/client in 45ms

5-2. テストDBマイグレーション

pnpm db:migrate:testでも同様の結果になりますが、マイグレーションファイルをinitとは別に作成してしまいます。

どうせならローカル環境用マイグレーション履歴をそのまま転用したいです。

Claudeにとりあえず方法があるか聞いてみます。

【コード】入力プロンプトその8
input-prompt-8.md
> todo_appプロジェクトでpackage.jsonのpnpm db:migrate:localを用いて、ローカルDBをマイグレーションし成功した。
> 
> テストDBではローカルDBのマイグレーション履歴をインポートし、個別にマイグレーションをせずともDBを構築できるようにしたい。
> 
> その方法があれば提案して欲しい。

得られた推奨方法としてprisma migrate deployをテスト用DBに適用する方法があるようでした。

つまりはprisma migrate devはローカルでのみ実行し、生成されるprisma/migrationsのSQL処理だけをテストDBに反映するという感じでした。

これならテストDBのマイグレーションで履歴が増えることはなさそうです。

これくらいなら手動で直したほうが早いので、自分で直してます。

【コード】todo_app/package.json
todo_app/package.json
{
  "name": "todo_app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "db:migrate:local": "env-cmd -f .env.local pnpm prisma migrate dev",
    "db:reset:local": "env-cmd -f .env.local pnpm prisma migrate reset",
    "db:generate:local": "env-cmd -f .env.local pnpm prisma generate",
    "db:seed:local": "env-cmd -f .env.local pnpm prisma db seed",
-    "db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate dev --skip-generate --skip-seed",
+    "db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate deploy",
    "db:reset:test": "env-cmd -f .env.testing pnpm prisma migrate reset --skip-generate --skip-seed",
  },
  "dependencies": {
    "@prisma/client": "^6.15.0",
    "next": "15.5.2",
    "prisma": "^6.15.0",
    "react": "19.1.0",
    "react-dom": "19.1.0"
  },
  "devDependencies": {
    "@tailwindcss/postcss": "^4",
    "@types/node": "^20",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "env-cmd": "^11.0.0",
    "tailwindcss": "^4",
    "typescript": "^5"
  }
}

package.json修正後に実行したpnpm db:migrate:testの結果は以下のようになりました。

マイグレーション履歴の入力が要求されなくなり、少し処理が楽になった感じがあります。

【コード】pnpm db:migrate:testの結果
ローカル環境マイグレーション結果.txt
> todo_app@0.1.0 db:migrate:test /Users/xxxxx/todo_app
> env-cmd -f .env.testing pnpm prisma migrate deploy

Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "todo_app_testing" at "localhost:3307"

1 migration found in prisma/migrations


No pending migrations to apply.

5-3. ちゃんとマイグレーションできてるか

TablePlusでそれぞれのDBでTodoテーブルが作成されているか確認してみました。

いずれの方法でもテーブルの存在確認ができているので、成功です。

【図】各種DB可視化 (TablePlusを使用。上段: ローカルDB、下段: テストDB)

ローカルDB

テストDB


最後に

今回はSwaggerに引き続き、PrismaでのDB設計をAIだけでやってみました。

Prismaを使ったマイグレーションやDockerの設定などは、自分が経験したことをそのままプロンプトにしているため、

特に技術的な新鮮さはありませんが、使い方次第で楽にテーブル設計できそうな感じがしました。

ただしセキュリティなど重要な部分を担う処理では、AIに任せるべきではなく、自分自身で実装した方が安全です

また今回はSwaggerを元にDB設計をやるというアプローチを試してみましたが、状況によってはかなり楽だなという印象を受けました。

APIレスポンスが必ずしもDBテーブル内容と一致するわけではないので、そういう場合を除き、SwaggerからDB設計まで一元化したフローで開発に臨めることはいい利点になりそうです。

これのおかげなのか、プロンプトが綺麗になってきているのも案外プラスかなと思ってます。

次はいよいよNext.jsで今までの設計を使ってAPIを作らせてみようと思います。

試しにTDDでやってみたいので、できたらまた見てもらえるとありがたいです。

それではまた。

参考文献

株式会社ソニックムーブ

Discussion