Prisma ORM に新しいプレビュー機能が導入されることをお知らせします。それは、Prisma スキーマを複数のファイルに整理する機能です。プロジェクトでの実装方法、ベストプラクティス、および実践的な例については、サンプルプロジェクトをご覧ください。
更新 (2025年6月): この機能はv6.7.0で一般提供されました。今後は
previewFeatures
に含める必要はありません。ドキュメントで詳細をご確認ください。
長い道のりでしたが、Prisma ORM 5.15.0 でついに Prisma スキーマで複数のファイルを使用する機能が導入されました。これにより、データベーススキーマの管理性と整理が向上し、大規模なプロジェクトでの作業が容易になることを目指しています。最も要望の多かった機能の1つとして、prismaSchemaFolder
プレビュー機能を試していただき、GitHubでご意見をお聞かせいただければ幸いです。皆様からの継続的なフィードバックが、このような機能の提供に役立ちます!
複数ファイル対応 Prisma スキーマ プレビュー機能に含まれるもの
新しい prismaSchemaFolder
プレビュー機能により、prisma
ディレクトリの schema
サブディレクトリに複数のファイルを定義できます。Prisma がファイルの結合を処理するため、1つのファイルでモデルを定義し、それを他のスキーマファイルでインポートすることなく使用できます。また、Prisma Visual Studio Code 拡張機能も更新され、「定義へ移動」や存在チェックを含む複数スキーマファイルの処理に対応しました。
Prisma スキーマを複数のファイルに分割する方法
まず、prisma
と @prisma/client
が少なくとも 5.15.0 に更新されていることを確認してください。また、IDE でこれらのアップデートを利用するには、Prisma VSCode 拡張機能の最新バージョン (5.15.0) が必要です。
Prisma スキーマを複数のファイルに分割するには、まず generator
の previewFeatures
フィールドに prismaSchemaFolder
プレビュー機能を含めることで、これを有効にします。
次に、prisma
ディレクトリの下に schema
サブディレクトリを作成します。既存の schema.prisma
をこのディレクトリに移動できます。
これで、schema
ディレクトリに追加のファイルを作成できるようになりました!すべてのモデルはすべてのファイルで参照できるため、リレーションは次のようにファイルをまたぐことができます
prisma generate
を実行すると、すべてのスキーマファイルが結合されるため、ワークフローは通常通り継続されます。validate
や format
などの他の Prisma CLI コマンドも、複数ファイル対応の Prisma スキーマで動作するように更新されています。
複数ファイルスキーマを使用する場合
プロジェクトが成長するにつれて、単一ファイルの Prisma スキーマは、効果的に管理するには大きすぎるという点に達することがあると聞いています。この機能は、次の場合にすぐにメリットが得られます。
- 複雑なスキーマを持っている場合:スキーマに大きなモデルや複雑なリレーションがある場合、関連するモデルを別のファイルに配置することで、スキーマの理解とナビゲートが容易になります。
- 大規模なチームを抱えている場合:単一の Prisma スキーマファイルがあり、多くの開発者がコミットしている場合、日中にかなり煩わしいマージ競合に遭遇する可能性があります。大規模なスキーマを複数のファイルに分割することで、この問題を軽減できます。
複数ファイル対応 Prisma スキーマのヒント
この機能でうまく機能し、最大限に活用するのに役立ついくつかのパターンが見つかりました
- ドメイン別にファイルを整理する:関連するモデルを同じファイルにグループ化します。たとえば、ユーザー関連のすべてのモデルは
user.prisma
に保持し、投稿関連のモデルはpost.prisma
に配置します。「何でもあり」のスキーマファイルは避けるようにしてください。 - 明確な命名規則を使用する:スキーマファイルは明確かつ簡潔に命名する必要があります。
user.prisma
やpost.prisma
のような名前を使用し、myModels.prisma
やCommentFeaturesSchema.prisma
のような名前は避けてください。 - 明らかな「メイン」スキーマファイルを持つ:スキーマファイルはいくつでも持つことができますが、
datasource
およびgenerator
ブロックを定義する場所は必要です。これらのブロックを簡単に見つけられるように、明らかに「メイン」となる単一のスキーマファイルを持つことをお勧めします。main.prisma
、schema.prisma
、base.prisma
は、うまく機能することが確認されている例です。
サンプルプロジェクト
この機能が実際のプロジェクトでどのように見えるかを確認したい場合は、お気に入りの OSS プロジェクトの1つである dub.co の dub のフォークをご覧ください!
フィードバックをお待ちしております!
この新機能についてのご意見をお聞かせください。専用の GitHub ディスカッションにコメントすることで、フィードバックや発生した問題をご共有いただけます。
次の投稿をお見逃しなく!
Prisma ニュースレターに登録する