Prismaについて考える
概要
少しPrismaを試す機会があり、面白そうだったので所感や意見についてメモを残しておきます 生産性の高さ
型安全にクエリを記述でき、IDEなどによる補完の恩恵も受けやすい シンプルかつ直感的なAPI
これはとてもいい機能だと思っています
各種プラットフォームとの連携
多言語サポート
競合
また、タイプセーフにクエリを記述しやすい点においてはPrismaの方が勝っていると思います クエリビルダー
逆に課題として感じたこと
スキーマの抽象化について
短期的に考えると、Prismaのスキーマの抽象化機能は生産性などにプラスに働くことは多いと思います。 ただ、長期的な運用を考えた際に、RDBMSが提供する行レベルセキュリティやトリガーなどの有用な機能が抽象化によって活用しにくくなってしまうのではないかというのは個人的に懸念として感じました。 個人的な好みとしては、スキーマ管理はあまり抽象化したくないというのもあります
そのため、RDBMSの機能を積極的に活用したいケースでは、マイグレーションについてはPrismaに乗っからず、別のツールで管理するというのも手段としてあるのかもしれません。 複雑なビジネス/ドメインロジックの実装
Prismaではこれらのどちらのパターンも実装されていません そのため、ドメイン/ビジネスロジックをどこに実装していくべきかは利用者側で考える必要が出てきそうです。
チュートリアル通りに素直にPrismaで実装しようとすると、ドメインモデル貧血症に陥るケースが考えられます (ただしドメインがシンプルなケースにおいては、これは大きな問題にはなりません) 個人的な意見・感想
Prismaは以下のようなケースにおいて非常に使い勝手が良いのではないかと思いました。 とにかく素早く動くものを作りたい/試したい場合
ビジネスロジックはBFFではなく背後のマイクロサービスなどで実装する BFFのレイヤーでは基本的にシンプルなクエリしか投げない 一つ一つのFunctionがシンプルな実装でおさまるケースにおいては課題として挙げたことは対して問題にはならないはず
むしろPrismaが背後のDBの詳細について抽象化してくれることで、素早く開発や検証が行いやすくなりそうで、この分野ではとても使いやすいのではないかと思いました いくつか課題に感じたことはあげたものの、Prismaの開発やコミュニティは非常に活発な印象を受けていて、今後様々な機能などが追加されていく可能性も高いと思います。エコシステムやコミュニティが活発であれば、なにかしらの問題があったとしても将来的には改善される可能性が高いと思われます。 リンク