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
KazukiHayase
December 09, 2022
Technology
35k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hasuraを活用するためのTips集
KazukiHayase
December 09, 2022
More Decks by KazukiHayase
See All by KazukiHayase
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
150
entのPrivacy機能とgo/astを使って、意図しないDBアクセスを防ぐ
kazukihayase
1
450
go testのキャッシュの仕組みにDeep Diveする
kazukihayase
0
180
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
610
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
560
もし今からGraphQLを採用するなら
kazukihayase
13
6k
Goでテストをしやすくするためにやったこと
kazukihayase
1
940
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
8k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
1.2k
Other Decks in Technology
See All in Technology
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
320
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
410
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.6k
PLATEAU で バーチャル花火大会
tatsuya1970
0
160
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
220
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
140
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
6.2k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.5k
モダンフロントエンド 開発研修
recruitengineers
PRO
4
730
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
MIRU 2026 チュートリアル
keisuke198619
0
960
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
6k
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
Marketing to machines
jonoalderson
1
5.7k
4 Signs Your Business is Dying
shpigford
187
23k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
340
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
770
Designing for humans not robots
tammielis
254
26k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Design in an AI World
tapps
1
280
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ͷػೳ͚ͩͰ࣮ݱͰ͖Δ͜ͱੵۃతʹ׆༻͢Δͷ͕ ྑ͍ͱࢥ͍·͢ʂ