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
0
34k
Hasuraを活用するためのTips集
KazukiHayase
December 09, 2022
Tweet
Share
More Decks by KazukiHayase
See All by KazukiHayase
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
350
もし今からGraphQLを採用するなら
kazukihayase
12
5.2k
Goでテストをしやすくするためにやったこと
kazukihayase
1
820
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
7k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
960
自分だけが頑張るのをやめて、フルスタックなチームを作る
kazukihayase
2
3.2k
Goでテンプレートからファイルを自動生成するCLIを作る
kazukihayase
0
1.3k
生産性が上がり続けるチームを作るための第一歩
kazukihayase
4
3.8k
GraphQLにおけるクライアントキャッシュ戦略
kazukihayase
0
3.1k
Other Decks in Technology
See All in Technology
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
0
160
IIWレポートからみるID業界で話題のMCP
fujie
0
740
本当に使える?AutoUpgrade の新機能を実践検証してみた
oracle4engineer
PRO
1
130
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
9.5k
Welcome to the LLM Club
koic
0
140
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
2
220
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
160
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
230
Snowflake Summit 2025全体振り返り / Snowflake Summit 2025 Overall Review
mtpooh
2
310
Definition of Done
kawaguti
PRO
6
470
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
8
850
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
150
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
4 Signs Your Business is Dying
shpigford
184
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to train your dragon (web standard)
notwaldorf
92
6.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Practical Orchestrator
shlominoach
188
11k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Language of Interfaces
destraynor
158
25k
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ͷػೳ͚ͩͰ࣮ݱͰ͖Δ͜ͱੵۃతʹ׆༻͢Δͷ͕ ྑ͍ͱࢥ͍·͢ʂ