Skip to content

PrismaをClaude Codeで使いこなす

PrismaはTypeScriptと相性抜群のORMですが、スキーマ設計やマイグレーション管理に慣れるまでは意外と手間がかかります。Claude Codeをうまく活用すれば、その学習コストを大幅に下げられます。具体的な使い方を見ていきましょう。

スキーマ定義をClaude Codeに任せる

Section titled “スキーマ定義をClaude Codeに任せる”

まずはスキーマ設計からです。Claude Codeに対して「ユーザーと投稿記事の1対多のリレーションをPrismaスキーマで書いて」と入力してみましょう。すると以下のような定義を即座に生成してくれます。

model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}

「インデックスを追加したい」「soft deleteに対応させたい」といった追加要件も会話を続けながら反映できます。設計の意図を自然言語で伝えるだけで、スキーマに落とし込んでくれるのが便利です。

インデックス: データベースの検索を高速化するための索引データ。適切に設定しないとクエリが遅くなる。スキーマ: データベースのテーブル構造や型定義のこと。

マイグレーションの手順をサポートしてもらう

Section titled “マイグレーションの手順をサポートしてもらう”

スキーマが固まったら、次はマイグレーションです。「この変更をマイグレーションとして適用する手順を教えて」と聞くと、実行すべきコマンドをステップごとに教えてくれます。

Terminal window
# 開発環境でマイグレーションを作成・適用する
npx prisma migrate dev --name add_post_table
# 本番環境への適用(destructiveな変更がないか確認してから)
npx prisma migrate deploy

さらに「既存データを保持しながらカラムを追加するには?」といった踏み込んだ質問にも答えてくれます。マイグレーションのリスクをあらかじめ把握できるのは大きな安心感につながります。

マイグレーション: データベースのスキーマ(テーブル構造)を安全に変更するための手順書。

クエリ最適化もClaude Codeと一緒に

Section titled “クエリ最適化もClaude Codeと一緒に”

Prismaのクエリはシンプルに書けますが、N+1問題などに気づかないまま使い続けることがあります。「このクエリをN+1にならないように最適化して」とコードを貼り付けるだけで、includeselect を使った改善案を提示してくれます。

// 最適化前(N+1が発生しやすい)
const users = await prisma.user.findMany();
// Claude Codeが提案する最適化後
const users = await prisma.user.findMany({
include: {
posts: {
where: { published: true },
select: { id: true, title: true },
},
},
});

「なぜこの書き方が良いのか」という理由も一緒に説明してくれるため、単なるコードコピーではなく理解を深めながら開発を進められます。Prismaの公式ドキュメントを参照しつつClaude Codeに相談することで、データベース周りの実装をぐっとスムーズに進めていきましょう。