Drizzle は『SQL ライク + 型安全』の現代的 ORM
Drizzle は SQL ライクな書き方で型推論をフルに活かす ORM で、Cloudflare Workers 等の Edge 環境で人気急上昇です。本記事では編集部の視点で、深掘りした使い方を公開情報をもとに整理します。Prisma vs Drizzle もご参考に。
Drizzle の哲学
(1) SQL ファースト:抽象化最小。(2) 型推論を徹底活用。(3) 軽量バンドル:Edge 向け。(4) schema 駆動:1ファイルで定義。(5) ランタイム依存最小。
スキーマ定義
(1) pgTable/mysqlTable/sqliteTable。(2) カラム型:text/integer/timestamp 等。(3) relations:別ファイルで定義可。(4) indexes/unique constraints。(5) enum 等の特殊型。
クエリの書き方
(1) db.select().from().where():基本。(2) relational queries:with 句で。(3) SQL ライクな書き方。(4) 型推論:結果型まで自動。(5) raw SQL:必要時に使える。TypeScript 上級 もご参考に。
マイグレーション
(1) drizzle-kit generate:差分生成。(2) drizzle-kit migrate:適用。(3) drizzle-kit studio:GUI。(4) drizzle-kit push:開発時の直接反映。(5) 本番安全性:手動レビュー必須。
Edge 環境での活用
(1) Cloudflare D1:SQLite ベース。(2) Cloudflare Workers + Drizzle。(3) Vercel Edge Functions。(4) Neon HTTP driver:サーバーレス Postgres。(5) Bundle size:1MB 以下が現実的。CDN/Edge 実践 もご参考に。
連携エコシステム
(1) Hono:エッジで一体運用。(2) Next.js:Server Components で。(3) tRPC:型同期。(4) Zod:バリデーション。(5) Auth.js:認証。Hono 実践 もご参考に。
失敗しがちなパターン
(1) N+1 を生む relational queries。(2) 接続プール管理ミス。(3) マイグレーション差分巨大。(4) 型推論超複雑化:tsc 遅い。(5) raw SQL でエスケープ忘れ。対策は、(1)JOIN 明示、(2)edge は HTTP driver、(3)小さい単位、(4)型分割、(5)パラメータ化、です。