昨年6月にPrisma 2.0の最初のプレビュー版を発表しました。本日、新しいウェブサイトと更新されたPrisma 2.0ドキュメントとともに、最初の正式なベータ版をリリースできることを嬉しく思います。
更新: Prismaは本番環境に対応しました。詳細については、発表記事をご覧ください: Node.js & TypeScriptのための完全なORM。

目次
- Prisma Client 2.0によるモダンなデータベースアクセス
- このリリースに含まれるものは?
prisma2
リポジトリをprisma
にリネームprisma2
CLIのリネーム- 現在Prisma 1を使用していますが、どうすればよいですか?
- Prisma 2.0を試してフィードバックを共有する
要約
- Prisma 2.0のベータ版が利用可能になりました。新しいウェブサイトとドキュメントにより、Prismaをはじめる新規開発者にとってデフォルトとなりました。
- Prisma 2.0は主にPrisma Clientで構成されており、これはNode.jsおよびTypeScript用の自動生成されたタイプセーフなクエリビルダーです。Prisma Migrateは実験的とされています。
prisma/prisma2
リポジトリはprisma/prisma
にリネームされました(そして、以前のPrisma 1リポジトリであるprisma/prisma
リポジトリはprisma/prisma1
と呼ばれるようになりました)。
新しいドキュメントにあるクイックスタートに従って、5分で新しいPrisma Clientを試してみてください。
Prisma Client 2.0によるモダンなデータベースアクセス
新しいバージョンのPrisma Clientは、Node.jsおよびTypeScript用のモダンなデータベースアクセスライブラリです。従来のORMやSQLクエリビルダーの代替として、データベース内のデータを読み書きするために使用できます。
セットアップするには、Prismaスキーマファイルが必要で、Prisma Clientをプロジェクトの依存関係として追加する必要があります。
Prisma Clientは、あらゆるNode.jsまたはTypeScriptのバックエンドアプリケーション(サーバーレスアプリケーションやマイクロサービスを含む)で使用できます。これは、REST API、GraphQL API、gRPC API、またはデータベースを必要とするその他のものでも構いません。
データベースでより生産的になる
Prisma Clientの主な目標は、データベースを扱う際のアプリケーション開発者の生産性を向上させることです。これは、プレーンなJavaScriptオブジェクトを返すクリーンなデータアクセスAPIを提供することで実現されます。
このアプローチにより、データベースクエリに関する推論が簡単になり、予測可能で(かつタイプセーフな)クエリ結果に対する信頼性が高まります。Prisma Clientが提供する主な利点をいくつか紹介します。
- ドキュメントを参照する必要がなく、コードエディタで自動補完
- リレーショナルデータをマッピングする代わりに、オブジェクトで考える
- コンパイル時に検証可能なタイプセーフなデータベースクエリ
- データベースとアプリケーションモデルの単一の真実の源
- 一般的な落とし穴やアンチパターンを防ぐ健全な制約
- 正しいことを簡単にする抽象化(「成功の落とし穴」)
- 複雑なモデルオブジェクトを避けるためのクラスではなくクエリ
- 開発者がアプリの重要な部分に集中できるようにボイラープレートを削減
Prismaが開発者の生産性をどのように向上させるかについては、「はじめに」で詳しく学ぶか、ウェブサイトのコード例をチェックしてPrisma Client APIを体験してください。
「スマートな」Nodeモジュール 🤓
@prisma/client
モジュールは、「従来の」Nodeモジュールとは異なります。従来のNodeモジュール(例: lodash
)では、パッケージ全体がnode_modules
ディレクトリにダウンロードされ、パッケージを再インストールしたときにのみ更新されます。
@prisma/client
Nodeモジュールは異なります。これは、機能コードを含まない「ファサードパッケージ」(基本的にはスタブ)です。
一度npm install @prisma/client
でインストールする必要はありますが、アプリケーションの開発を進めるにつれて、node_modules/@prisma/client
ディレクトリ内のコードはより頻繁に変化する可能性があります。これは、Prismaスキーマに変更を加えるたびにPrisma Clientを再生成する必要があり、それによって@prisma/client
Nodeモジュール内のコードが更新されるためです。
node_modules/@prisma/client
ディレクトリには、あなたのプロジェクトに合わせたコードが含まれているため、「スマートなNodeモジュール」と呼ばれることがあります。
プレーンなJavaScriptでも自動補完とタイプセーフの恩恵
自動補完は開発者にとって非常に強力なツールです。ドキュメントを参照する代わりに、エディタ内で直接APIを探索できます。Prisma Clientは、データベースクエリに自動補完機能をもたらします!
@prisma/client
モジュールのindex.d.ts
に含まれるPrisma Clientの生成された型のおかげで、この機能はTypeScript開発者だけでなく、プレーンなJavaScriptでアプリケーションを開発する場合でも利用できます。
部分的なデータベースクエリのタイプセーフ
他のORMやデータベースツールと比較したPrisma Clientの大きな利点は、完全なタイプセーフティを提供することです。これは、「部分的な」データベースクエリ(つまり、モデルのフィールドのサブセットのみをクエリする場合やリレーションを含める場合)でも同様です。
例として、このPrisma Clientクエリを考えてみましょう(対応するPrismaモデルを表示するにはタブを切り替えてください)。
結果として得られるusersWithPartialPosts
は、次のように静的に型付けされることに注意してください。
これは、タイプミスをしたり、データベースから要求されていないプロパティに誤ってアクセスしたりした場合に、TypeScriptがエラーを検出することを意味します!
はじめに
Prisma Clientを始めるには、ドキュメントのクイックスタートに従うのが一番です。
クイックスタート(5分)
または、以下も可能です。
このリリースに含まれるものは?
Prisma 2.0ベータ版には以下のツールが含まれています。
- Prisma Client: Node.js & TypeScript用の自動生成されたタイプセーフなクエリビルダー
- Prisma Migrate(実験的): 宣言的スキーマ移行ツール
- Prisma Studio(実験的): データベース内のデータを表示・編集するためのGUI
新しいドキュメントにあるクイックスタートに従って、5分で新しいPrisma Clientを試してみてください。
注: ベータ版リリースの詳細については、リリースノートをご覧ください。
prisma2
リポジトリをprisma
にリネーム
最初のリリース以来、Prisma 2.0のメインリポジトリはprisma2
と呼ばれていました。
Prisma 2.0がPrismaを始める開発者にとってデフォルトとなったため、Prismaのリポジトリは次のように変更されました。
prisma/prisma2
リポジトリはprisma/prisma
にリネームされました。prisma/prisma
リポジトリはprisma/prisma1
にリネームされました。
prisma2
CLIのリネーム
プレビュー期間中、Prisma 2.0のCLIはprisma2
コマンドを使用して呼び出されていました。Prisma 2.0がPrismaを始める新規開発者にとってデフォルトとなるため、コマンドは単にprisma
に変更されます。既存のPrisma 1のprisma
コマンドはprisma1
にリネームされます。
また、npmパッケージのインストール方法も変更されることに注意してください。
prisma2
prisma
prisma2
@prisma/cli
1.Xprisma
prisma1
prisma
prisma1
現在のPrisma 1ユーザーへの注意点
現在prisma
コマンドでPrisma 1を使用している場合、以前と同じように使い続けることができます。Prisma 2.0にアップグレードしたい場合は、現在のprisma
インストールをアンインストールし、必要なプロジェクトに新しいCLIバージョンをローカルでインストールすることをお勧めします。
prisma2
npmパッケージは非推奨になりました
prisma2
npmパッケージは現在非推奨です。インストール時の混乱を防ぐため、インストールしようとすると以下のメッセージが出力されます。
現在Prisma 1を使用していますが、どうすればよいですか?
まず、既存のPrisma 1ユーザーの皆様に心から感謝申し上げます!🙏 GitHubとSlackで形成された、協力的で活発なコミュニティに深く感謝しています!
Prisma 2.0とPrisma 1の比較
Prisma 2.0にはPrisma 1と比較して多くの変更点があります。以下に主な違いの概要を示します。
- Prisma 2.0は、データベースプロキシサーバー(つまり、Prismaサーバー)のホスティングを必要としません。
- Prisma 2.0はもはや「データベース用のGraphQL API」を公開せず、Prisma Client APIを介したプログラムによるアクセスのみを許可します。
- Prisma 2.0はPrisma 1の機能をよりモジュール化し、専用ツールに分割しています。
- Prisma Client: Prisma client 1.0の改良版
- Prisma Migrate: データモデリングとマイグレーション(旧
prisma deploy
)。
- より強力なイントロスペクションにより、Prisma 2.0を既存のあらゆるデータベースに接続できます。
- Prisma 1のデータモデルと
prisma.yml
はPrismaスキーマに統合されました。 - Prisma 2.0はGraphQL SDLに基づくのではなく、独自のモデリング言語を使用しています。
- Prismaを使用してGraphQLサーバーを構築するには、Nexusまたはお好みのGraphQLライブラリを使用できます。
Prisma 1のドキュメントにアクセスするには?
Prisma 1の特定のバージョンのドキュメントにアクセスし続けるには、https://prisma.dokyumento.jp/docs
にバージョン番号を追加します。たとえば、Prismaバージョン1.34のドキュメントを表示するには、https://v1.prisma.io/docs/1.34/
にアクセスしてください。
Prisma 1の例は、prisma1-examples
リポジトリに移動されました。
アップグレードすべきか?
アップグレードすべきかどうかは、プロジェクトの状況によります。一般的に、主要な考慮事項の1つは、Prisma Migrateがまだ実験段階であるという事実です。これは、データベーススキーマへの将来の調整は、SQLまたは別のマイグレーションツールを使用して行う必要がある可能性が高いことを意味します。
また、今後数週間でアップグレードプロセス用のアップグレードガイドと専用ツールをまとめる予定であることにも注意してください。したがって、Prisma Migrateが準備できていないにもかかわらずアップグレードしたい場合は、これらのリソースが整うまで待つ価値があるかもしれません。
Prisma 1とPrisma client、nexus-prisma
を使用しています。アップグレードすべきですか?
Prisma 1とnexus-prisma
で動作しているプロジェクトをPrisma 2.0にアップグレードすることは確かに可能です。
アップグレードを決定した場合、Prisma 2.0にアップグレードした後にデータベーススキーマを変更するには、SQLまたはサードパーティのマイグレーションツールでマイグレーションを実行する必要があることに注意してください。また、Prisma 2.0でnexus-prisma
APIが変更されることにも注意してください。
以下は、アップグレードに必要な手順の概要です。
- プロジェクトにPrisma 2.0 CLIをインストールします:
npm install @prisma/cli --save-dev
- Prisma 1データベースを指す
datasource
を含むPrismaスキーマを作成します。 - Prisma 1データベースをイントロスペクトしてデータモデルを取得します:
npx prisma introspect
- Prisma Client npmパッケージをインストールします:
npm install @prisma/client
- Prisma Client JSを生成します:
npx prisma generate
nexus-prisma
の最新バージョンにアップグレードし、リゾルバーを調整します。
注: データベースの認証情報は、Prismaサーバーのデプロイに使用したDocker Composeファイルで見つけることができます。これらの認証情報は、Prisma 2.0の接続URLを作成するために必要です。
Prisma 1とPrisma client(nexus-prisma
なし)を使用しています。アップグレードすべきですか?
Prisma 1で動作しているプロジェクトをアップグレードすることは確かに可能です。
アップグレードを決定した場合、Prisma 2.0にアップグレードした後にデータベーススキーマを変更するには、SQLまたはサードパーティのマイグレーションツールでマイグレーションを実行する必要があることに注意してください。以下に、アップグレードに必要な手順の概要を示します。
- プロジェクトディレクトリに移動します
- プロジェクトにPrisma 2.0 CLIをインストールします:
npm install @prisma/cli --save-dev
- Prisma 1データベースを指す
datasource
を含むPrismaスキーマを作成します。 - Prisma 1データベースをイントロスペクトしてデータモデルを取得します:
npx prisma introspect
- Prisma Client npmパッケージをインストールします:
npm install @prisma/client
- Prisma Client JSを生成します:
npx prisma generate
- Prisma client 1.0の以前の使用箇所を新しいPrisma Client 2.0に更新します。
注: データベースの認証情報は、Prismaサーバーのデプロイに使用したDocker Composeファイルで見つけることができます。これらの認証情報は、Prisma 2.0の接続URLを作成するために必要です。
Prisma 1とprisma-binding
を使用しています。アップグレードすべきですか?
Prisma 1とprisma-binding
で動作しているプロジェクトをPrisma 2.0にアップグレードすることは確かに可能です。
アップグレードを決定した場合、Prisma 2.0にアップグレードした後にデータベーススキーマを変更するには、SQLまたはサードパーティのマイグレーションツールでマイグレーションを実行する必要があることに注意してください。
また、Prisma 2.0ではGraphQLリゾルバーの実装方法が変更されることにも注意してください。Prisma 2.0はデータベース用のGraphQL APIを公開しないため、prisma-binding
npmパッケージはもう使用できません。これは主にリレーションの実装に関係しており、これらのリゾルバーは今後は型レベルで実装する必要があります。この理由の詳細については、GraphQLスキーマの基本に関するこの記事を必ず読んでください。
以下は、アップグレードに必要な手順の概要です。
- プロジェクトにPrisma 2.0 CLIをインストールします:
npm install @prisma/cli --save-dev
- Prisma 1データベースを指す
datasource
を含むPrismaスキーマを作成します。 - Prisma 1データベースをイントロスペクトしてデータモデルを取得します:
npx prisma introspect
- Prisma Client npmパッケージをインストールします:
npm install @prisma/client
- Prisma Client JSを生成します:
npx prisma generate
- リゾルバーを調整して、
prisma-binding
の代わりにPrisma Clientを使用するようにします。
コードファーストアプローチに切り替えたい場合は、GraphQL Nexusをチェックしてください。
注: データベースの認証情報は、Prismaサーバーのデプロイに使用したDocker Composeファイルで見つけることができます。これらの認証情報は、Prisma 2.0の接続URLを作成するために必要です。
Prisma 2.0を試してフィードバックを共有する
ついにPrisma 2.0のベータ版を共有できることを非常に嬉しく思います。皆様がこれで何を構築するのか、楽しみでなりません。
Prisma 2.0を始める
フィードバック、アイデアの共有、機能リクエスト、バグ報告をしたい場合は、GitHubの(リネームされた)prisma
リポジトリで行い、Prisma Slackの(リネームされた)#prisma2-beta
チャンネルに参加してください!
次の投稿をお見逃しなく!
Prismaニュースレターに登録