Drizzle ORMとは

Drizzle ORMは、TypeScriptと完全に統合されたシンプルで型安全なデータベース操作を提供するオブジェクトリレーショナルマッパー(ORM)です。TypeScriptの型付けと、クエリビルダーの柔軟性が組み合わさった設計により、開発者が安全かつ効率的にデータベース操作を行うことができます。このORMは、シンプルなインストール手順でPostgreSQLやMySQL、SQLiteなど主要なデータベースに対応している点も特徴です。

必要な準備

Drizzle ORMを始めるには、まず以下のステップに従い準備を行います。

インストール

以下のコマンドでDrizzle ORMとその依存パッケージをインストールします。

npm install drizzle-orm drizzle-kit

これにより、Drizzleのコアライブラリと、マイグレーションやクエリビルダーなどをサポートする「drizzle-kit」ツールがインストールされます。

データベース接続のセットアップ

Drizzleでは、PostgreSQL、MySQL、SQLiteなどの接続に対応しています。以下の手順では、PostgreSQLを例にとって接続設定を行います。

import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
const sql = postgres('postgres://username:password@localhost:5432/database');
const db = drizzle(sql);

この例では、postgres関数を使ってデータベースに接続し、drizzle関数でDBインスタンスを生成しています。TypeScript環境でも、型安全にデータベースへアクセスできるようになります。

データベーススキーマの定義

Drizzleでは、テーブルやフィールドを型安全に定義するため、スキーマをTypeScriptのコードで管理します。以下の例は、usersテーブルのスキーマ定義です。

import { integer, pgTable, serial, text, varchar } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  name: varchar('name', { length: 255 }).notNull(),
  age: integer('age').notNull(),
  bio: text('bio'),
});

このように、Drizzle ORMのpgTable関数を使うことで、テーブルとカラムの構造をTypeScriptで直感的に記述できます。これにより、エラーを未然に防ぎつつ、開発を進めることが可能です。

CRUD操作の基本

Drizzle ORMを使えば、簡単にCRUD(作成、読み取り、更新、削除)操作を実行できます。以下に、基本的なクエリ操作の例を示します。

レコードの挿入

新しいユーザーのレコードを挿入するには、insertメソッドを使います。

await db.insert(users).values({
  name: 'Taro',
  age: 30,
  bio: 'こんにちは、私はTaroです。',
});

このコードは、usersテーブルに名前や年齢などの情報を持つ新しいレコードを追加します。

レコードの読み取り

特定の条件に一致するレコードを取得するには、selectメソッドを利用します。

const result = await db.select().from(users).where(users.name.eq('Taro'));
console.log(result);

この例では、nameTaroであるユーザーを検索して、その結果を表示しています。

レコードの更新

既存のレコードを更新する場合には、updateメソッドを用います。

await db.update(users).set({ age: 31 }).where(users.name.eq('Taro'));

このコードは、nameTaroであるユーザーの年齢を31に更新します。

レコードの削除

指定した条件に一致するレコードを削除するには、deleteメソッドを使用します。

await db.delete(users).where(users.name.eq('Taro'));

この例は、nameTaroであるユーザーを削除します。

マイグレーションの管理

Drizzle ORMでは、マイグレーション機能を使ってデータベーススキーマの変更を管理することが可能です。以下に、マイグレーションの生成と実行の基本的な流れを紹介します。

マイグレーションの生成

新しいマイグレーションを作成するためには、drizzle-kitを使います。

npx drizzle-kit generate

このコマンドにより、新しいマイグレーションファイルが生成され、必要な変更がコードとして記述されます。

マイグレーションの実行

生成されたマイグレーションを適用するには、次のコマンドを使用します。

npx drizzle-kit migrate

これで、データベースのスキーマが最新の状態に更新され、変更が適用されます。

まとめ

Drizzle ORMは、TypeScriptに特化した型安全なデータベース管理を提供し、シンプルなセットアップで始められるのが魅力です。スキーマ定義、CRUD操作、マイグレーションといった機能が充実しており、複雑なクエリもTypeScriptの恩恵を受けながら効率的に記述できます。これにより、エラーが少なく、読みやすいコードを実現できます。