Prisma
公式サイトPrismaとは
Prismaは、TypeScriptやJavaScriptのプログラムからデータベースを操作するためのツールです。データベースの表や項目の構造を専用の定義ファイルに記述し、そこからTypeScriptの型と、データの読み書きを行うコードを自動生成します。項目名の打ち間違いや型の食い違いがコードを実行する前に検出できるため、安全にデータベースを扱えます。構造の変更履歴を管理し、順番に適用する仕組みも備えているため、開発環境と本番環境でデータベースの構造を揃えて運用できます。PostgreSQLやMySQLなど主要なデータベースに対応しています。
弊社が採用する理由
弊社では、Node.jsとTypeScriptでサーバー側を作る案件で、データベースの構造管理とデータ操作にPrismaを採用しています。定義ファイルからTypeScriptの型が生成されるため、Next.jsやFastifyで書くコードとデータベースの構造が常に一致し、項目の追加や変更が影響する箇所を型チェックで洗い出せます。構造の変更履歴を管理する仕組みは、LaravelのマイグレーションをNode.jsの世界で実現するものと考えるとわかりやすく、ステージング環境と本番環境で同じ手順で構造を更新できます。PostgreSQLやSupabase、MySQLと組み合わせており、データベースの種類が変わっても操作のコードを大きく変えずに済む点も利点です。データベースの構造は設計資料そのものでもあるため、定義ファイルを納品物に含めることで、引き継ぎ時の理解を助けています。
向いている案件
- Node.jsとTypeScriptで作るWebアプリケーションのデータベース操作
- データベースの構造変更を安全に管理したいシステム
- 画面からデータベースまで型で一貫させたいプロジェクト
保守・移行の観点
Prismaの更新では、生成されるコードの形や設定の書き方が変わることがあるため、更新後は生成をやり直し、型チェックとテストが通ることを確認します。データベース構造の変更履歴は一度適用したものを書き換えず、新しい変更として追加する運用を徹底すると、環境間の不整合を防げます。本番環境への構造変更はバックアップを取得したうえで実施し、大きなデータを持つ表の変更は事前に所要時間を検証します。複雑な集計処理では生成されたコードより直接SQLを書くほうが適切な場合もあるため、使い分けの方針を残しておくと保守しやすくなります。
組み合わせて使う技術
よくあるご質問
Laravelのシステムでも Prisma を使いますか?
いいえ。Laravelには同じ役割の仕組みが標準で備わっているため、Prismaは Node.js と TypeScript でサーバー側を作る案件で使います。
Prismaで作ったデータベースは他のツールからも読めますか?
はい。Prismaが作るのは通常のPostgreSQLやMySQLのデータベースなので、集計ツールや他の言語のプログラムからもそのまま接続できます。
関連するサービス
関連する開発ガイド
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開