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
Hasuraを活用するためのTips集
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
KazukiHayase
December 09, 2022
Technology
35k
0
Share
Hasuraを活用するためのTips集
KazukiHayase
December 09, 2022
More Decks by KazukiHayase
See All by KazukiHayase
entのPrivacy機能とgo/astを使って、意図しないDBアクセスを防ぐ
kazukihayase
1
400
go testのキャッシュの仕組みにDeep Diveする
kazukihayase
0
150
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
560
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
560
もし今からGraphQLを採用するなら
kazukihayase
13
5.9k
Goでテストをしやすくするためにやったこと
kazukihayase
1
930
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
7.8k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
1.1k
自分だけが頑張るのをやめて、フルスタックなチームを作る
kazukihayase
2
3.6k
Other Decks in Technology
See All in Technology
Tachikawa.any 運営挨拶
daitasu
0
170
サービスの信頼性を高めるため、形骸化した「プロダクションミーティング」を立て直すまでの取り組み
stefafafan
1
260
AI駆動開発で生産性を追いかけたら、行き着いたのは品質とシフトレフトだった
littlehands
0
490
ServiceによるKubernetes通信制御ーClusterIPを例に
miku01
1
160
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
340
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
1
130
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1.3k
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
5
440
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.7k
100マイクロサービスのTerraform/Kubernetes管理地獄から抜け出すためのAI活用術
markie1009
0
140
オライリーイベント登壇資料「鉄リサイクル・産廃業界におけるAI技術実応用のカタチ」
takarasawa_
0
400
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
6
520
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
230
YesSQL, Process and Tooling at Scale
rocio
174
15k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Skip the Path - Find Your Career Trail
mkilby
1
120
The agentic SEO stack - context over prompts
schlessera
0
770
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
150
How to Talk to Developers About Accessibility
jct
2
190
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Transcript
HasuraΛ׆༻͢ΔͨΊͷTipsू 2022/08/30 ։ൃ2෦ ૣً
ࣗݾհ • ૣً • ग़ཧSaa S ◦ ϓϩδΣΫτϦʔμʔ ◦ ϑϧελοΫΤϯδχΞ
• ࠷ۙͷϚΠϒʔϜ ◦ ݸਓ։ൃ࠶։͠·ͨ͠ ▪ Cloud Run(gqlgen) + Firestore(Datastore mode ) ▪ Next.js + Rela y ◦ Ҿͬӽ͠४උத
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
Hasuraͱ • DBͷεΩʔϚ͔ΒGraphQLαʔόʔΛੜͰ͖ΔΦʔϓϯιʔε • DB͑͋͞Εαʔόʔཱ͕ͯΒΕΔͷͰ࣮ίετ͕֨ஈʹݮΔ
ΧελϜϩδοΫʹ͍ͭͯ • ΧελϜϩδοΫΛՃ͢Δํ๏ΛHasuraఏڙ͍ͯ͠Δ ◦ Actio n ◦ Remote Schem a
• ҙ֎ͱΧελϜϩδοΫΛ࣮͍ͨ͠໘ଟ͍ • ࣮ͨͩ͠ίετɺϝϯςφϯείετ͕૿Ճ͢Δ
HasuraͷػೳΛ׆༻͢Δ͜ͱͰ ΧελϜϩδοΫͷ࣮ΛݮΒ͢͜ͱ͕Ͱ͖Δ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
Upsertͷ׆༻ on_conflictΛࢦఆ͢Δ͜ͱͰUpsertͰ࣮ߦ
Upsert༻࣌ͷҙ • σʔλ͕ଘࡏ͢Δ͔Θ͔Βͳ͍߹ͷΈ༻͢Δ ◦ ϕʔεͷMutationInsertͳͷͰશͯͷඞਢύϥϝʔλΛ͢ඞཁ͕͋Δ ◦ Updateͷ༻ͱͯ͑͠ͳ͍ • σʔλ͕ଘࡏ͢Δ͜ͱ͕Θ͔͍ͬͯΔ߹UpdateΛ༻͢Δ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
τϥϯβΫγϣϯ Hasura1ͭͷϦΫΤετʹෳͷMutationؚ͕·Ε͍ͯΔ߹ɺ ֤Mutation1ͭτϥϯβΫγϣϯͰॱ൪ʹ࣮ߦ͞ΕΔ ͲΕ͔ҰͭͰࣦഊͨ͠߹શͯͷMutation͕ϩʔϧόοΫ͞ΕΔ
τϥϯβΫγϣϯͷྫ deletePost͕ࣦഊͯ͠SampleMutationશମ͕ϩʔϧόοΫ͞ΕΔ ϩʔϧόοΫ͞ΕΔͷͰtaggingsআ͞Ε͍ͯͳ͍
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
ϦϨʔγϣϯΛؚΜͩMutation MutationͷΈཱͯ࣍ୈͰ༷ʑͳϦϨʔγϣϯΛؚΜͩσʔλͷ࡞͕Մೳ • 1: 1 • 1: N • N:N
1:1ͷϦϨʔγϣϯ profileͱͦΕʹඥͮ͘userΛ࡞ userͱͦΕʹඥͮ͘profileΛ࡞͠Α͏ͱ͢ΔͱΤϥʔ
ΦϒδΣΫτͷ࡞ॱং σϑΥϧτͰ1:1ͷϦϨʔγϣϯԼهͷॱ൪ͰΦϒδΣΫτ͕࡞͞ΕΔ 1. ࢠΦϒδΣΫτΛ࡞ͯ͠idΛऔಘ 2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠ΦϒδΣΫτΛ࡞ ※ ϦϨʔγϣϯ࡞࣌ͷinsertion_orderͷઃఆͰॱ൪มߋՄೳ
1:NͷϦϨʔγϣϯ ߘͱͦΕʹඥ͍͍ͮ͘ͶΛ࡞
ΦϒδΣΫτͷ࡞ॱং 1:NͷϦϨʔγϣϯԼهͷॱ൪ͰΦϒδΣΫτ͕࡞͞ΕΔ 1. ΦϒδΣΫτΛ࡞ͯ͠idΛऔಘ 2. FKΧϥϜʹ 1 Ͱऔಘͨ͠idΛઃఆͯ͠ࢠΦϒδΣΫτΛ࡞
N:NͷϦϨʔγϣϯ ߘͱͦΕʹඥͮ͘λάΛ࡞
ߴͳN:NͷϦϨʔγϣϯ ߘͱͦΕʹඥͮ͘λάΛ࡞ɺλάͷ࡞Upsert λά͕͢Ͱʹଘࡏ͢Δ߹ͦͷλά ͱඥ͚ɺλά͕ଘࡏ͠ͳ͍߹λ άΛ࡞ͯ͠ඥ͚ͱ͍ͬͨෳࡶͳ Mutation࣮Մೳ
ΞδΣϯμ • Hasuraͱ • HasuraΛ׆༻͢ΔͨΊͷTipsू ◦ Upsertͷ׆༻ ◦ τϥϯβΫγϣϯ ◦
ϦϨʔγϣϯΛؚΜͩMutatio n ◦ σΟϨΫςΟϒʹΑΔ੍ޚ • ͓ΘΓʹ
σΟϨΫςΟϒʹΑΔ੍ޚ Hasuraඪ४σΟϨΫςΟϒ͕ར༻Մೳ σΟϨΫςΟϒΛ׆༻͢Δ͜ͱͰQuery, Mutationͷදݱͷ෯͕͕Δ
σΟϨΫςΟϒʹΑΔ੍ޚ @includeͰऔಘ͢ΔϑΟʔϧυΛ੍ޚ @skipͰ࣮ߦ͢ΔMutationΛ੍ޚ
σΟϨΫςΟϒʹΑΔ੍ޚ ؔ࿈ͷͳ͍MutationͰ͋ΕϦΫΤετͷׂͰରԠՄೳ ಉ͡τϥϯβΫγϣϯͰMutationͷ࣮ߦΛ੍ޚ͍ͨ͠߹ σΟϨΫςΟϒͰͷ੍ޚ͕༗ޮ
͓ΘΓʹ • HasuraΛ׆༻͢Δ͜ͱͰόοΫΤϯυͷ࣮ΛݮΒ͢͜ͱ͕Ͱ͖Δ • ଞʹHasuraͷػೳ͚ͩͰ࣮ݱͰ͖Δ͜ͱੵۃతʹ׆༻͢Δͷ͕ ྑ͍ͱࢥ͍·͢ʂ