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
Rails 5 で作る RESTful API 速習会 / Rails RESTful API
Search
Altech
April 19, 2017
Programming
5
960
Rails 5 で作る RESTful API 速習会 / Rails RESTful API
https://wantedly.connpass.com/event/55138/
https://github.com/Altech/rails-restful-api/pulls
Altech
April 19, 2017
Tweet
Share
More Decks by Altech
See All by Altech
継続的なサービス発展を支えるアーキテクチャと技術 / Developers Summit 2023
altech
20
5.4k
Wantedly の技術とアーキテクチャ / 2023年度 新人研修
altech
2
510
技術を的に当てる技術について - GraphQL を入れ直した話 / 吉祥寺.pm28
altech
7
5.5k
マイクロサービス・アーキテクチャと共存する Ruby on Rails のアーキテクチャ的拡張 - その事例と可能性 / Kaigi on Rails 2021
altech
8
2.8k
ソフトウェア設計の Why & What & How / Wantedly 新卒研修
altech
0
11k
Data-Driven Service-Oriented Architecture & UI
altech
3
1.4k
Ruby で作るデータ分析基盤
altech
9
1.7k
Object-Oriented Abstraction of Redis Sorted Set
altech
2
2.2k
Microservices on “Rails” - Wantedly のマイクロサービス事例
altech
8
5.4k
Other Decks in Programming
See All in Programming
Folding Cheat Sheet #3
philipschwarz
PRO
0
110
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
1.1k
甘い香りに誘われてVanilla Extractを1年間運用してみた
miyahkun
1
110
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
410
プールにゆこう
irof
2
120
Introduction for Open Source Swift Workshop
giginet
PRO
0
1.1k
Semantic search with Django and pgvector
pauloxnet
0
220
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.2k
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
160
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
6
2.5k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
266
39k
The Language of Interfaces
destraynor
151
23k
Large-scale JavaScript Application Architecture
addyosmani
502
110k
Building Applications with DynamoDB
mza
88
5.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
243
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
Infographics Made Easy
chrislema
237
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Happy Clients
brianwarren
91
6.4k
The Invisible Side of Design
smashingmag
293
49k
Scaling GitHub
holman
457
140k
Code Review Best Practice
trishagee
54
15k
Transcript
ฏʗSOHEI TAKENO Rails 5 Ͱ࡞Δ RESTful API शձ api/v2
शձ 2017/04
γΰτͰίίϩΦυϧ • ࣗݾհ • ಋೖഎܠ • ϓϩτίϧ • ج൫࣮ •
࣮ફʢ45minʣ ϝχϡʔ
γΰτͰίίϩΦυϧ ࣗݾհ
γΰτͰίίϩΦυϧ • Sohei Takeno / @Altech_2015 • 20164݄ʹ Wantedly ʹΤϯδχΞͱͯ͠ೖࣾ
• Wantedy Visit ʹؔΘ͍ͬͯΔ • άϩʔε ― Push௨ϝʔϧͷσβΠϯվળɾνϡʔχϯάɺͦͷଞ UI ςετ • αʔϏε։ൃج൫ͷඋ ― BigQuery ಋೖ, σʔλղੳδϣϒγεςϜɺPush௨ج൫ • Ϛονϯάվળ ― ืूΛ୳͢ػೳʢϑΟϧλɾݕࡧʣͷϩδοΫˍUIվળ • ωΠςΟϒΞϓϦ͚ͷ API ࡞ ࣗݾհ
γΰτͰίίϩΦυϧ ৽͍͠APIͷಋೖഎܠ
γΰτͰίίϩΦυϧ • api/v1 ͱ͍͏ API namespace ͕ݩʑ͋ͬͨ • ը໘ͱAPI͕ີ݁߹͍ͯͨ͠ʢ؇͍ 1screen
- 1 request ํࣜʣ • දࣔΛॏࢹ • ɿ • νʔϜߏͷมԽʹґΔɺը໘ͱີ݁߹ʹىҼ͢Δੜ࢈ੑԼ • ϓϩτίϧ͕ͳ͍ʢϨεϙϯεͷܗࣜΛͲ͏͢Δ͔Λຖճ֬ೝʣ ಈػ
γΰτͰίίϩΦυϧ • RESTful ͳ API ʹΞʔΩςΫνϟΛมߋ • ϓϩτίϧͷنఆ • →
api/v2 ͱͯ͠࡞ • ʢɿ௨ৗͷόʔδϣχϯάతͳ͍ํͱҟͳΔʣ ղܾํ๏
γΰτͰίίϩΦυϧ • νʔϜͷϓϥοτϑΥʔϜ͝ͱͷ୲ํ๏ • Web ͱΞϓϦͷϓϩάϥϚҰக͢Δͷ͔ɺ͠ͳ͍ͷ͔ • νʔϜͷαʔϏε։ൃͷମ੍ • ผʑʹػೳΛ࣮͍ͯ͘͠ͷ͔ɺ౷Ұͯ͠ਐΊ͍ͯ͘ͷ͔ɺWeb
͕ઌߦ͢Δͷ͔ɺΞϓϦ͕ઌߦ͢Δͷ͔ • ϢʔβʔʢiOS, Android ϓϩάϥϚʣͷϦςϥγʔ • ΫϥΠΞϯτʢiOS ΞϓϦ, Android ΞϓϦʣͷઃܭ • ΞʔΩςΫνϟʁViewModel Έ͍ͨͳͷΛೖΕΔ͜ͱՄೳ͔ʁ • ͳͲ… લఏɿRESTful ͔ͩΒྑ͍Θ͚Ͱͳ͍ API ͷΞʔΩςΫνϟΛܾఆ͢Δࡍʹґଘͨ͜͠ͱͷྫɿ
γΰτͰίίϩΦυϧ v1 ࡞࣌
γΰτͰίίϩΦυϧ • Wantedly Visit ॳͷ iOS ΞϓϦϦϦʔε • ಉ͡ҰਓͷϓϩάϥϚ͕ iOS
Web ॻ͘ • Server-Client = 1 : 1 v1࡞࣌ͷ։ൃମ੍ʢ2014/5ʣ
γΰτͰίίϩΦυϧ • Web, iOS, Android ͦΕͧΕҰਓʢUser Growth νʔϜʣ • Web
Web Ͱ iterative ʹϦϦʔεɾݕূͯ͠αʔϏε վળΛ͍ͯ͘͠ͷ͕ϝΠϯλεΫ • Web ͕ઌߦ͢Δ։ൃͳͷͰ API Λॻ࣌͘Ϟσϧ͋Δఔ Ͱ͖͍ͯΔঢ়ଶ • ʢͪͳΈʹݱࡏ Web, iOS ͱʹೋਓʹʣ v2࡞࣌ͷ։ൃମ੍ʢ2017/1ʣ
γΰτͰίίϩΦυϧ • ը໘ͷৄࡉʹ͍͍ͪͪ Web ͷΤϯδχΞ͕͍ؔͯͯ͠ੜ࢈ੑ͕Լ͕Δ • มߋͷࡍɺطʹ͋Δը໘ͷ͕ࣝલఏʹͳΔͷͰɺ͍͠ • ίϛϡχέʔγϣϯͷ༰͕σʔλʹϑΥʔΧε͞ΕΔ •
ϞσϧʹରԠͯ͠ΤϯυϙΠϯτͱίϯτϩʔϥΛ࡞͍ͬͯ͘ͷͰɺมߋ ͖͢Օॴ͕໌֬ • ઃܭʹ੍͕ՃΘΔͷͰɺΑΓͦ͜ʹϑΥʔΧε͍͍ͨ͢͠ϓϩτί ϧϥΠϒϥϦΛಋೖͰ͖ΔΑ͏ʹͳΔ ಋೖഎܠ·ͱΊ api/v2 ͷಋೖ
γΰτͰίίϩΦυϧ ϓϩτίϧ
https://github.com/Altech/rails-restful-api/blob/master/README.md
γΰτͰίίϩΦυϧ ج൘࣮
γΰτͰίίϩΦυϧ • ActiveModelSerializers ΛϦΫΤετύϥϝʔλͱͭͳ͙ • N+1 ΛγεςϚςΟοΫʹ͙Έ • ad-hoc ύϥϝʔλΛϢʔβʔʹ͑Δํ๏
• ίʔυɿPull Requests · Altech/rails-restful-api ඞཁͩͬͨج൫࣮
γΰτͰίίϩΦυϧ ࣮ફ
γΰτͰίίϩΦυϧ • Wantedly Visit ͷձࣾը໘ͷAPIΛ࡞Δ • Ұॹʹॻ͍͍͖ͯ·͢ʂ श༰
None
γΰτͰίίϩΦυϧ • ɿhttps://github.com/Altech/rails-restful-api/pull/7
γΰτͰίίϩΦυϧ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ