Prismaを使って基礎的なバックエンド環境を構築する方法を解説します。本記事では、コンテナ化されたPostgreSQLを使用した例を解説します。
本記事で扱う技術とバージョンは以下です。
- Node: v22.11.0
- typescript:v5.7.2
- @types/node:v22.10.2
- dotenv:v16.4.7
- Docker:v27.3.1
- M3 MacbookAir
Prismaの環境準備だよ!
また、Node.jsとDockerは事前にインストール済みであることを前提に解説します。
1. プロジェクトの初期化とパッケージインストール
最初にPrismaのインストールおよび初期化を実施します。
# プロジェクト作成
mkdir samplePrj
cd samplePrj
# Prismaクライアントとdotenvのインストール
npm i prisma @prisma/client dotenv
# Prisma初期化
npx prisma init
Prismaの初期化により、prisma
ディレクトリが作成され、schema.prisma
が生成されます。
2. DB構築
Docker Composeを使ってコンテナ化されたPostgreSQLを構築します。
# docker-compose.ymlを作成
touch docker-compose.yml
docker-compose.yml
services:
db:
image: postgres
container_name: test_db
volumes:
- db-data:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
db-data:
docker-compose.yml
を作成したら、以下のコマンドでDBを起動します。-d をつけてバックグラウンド実行でも大丈夫です。
# test_dbコンテナを実行
docker compose up
3. テーブル設定
Prismaのスキーマファイルでテーブルを定義します。ここではサンプルとしてUser, Postモデルを定義します。
schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
4. 環境情報定義
.env
ファイルで環境変数を定義します。
# .envファイルを作成
touch .env
.env
# POSTGRES
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="任意のパスワード"
POSTGRES_DB="任意のデータベース名"
DATABASE_URL="postgresql://postgres:任意のパスワード@localhost:5432/任意のデータベース名?schema=public"
備考: コンテナ環境ではlocalhost
ではなく、コンテナ名(この場合はtest_db)を使用する場合があります。環境によって設定を調整してください。
5. マイグレーション実行
Prismaのコマンドでマイグレーションを実行し、DBにテーブルを生成します。
# マイグレーション実行
npx prisma migrate dev --name init
# テーブルが作成されているか確認
docker exec -it test_db bash
su - postgres
psql
\l
\c test_db
\dt
6. [おまけ] Prismaクライアントの呼び出し方
Prismaクライアントをコード上で実装する方法の一例を、TypeScriptのコードで以下に示します。
src/prismaClient.ts
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient({ log: ["query", "info", "warn", "error"] });
export default prisma;
このクライアントを利用することで、DB操作を簡単に行えます。
まとめ
この記事では、Prismaを使ったバックエンド開発の基本手順を解説しました。
- 必要なパッケージのインストールと初期化
- DockerでPostgreSQL環境を構築
- Prismaスキーマの設定とマイグレーションの実行
- Prismaクライアントを使ったデータ操作方法
Prismaを活用することで、型安全で効率的なデータベース操作が可能になります。この手順を参考に、さらにCRUD機能やAPIの構築に挑戦してみてください!
コメント