2018年9月11日

Prisma Client (プレビュー版): シンプルでタイプセーフなデータベースアクセス

Prismaクライアントは、Prismaバインディングの代替としてアプリケーションのデータにアクセスするために使用できる自動生成ライブラリです。JavaScript、TypeScript、Flow、Goで利用できます。

Prisma Client (Preview): Simplified & Type-safe Database Access

⚠️ この記事は古くなっています。これは、現在非推奨となっているPrisma 1に関するものです。Prismaの最新バージョンについては、ドキュメンテーションをお読みください。⚠️

Prismaクライアント: Prismaバインディングの次の進化

PrismaはあなたのデータベースをGraphQL APIに変換します。このGraphQL APIは通常、フロントエンドアプリケーションによって直接消費されるのではなく、アプリケーションサーバーでのデータアクセスを簡素化するためのデータベース抽象化として使用されます(ORMに似ています)。

PrismaでGraphQLサーバーを実装する際、GraphQLサーバーのリゾルバーはPrismaバインディングスキーマデリゲーションを使用してPrisma APIに接続します。

スキーマデリゲーションは、(infoオブジェクトを使用して)着信リクエストを別のGraphQL APIに転送することでリゾルバーを実装する高度な方法です。

スキーマデリゲーションは強力でエレガントな概念ですが、高度なユースケースに最適です。Prismaをより柔軟で使いやすくするために、アプリケーションでPrismaのAPIを消費する新しい方法、Prismaクライアントを導入します。


Evolution of Prisma bindings


より多くのユースケース: GraphQLサーバー、REST APIなどの構築

新しいPrismaクライアントは、Prismaバインディングと同様の目的を果たしますが、3つの大きな違いがあります。

  • PrismaバインディングはGraphQLサーバー向けに設計されていますが、Prismaクライアントはより柔軟で、REST API、CLI、スクリプトなど、より多くのユースケースで使用できます。
  • PrismaクライアントはPrismaツールチェーンの不可欠な部分です。prisma.ymlで設定され、Prisma CLIで生成されます。
  • Prismaクライアントはさまざまな言語で利用可能です。今日のプレビューリリースでは、JavaScript、TypeScript、Flow、Goで利用できます!

GraphQLサーバーでPrismaバインディングを使い続けることはできますか?

Prismaバインディングは、基盤となるPrisma APIにデリゲートすることでGraphQLリゾルバーを実装するための強力な方法であり続けています。現在のユースケースでPrismaバインディングがうまく機能している場合、新しいPrismaクライアントを使用するために実装を変更する必要はありません。


Prismaクライアントの生成

Prismaクライアントは、Prisma APIに接続するライブラリです。これはPrismaデータモデルに基づいて自動生成されるため、すべてのAPI操作とデータ構造を認識しています。

Prismaクライアントを生成するには、2つのことを行う必要があります。

  1. prisma.ymlに新しいgenerateプロパティを指定します(例:)
  1. Prisma CLIで新しいprisma generateコマンドを実行します。prisma.ymlとデータモデルから情報を読み取り、Prismaクライアントを生成します。これはPrisma 1.17-beta以降でのみ機能することに注意してください。

上記のコードはTypeScriptでクライアントを生成する方法を示しています。JavaScript、Flow、Goの場合は、generatorjavascript-clientflow-clientgo-clientの値をそれぞれ使用できます。

PrismaクライアントAPIの使用

PrismaクライアントAPIは、データモデルに基づいて生成され、各モデルのCRUD操作を公開します。

以下のすべてのコード例は、下記のデータモデルに基づいています。

新しいPrismaクライアントAPIの完全なドキュメンテーションはこちらで確認できます。

Prismaクライアントインスタンスのインポート

生成後、Prismaクライアントインスタンスをコードにインポートできます。

データの読み取り

Prismaバインディングはすべてのクエリをqueryフィールドを介して公開しますが、生成されたPrismaクライアントではクエリを直接呼び出すことができます。

これは、返されたUserオブジェクトのすべてのスカラフィールドを返します。リレーションは、メソッドチェーン(fluent APIとも呼ばれます)を使用してエレガントにクエリできます。

上記のコードスニペットは、Prisma APIへの単一のリクエストに帰着し、Prismaの強力なクエリエンジンによってデータベースに対して解決されることに注意してください。

新しいPrismaクライアントAPIを使用しても、ネストされたデータをクエリするためにGraphQLを使用したり、高度なユースケースでスキーマデリゲーションを使用したりすることは可能です。

その他の例はドキュメンテーションを参照してください。

データの書き込み

クエリと同様に、ミューテーションもPrismaクライアントのトップレベルで公開されます。

複数の書き込み操作を単一のトランザクションで実行することもできます。

その他の例はドキュメンテーションを参照してください。

ボイラープレートなし: コード生成による型安全性

Prismaクライアントの主要な利点の1つは型安全性です。型安全性は生産性を高め、保守性を向上させ、リファクタリングを容易にし、優れた開発者体験をもたらします。

型安全なデータアクセスには、多くの手作業、ボイラープレートコードの記述、冗長な型定義が必要です。Prismaクライアントはコード生成を活用して、データモデルとクエリにカスタム型を提供します。


Prismaクライアントを試す

Prismaクライアントについてさらに学ぶには、新しいexamplesリポジトリをチェックするか、「Get Started」チュートリアルに従ってください。Slackでご意見をお聞かせください🙌



始める

次の投稿もお見逃しなく!

Prismaニュースレターに登録する

© 2025 prisma.dokyumento.jp. All rights reserved.