Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Prisma Typed SQLのススメ
Search
Tech Leverages
PRO
October 30, 2024
Technology
1.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
130
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
220
並列化でチームのアウトプットを増やす
leveragestech
PRO
0
61
Engineering ManagerがAI時代に この先生きのこるには?
leveragestech
PRO
1
150
最新技術を"今は選ばない"という技術選定
leveragestech
PRO
0
610
毎⽇dumpされるDBにCDCは無⼒だっ た、、FederatedQueryで繋ぎ直した データ連携の試⾏錯誤
leveragestech
PRO
0
120
Tableauを活かすためにTableauに制約を設けた話
leveragestech
PRO
0
110
営業支援システムと歩んだ7年半の変遷
leveragestech
PRO
0
190
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
PRO
0
950
Other Decks in Technology
See All in Technology
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
670
AI時代、データエンジニアが一番おもろい
genshun9
0
670
エージェントはローカル、検証はMicroVM — Lambda MicroVMsでつくるServerless CI
fujioka6789
3
360
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
230
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
250
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.1k
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
5
320
絵ではじめるKubernetesセキュリティ
aoi1
4
680
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
710
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
210
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
130
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Visualization
eitanlees
152
17k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Done Done
chrislema
186
16k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Code Reviewing Like a Champion
maltzj
528
40k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
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