Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Prisma Typed SQLのススメ
Search
Tech Leverages
October 30, 2024
Technology
2
570
Prisma Typed SQLのススメ
2024/10/30 (水) Mita.ts #2
Prisma の Typed SQL の紹介です。
Tech Leverages
October 30, 2024
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
890
リファクタリングいつやるの? 〜依存の整理〜
leveragestech
0
75
ディメンショナルモデリングを軽く語る
leveragestech
1
3.6k
アクターモデルによる効率的な分散システム設計
leveragestech
0
3.4k
Terraform による運用効率化の取り組みと最新のテストアプローチの紹介
leveragestech
0
3.4k
OpenFGAで拓く次世代認可基盤 〜予告編〜
leveragestech
0
3.4k
リソース・管理効率の向上だけでない、分散システムとしてのTiDBの魅力
leveragestech
0
3.4k
作ってわかる!非同期ランタイム
leveragestech
0
3.4k
レバテック開発部 技術広報 これまでとこれから
leveragestech
0
180
Other Decks in Technology
See All in Technology
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
290
SFTPコンテナからファイルをダウンロードする
dip
0
350
Securing your Lambda 101
chillzprezi
0
290
比起獨自升級 我更喜歡 DevOps 文化 <3
line_developers_tw
PRO
0
220
型システムを知りたい人のための型検査器作成入門
mame
15
3.8k
Tenstorrent 開発者プログラム
tenstorrent_japan
0
310
TerraformをSaaSで使うとAzureの運用がこんなに楽ちん!HCP Terraformって何?
mnakabayashi
0
140
Tensix Core アーキテクチャ解説
tenstorrent_japan
0
360
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.1k
kubellが挑むBPaaSにおける、人とAIエージェントによるサービス開発の最前線と技術展望
kubell_hr
1
310
工具人的一生: 開發很多 AI 工具讓我 慵懶過一生
line_developers_tw
PRO
0
210
Whats_new_in_Podman_and_CRI-O_2025-06
orimanabu
3
180
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Designing Experiences People Love
moore
142
24k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Fireside Chat
paigeccino
37
3.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Being A Developer After 40
akosma
90
590k
How STYLIGHT went responsive
nonsquared
100
5.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Speed Design
sergeychernyshev
31
990
The Cost Of JavaScript in 2023
addyosmani
50
8.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Transcript
Prisma Typed SQL のススメ レバテック開発部 塚原 渉
| © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム
塚原 渉 WATARU TSUKAHARA 2022年8月にレバテックに参画し、ITフリーランス向けのプロダクト開発に従事。 現在はPHPからTypeScriptへのシステムリプレースに取り組んでいます! リプレースにあたり、Prismaを導入しています! 趣味はスマブラ
| © 2024 Levtech Co., Ltd. 3 • はじめに • Prismaで生SQLを使いたいケース
• $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
| © 2024 Levtech Co., Ltd. 4 • はじめに • Prismaで生SQLを使いたいケース
• $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
| © 2024 Levtech Co., Ltd. 5 Prismaで生SQLを使う場合は、型安全な Typed SQLを活用しよう!! 今日伝えたいこと
| © 2024 Levtech Co., Ltd. 6 • はじめに • Prismaで生SQLを使いたいケース
• $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
| © 2024 Levtech Co., Ltd. 7 2024年10月現在だと、例えば以下のようなケース Prismaで生SQLを使いたいケースがいくつかある Prismaで生SQLを使いたいケース ケース
説明 パフォーマンスチューニング したい PrismaのAPIで発行されるSQLは、パフォーマンスが良くないケースがあるた め、生SQLを書いてパフォーマンスチューニングしたい。 Prisma APIが対応していない SQLを書きたい WHERE条件に配列を渡すSQLやUnionを使うSQLはPrisma APIが対応していない ため、生SQLを書く必要がある。 外部キー制約がないテーブルに対 してJOINしたい 外部キー制約がないテーブルをJOINしてデータを取得したい場合は、Prisma APIでは対応できないため、生SQLを書く必要がある。 ※自チームではこのケースで生SQLを利用しました。
| © 2024 Levtech Co., Ltd. 8 $queryRawを使う Prismaでの生SQLの使い方 Prismaで生SQLを使いたいケース 公式ドキュメントより引用
| © 2024 Levtech Co., Ltd. 9 アジェンダ • はじめに •
Prismaで生SQLを使いたいケース • $queryRawの問題点 • Typed SQLで解決 • まとめ
| © 2024 Levtech Co., Ltd. 10 ただし、$queryRawには問題点がある $queryRawの問題点 クエリの返却値の型はunknownになっ てしまう
| © 2024 Levtech Co., Ltd. 11 ただし、$queryRawには問題点がある $queryRawの問題点 $queryRawの型引数にあらかじめ定義 した返却値の型を設定できる
ただし、型引数に指定する型と実際の 返却値の整合性は開発者自身が担保す る必要がある schema.prisma から自動生成した Task 型を利用
| © 2024 Levtech Co., Ltd. 12 • はじめに • Prismaで生SQLを使いたいケース
• $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
| © 2024 Levtech Co., Ltd. 13 Prisma5.19からPreview Featureとして追加された新機能 型安全に生SQLが扱える Typed
SQLって何? Typed SQLで解決 公式サイトより引用
| © 2024 Levtech Co., Ltd. 14 1.SQLファイルからTSの関数を生成して利用するため型安全になる Typed SQLを使うと何が良い? Typed
SQLで解決 $ prisma generate –sql コマンドを実行
| © 2024 Levtech Co., Ltd. 15 1.SQLファイルからTSの関数を生成して利用するため型安全になる Typed SQLを使うと何が良い? Typed
SQLで解決 $ prisma generate –sql コマンドを実行 クエリの返却値にSQLから自動生成された型が使われる!
| © 2024 Levtech Co., Ltd. 16 2.TS関数生成時のSQLの誤りがあるとエラーを出してくれる Typed SQLを使うと何が良い? Typed
SQLで解決 watchオプションでSQLファイルの修正を監視 SQLの構文ミスだけでなく、schema.prismaとの整合性もチェックしてくれる
| © 2024 Levtech Co., Ltd. 17 • はじめに • Prismaで生SQLを使いたいケース
• $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
| © 2024 Levtech Co., Ltd. 18 Prismaで生SQLを扱いたくなったら、 Typed SQLを活用しよう!! 1.
SQLファイルからTSの関数を生成して利用するため 型安全になる 2. TS関数生成時のSQLの誤りがあるとエラーを 出してくれる
宣伝
開発職向け会社紹介資料 プロダクトや開発組織についてご紹介しています。 https://speakerdeck.com/leverages/levtech-hui-she-shao-jie-zi-liao-enzi niazhi-xiang-ke レバテック開発部テックブログ 日々の開発におけるリアルをお届けしています! https://zenn.dev/p/levtech カジュアル面談フォーム 気軽にご応募ください!いろんなお話しましょう! https://hrmos.co/pages/leverages/jobs/A_c_00071