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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hatappi
May 29, 2019
Technology
0
910
RubyではじめるGraphQL
#ebisurb
hatappi
May 29, 2019
Tweet
Share
More Decks by hatappi
See All by hatappi
Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
hatappi
1
760
RubyでChainerつくってます!!
hatappi
2
1.5k
TDDな個人開発
hatappi
0
360
できるだけ楽して楽しくRails開発しよう
hatappi
2
360
EKSにRailsをのせた
hatappi
1
1.2k
RubyとApache Arrow
hatappi
0
2.6k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.5k
Fargateで夢は見られるのか
hatappi
1
2.3k
個人サービスをFargateに移行したよ
hatappi
1
710
Other Decks in Technology
See All in Technology
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
370
Evolution of Claude Code & How to use features
oikon48
1
490
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
240
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
520
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.6k
A Gentle Introduction to Transformers
keio_smilab
PRO
2
900
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
DX Improvement at Scale
ntk1000
3
340
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
Security Diaries of an Open Source IAM
ahus1
0
210
Digitization部 紹介資料
sansan33
PRO
1
7k
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Test your architecture with Archunit
thirion
1
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Utilizing Notion as your number one productivity tool
mfonobong
4
250
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
200
Paper Plane
katiecoart
PRO
0
47k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
770
Documentation Writing (for coders)
carmenintech
77
5.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Side Projects
sachag
455
43k
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
Λެ։ͯ͠·ͤΜ͕ɺࠓޙ֎ ͚ʹެ։༧ఆͰ͢ʂʂ • ެ։ͨ͠ΒͥͻͬͯΈ͍ͯͩ͘͞ʂʂ