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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tech Leverages
PRO
October 30, 2024
Technology
1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Prisma Typed SQLのススメ
2024/10/30 (水) Mita.ts #2
Prisma の Typed SQL の紹介です。
Tech Leverages
PRO
October 30, 2024
More Decks by Tech Leverages
See All by Tech Leverages
Slackを「AIエージェントのHub」にする 〜 SlackbotとHolmesGPTで実現するAIOps
leveragestech
PRO
0
7
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
96
並列化でチームのアウトプットを増やす
leveragestech
PRO
0
45
Engineering ManagerがAI時代に この先生きのこるには?
leveragestech
PRO
1
99
最新技術を"今は選ばない"という技術選定
leveragestech
PRO
0
550
毎⽇dumpされるDBにCDCは無⼒だっ た、、FederatedQueryで繋ぎ直した データ連携の試⾏錯誤
leveragestech
PRO
0
83
Tableauを活かすためにTableauに制約を設けた話
leveragestech
PRO
0
82
営業支援システムと歩んだ7年半の変遷
leveragestech
PRO
0
150
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
PRO
0
840
Other Decks in Technology
See All in Technology
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
750
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
560
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
170
ソフトウェアアーキテクチャ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
930
信頼できるテスティングAIをどう育てるか?
odan611
0
150
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
560
AI エージェント時代のデジタルアイデンティティ
fujie
1
1.1k
ダッシュボード"開発"について 〜使われるダッシュボードのつくりかた〜
kimichan
0
240
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
1.5k
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
2
180
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
4
1.1k
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.2k
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Being A Developer After 40
akosma
91
590k
Tell your own story through comics
letsgokoyo
1
1k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
640
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Git: the NoSQL Database
bkeepers
PRO
432
67k
A better future with KSS
kneath
240
18k
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