「PrismaのRustバイナリが重くてCloudflare Workersに載らない」「型が合わなくてイライラする」「スキーマファイルとTypeScriptを行き来するのが面倒」——TypeScriptでバックエンドを書いている個人開発者なら一度は感じたことがある不満です。

そんな悩みを解決するのが Drizzle ORM です。2022年登場のTypeScript-firstな軽量ORMで、2026年現在は特にエッジ・サーバーレス環境で急速に普及しています。バンドルサイズはわずか280KB(Prismaのクライアント+エンジンが約55MB)、コード生成ステップ不要、そしてSQLがそのまま書けるシンプルさが最大の特徴です。

この記事では、Drizzle ORMの基本概念からCloudflare D1・Supabaseとの実践的な組み合わせ、マイグレーション管理まで、実例コードを交えて徹底解説します。

Drizzle ORMとは?なぜ2026年に注目されるのか

Drizzle ORMは「SQLをそのまま書ける型安全なクエリビルダー」です。公式のキャッチコピーは "If you know SQL, you know Drizzle." ——SQLを知っていれば学習コストがほぼゼロという設計思想です。

Drizzle ORMの主な特徴

  • TypeScript-first:スキーマもクエリも純粋なTypeScript。コード生成ステップが不要
  • 超軽量:バンドルサイズ約280KB。Cloudflare WorkersやDeno Deployでも問題なく動く
  • SQLライクなクエリ.select().from().where() という構文でSQLのメンタルモデルをそのまま使える
  • 完全な型推論:スキーマ定義からクエリ結果の型まで、すべて自動推論。any を一切使わない
  • マルチDB対応:PostgreSQL・MySQL・SQLite(Cloudflare D1含む)・Tursoなど幅広く対応
  • Drizzle Studio:ブラウザベースのGUIでDBを直接操作できる組み込みツール

PrismaとDrizzleの使い分け

観点 Prisma Drizzle
スキーマ .prisma(独自DSL) TypeScript
コード生成 必要(prisma generate) 不要
バンドルサイズ 〜55MB(Rustエンジン含む) 〜280KB
エッジ対応 限定的(Accelerate経由) ✅ ネイティブ対応
クエリスタイル オブジェクト指向API SQLライク
学習コスト 中(独自のAPIを覚える) 低(SQLを知れば即使える)
向いている場面 フルスタックアプリ、チーム開発 エッジ・サーバーレス、個人開発

Cloudflare WorkersやDeno Deployでバックエンドを動かしたい個人開発者には、Drizzle一択といっても過言ではありません。

インストールとプロジェクトセットアップ

インストール

# コアライブラリ + drizzle-kit(マイグレーション管理CLIツール)
npm install drizzle-orm
npm install -D drizzle-kit

# 使うDBドライバに応じて追加
# Cloudflare D1の場合(追加インストール不要、@cloudflare/workers-typesのみ)
npm install -D @cloudflare/workers-types

# PostgreSQL(Supabaseなど)の場合
npm install postgres

# SQLite(ローカル開発・Bun)の場合
npm install better-sqlite3
npm install -D @types/better-sqlite3

drizzle.config.tsの設定

// drizzle.config.ts
import { defineConfig } from 'drizzle-kit';

export default defineConfig({
  schema: './src/schema.ts',   // スキーマ定義ファイル
  out: './drizzle',            // マイグレーションファイルの出力先
  dialect: 'sqlite',           // 使用するDB('postgresql' | 'mysql' | 'sqlite')
  // Cloudflare D1の場合は dialect: 'sqlite' を使う
});

広告

ConoHa WING

初期費用無料の高速クラウドサーバー

最大3,500円還元

詳しく見る →