2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Prisma しか知らなかったけど、Drizzle っていう ORM があるらしいよ

2
Last updated at Posted at 2025-12-17

これまで ORM と言えば Prisma と思っていましたが、当然他にも選択肢があるわけで、先日 Drizzle というのがあることを知りました。

Prisma と Drizzle の特徴を理解するためのインプットの機会としたいと思います!

検討する際の一助だと捉えていただけますと幸いです。

Prisma と Drizzle の基本的な違い

Prisma

  • マイグレーションツールが組み込みで、prisma migrate で簡単
  • 型安全性、自動補完が強力
  • GUI(Prisma Studio)でデータ確認できる
  • .prisma ファイルの学習が必要ではあるが、ドキュメントが充実しトータルで学習コストが低い
  • バンドルサイズが大きく、複雑な SQL クエリが書きにくい

Drizzle

  • ドキュメントは充足してないが、TypeScript でスキーマを定義できる(TypeScriptネイティブ)
  • バンドルサイズが小さく、複雑なクエリも書きやすい
  • 生 SQL の知識がそのまま活かせる
  • Prisma より覚えることが多い
  • Prisma Studio みたいな便利ツールが少ない

Prisma と Drizzle のコード比較

Prisma

schema.prisma
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

  // クエリ
const users = await prisma.user.findMany({
  where: { email: { contains: '@example.com' } },
  include: { posts: true }
})

普段書いている言語とは少し書き方が異なるので、とっつきにくさはあるかもしれません。

Drizzle

schema.ts
export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  email: text('email').unique(),
  name: text('name'),
})

// クエリ
const users = await db
  .select()
  .from(users)
  .where(like(users.email, '%@example.com%'))
  .leftJoin(posts, eq(posts.userId, users.id))

Drizzle の方が馴染みのある書き方です。少し zod に似た記述方法である印象を受けます。

Prisma と Drizzle どっちを選ぶべきか

Prisma を選ぶべき場合

  • チーム開発で統一された開発体験が欲しい
  • マイグレーション管理を簡単にしたい
  • 学習コストを抑えたい
  • 素早くプロトタイプ作りたい

Drizzle を選ぶべき場合

  • Edge ランタイム(Cloudflare Workers等)で使う
  • パフォーマンスを最優先にしたい
  • 複雑な SQL クエリが必要
  • バンドルサイズを小さくしたい

最近のトレンドとしては、「Edge コンピューティングの普及」「Next.js App Router との相性の良さ」「パフォーマンス志向」という点で Drizzle が人気のようです。

フレームワーク別の推奨まとめ表

フレームワーク 推奨 理由
Next.js App Router Drizzle Edge 対応、軽量
Remix Drizzle Loader パターン、Edge
Astro Drizzle SSG/SSR、軽量
Hono Drizzle Edge 専用

どのフレームワークを利用するのでも、 Edge での動作を考えると軽量である Drizzle の方が良さそうです。

まとめ

Drizzle を知って Edge 環境での動作を優先するなら良さそうだと思います。
反面、TypeScript の知識でスキーマを定義できますが、 SQL の知識が前提となっている部分は導入のハードルになりそうだと感じます。

個人開発であれば、Vercel や Cloudflare を利用することも多いかと思うので Drizzle を利用するのは良さそうかと思います。

とはいえ、大規模でチームのメンバーが多いなどの状況によっては Prisma を選択した方が良い印象です。

一見 Drizzle の方が良いかと思いましたが、現時点で長期的な運用という観点で判断すれば Prisma の方が実装例も世の中的にもソリューションが多くあるため選択時にはその点も考慮したいと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?