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
RubyではじめるGraphQL
Search
hatappi
May 29, 2019
Technology
970
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RubyではじめるGraphQL
#ebisurb
hatappi
May 29, 2019
More Decks by hatappi
See All by hatappi
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
280
AlloyDB 奮闘記
hatappi
0
480
Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
hatappi
1
920
RubyでChainerつくってます!!
hatappi
2
1.5k
TDDな個人開発
hatappi
0
380
できるだけ楽して楽しくRails開発しよう
hatappi
2
380
EKSにRailsをのせた
hatappi
1
1.3k
RubyとApache Arrow
hatappi
0
2.7k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.5k
Other Decks in Technology
See All in Technology
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
240
Does an AI Watermark Survive Translation?
machinetranslation
0
520
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
300
書籍『生成AIの安全性入門』の入門
wataoka
0
210
When Does a Local Qwen Start to Break
morshoto
0
170
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
800
V8コントリビュート超入門
riyaamemiya
0
130
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
190
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
210
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
830
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
540
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Faster Mobile Websites
deanohume
310
32k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
560
Designing Powerful Visuals for Engaging Learning
tmiket
1
530
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
A Soul's Torment
seathinner
7
3.5k
Making Projects Easy
brettharned
120
6.7k
The Cost Of JavaScript in 2023
addyosmani
55
10k
A better future with KSS
kneath
240
18k
Transcript
RubyͰ࢝ΊΔ GraphQLೖ #23 @hatappi
Yusaku Hatanaka @hatappi Merpay Inc. Go, Ruby, etc… <<Ruby Activity>>
Roppongi.rb organizer RubyKaigi 2019
ಥવͰ͕࣭͢Ͱ͢
GET /users/1 ϦΫΤετ͠·ͨ͠ Կ͕ฦ͖ͬͯ·͔͢ʁ
ᶃ ᶄ ᶅ
ᶃ ᶄ ᶅ
༗ޮͳJSONΛฦͤΔͳΒOK ͔͠͠ϦιʔεʹΑͬͯϑΥʔϚοτ͕ҟͳΔͱɻɻɻ Τϥʔ࣌ͷϨεϙϯεϑΥʔϚοτΕ͕ͪ
userͱfriendsΛऔಘ͍ͨ͠ GET /users/1 GET /users/1/friends
ඞཁͳใΛऔಘ͢ΔͨΊʹ Կճ͔ϦΫΤετΛ͢Δ͜ͱ
GraphQL͕ ׆༂Ͱ͖Δ͔ʁʂ
GraphQL • APIͷͨΊͷΫΤϦݴޠ • ΫΤϦݴޠͷ༷ͱͯ͠ܕఆٛ͞Εͨε ΩʔϚΛఆٛͯ͠ΫΤϦΛ༻͍͍ͯ߹Θ ͤΛ͢Δ • FacebookʹΑͬͯ։ൃ͞Εͯ2015ʹOSSͱ ͯ͠ެ։͞Εͨ
• https://graphql.org/
ΫΤϦݴޠ • GraphQLͷAPIϦΫΤετΛ͢ΔͨΊͷݴޠ • σʔλऔಘܥ Query, σʔλΛ࡞ͨ͠Γߋ৽ Mutation, αʔόʔ͔ΒͷΠϕϯτ Λड͚औΔ
Subscription ͕͋Δ • GraphQL APIͷ༷Λهड़ • ֤ϑΟʔϧυʹܕΛએݴ͕ඞཁ • Int, Float, String, Boolean, IDͳͲ͕࠷ॳ͔Βఆٛ͞Ε͍ͯͯࣗͰఆٛ͢Δ͜ ͱՄೳ εΩʔϚݴޠ
GitHub GraphQL API https://developer.github.com/v4/explorer/ ۙʹࢼͤΔ!! ※ຊ൪ͷσʔλͳͷͰߋ৽ܥͳͲҙͯ͠͏ʂ
POST /graphql
ϦΫΤετ Ϩεϙϯε
ϦΫΤετ Ϩεϙϯε
͜͏͍͏ͷ͕΄͍͠!! ʹର͍ͯۙ͠ܗͰฦͯ͘͠ΕΔ
RubyͰGraphQL
graphql-ruby • GraphQLͷύʔαʔͱϥϯλΠϜͷRuby࣮ • 201905݄29 v1.9.6 ͕࠷৽ • 1.8·ͰಠࣗͷDSL͚ͩͬͨͲ1.8Ҏ߱Ϋ ϥεϕʔεͰεΩʔϚఆٛͰ͖ΔΑ͏ʹ
ͳͬͨ
RubyΒ͘͠GraphQLͷεΩʔϚΛ ఆٛ͢Δ͜ͱ͕Ͱ͖Δ
Anket + GraphQL
• Slack ্ͰΞϯέʔτΛͱΔͨΊͷαʔϏε • 2018/11ʹ βϦϦʔε • Ξϯέʔτͷ࡞ථ Slack ্͔Βߦ͏
• WEB্ͰμογϡϘʔυΛݟΔ͜ͱ͕Ͱ͖ͯ Rails 5 Ͱ࡞͞Ε͍ͯΔ • Railsͱ͔k8sͱ͔ٕज़తཁૉΛࢼ͢ͱͯ͠ϓϥΠ ϕʔτͰ࡞
ಋೖͨ݁͠Ռ
GraphiQL͕ศར • GraphQL ʹରͯ͠ΫΤϦΛൃߦ͢ΔͨΊͷπʔϧ • GithubͷAPIίϯιʔϧͰ༻͞Ε͍ͯΔ • ΫΤϦͷൃߦ͚ͩͰͳ͘ΫΤϦิAPIϦϑΝϨϯε͕͑ΔͷͰIDEͱͯ͑͠Δ • graphql-rubyΛRailsͰ͏࣌install͢Δ࣌ʹҰॹʹೖΔ
ςετ
Complexity & Depth ͷ੍ݶ͕͔͚ΒΕΔ • Complexity • 1requestʹର͢ΔComplexityΛ੍ݶ • Depth
• queryͷೖΕࢠͷ੍ݶ
Complexity fields͝ͱʹComplexityΛઃఆͰ͖ΔͷͰॏ ͍ॲཧͷੜίετΛେ͖Ίʹઃఆ͢Δͳ Ͳͷઃఆ͕Մೳ
Depth
·ͱΊ • GraphQL, graphql-rubyͷΛ͠·ͨ͠ • ୯ҰͷΤϯυϙΠϯτͳͷͰύϑΥʔϚϯεͷܭଌͳͲ͕ඞཁ • Anket ݱঢ়͖ʹ͔͠GraphQL API
Λެ։ͯ͠·ͤΜ͕ɺࠓޙ֎ ͚ʹެ։༧ఆͰ͢ʂʂ • ެ։ͨ͠ΒͥͻͬͯΈ͍ͯͩ͘͞ʂʂ