Claude CodeでDBマイグレーションを自動化する方法
Claude Codeを使ったデータベースマイグレーションの自動化手法を解説。Prisma・Drizzleでのスキーマ変更からマイグレーション生成までを効率化します。
DBマイグレーションの悩みをClaude Codeで解決
スキーマ変更のたびにマイグレーションファイルを手書きするのは手間がかかり、ミスも起きやすい作業です。Claude Codeを使えば、スキーマの設計変更からマイグレーション生成、シードデータの更新まで一気に対応できます。
Prismaでのマイグレーション
スキーマ設計からマイグレーション実行まで
> Prismaスキーマに以下のテーブルを追加して、マイグレーションを生成・適用して。
>
> テーブル: Order
> - id: UUID, 主キー
> - userId: User への外部キー
> - items: OrderItem[] (1対多)
> - totalAmount: Decimal
> - status: enum (pending, confirmed, shipped, delivered, cancelled)
> - createdAt, updatedAt
Claude Codeが生成するスキーマの例です。
enum OrderStatus {
pending
confirmed
shipped
delivered
cancelled
}
model Order {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
items OrderItem[]
totalAmount Decimal @db.Decimal(10, 2)
status OrderStatus @default(pending)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
@@index([status])
}
model OrderItem {
id String @id @default(uuid())
orderId String
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
productId String
quantity Int
price Decimal @db.Decimal(10, 2)
}
その後、Claude Codeは自動でマイグレーションコマンドを実行します。
npx prisma migrate dev --name add_order_tables
Drizzleでのマイグレーション
Drizzle ORMを使う場合も同様に指示できます。
> Drizzle ORMのスキーマにOrderテーブルを追加して。
> マイグレーションファイルも生成して。
import { pgTable, uuid, decimal, timestamp, pgEnum } from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
import { users } from "./users";
export const orderStatusEnum = pgEnum("order_status", [
"pending", "confirmed", "shipped", "delivered", "cancelled",
]);
export const orders = pgTable("orders", {
id: uuid("id").defaultRandom().primaryKey(),
userId: uuid("user_id").notNull().references(() => users.id),
totalAmount: decimal("total_amount", { precision: 10, scale: 2 }).notNull(),
status: orderStatusEnum("status").default("pending").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const ordersRelations = relations(orders, ({ one, many }) => ({
user: one(users, { fields: [orders.userId], references: [users.id] }),
items: many(orderItems),
}));
既存スキーマの変更
カラム追加やリネームなど、既存テーブルの変更も安全に処理できます。
> users テーブルに以下の変更を加えて。
> - phoneNumber カラムを追加(nullable)
> - name を firstName と lastName に分割
> - 既存データの移行ロジックも含めて
Claude Codeはデータ移行スクリプト付きのマイグレーションを生成します。
-- マイグレーション: split_user_name
ALTER TABLE "users" ADD COLUMN "first_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "last_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "phone_number" VARCHAR(20);
-- 既存データの移行
UPDATE "users"
SET
"first_name" = split_part("name", ' ', 1),
"last_name" = CASE
WHEN array_length(string_to_array("name", ' '), 1) > 1
THEN split_part("name", ' ', 2)
ELSE ''
END;
ALTER TABLE "users" ALTER COLUMN "first_name" SET NOT NULL;
ALTER TABLE "users" ALTER COLUMN "last_name" SET NOT NULL;
ALTER TABLE "users" DROP COLUMN "name";
シードデータの生成
開発用のテストデータも合わせて作れます。
> Order テーブルのシードデータを20件作成して。
> 各ステータスが均等に分布するように。
> リアルなダミーデータにして。
マイグレーションの安全性を確認
> 現在のマイグレーション履歴を確認して、
> 本番適用前に問題がないかチェックして。
> 特にデータ消失リスクのある変更を指摘して。
API開発でのDB連携パターンについてはAPI開発を高速化する方法で解説しています。また、CLAUDE.mdにデータベース関連のルールを書いておくと安全性が向上します。書き方のコツはCLAUDE.mdの書き方完全ガイドを参照してください。
まとめ
Claude Codeを使えば、DBスキーマの設計から変更、マイグレーション生成、シードデータ作成まで一貫して自動化できます。特にデータ移行ロジックを含む複雑なマイグレーションで威力を発揮します。
Prismaの詳しい使い方はPrisma公式ドキュメント、Claude Codeの機能についてはAnthropic公式ドキュメントを参照してください。
無料PDF: Claude Code はじめてのチートシート
まずは無料PDFで基本コマンドと最初の使い方をまとめて確認してください。登録後はそのままテンプレート集や導入相談にも進めます。
スパムは送りません。登録情報は厳重に管理します。
Claude Codeを仕事で使える形にしませんか?
無料PDFで基礎を固めたあと、すぐ使えるテンプレート集で試し、必要なら業務自動化や導入相談まで進められます。
この記事を書いた人
Masa
現役DX室長|Claude Code でゼロから多言語AI技術メディア運営中。実務直結の自動化、AI開発相談・研修受付中。
関連書籍・参考図書
この記事のテーマに関連する書籍を楽天ブックスで探せます。
※ 当サイトは楽天市場のアフィリエイトプログラムに参加しています。上記リンクから商品をご購入いただくと、運営者に紹介料が支払われる場合があります。
関連記事
Claude Codeで多言語記事を毎日公開するための7つのデプロイ前チェック
日本語だけ公開して終わらせないために、Claude Codeで多言語記事を毎日出す前に確認したい7つのチェックを実例つきで整理しました。
Codex AutomationsでAIに毎日のコンテンツ運用を任せる方法
Codex Automationsを使って、アクセス確認、記事改善、CTA改善、デプロイ、公開確認までを毎日の運用フローとして回す方法を解説します。
Claude Code × GCP Cloud Functions 完全ガイド|サーバーレス関数を爆速開発
GCP Cloud FunctionsをClaude Codeで効率化。HTTP/Pub/Sub/Firestoreトリガーの実装からローカルテスト・デプロイ自動化まで、Masaの実務経験をもとに実例コードで解説。