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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Altech
April 19, 2017
Programming
1.2k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Altech
See All by Altech
スキーマと型で拓く Full-Stack TypeScript / TSKaigi 2025
altech
4
4.6k
継続的なサービス発展を支えるアーキテクチャと技術 / Developers Summit 2023
altech
20
6.8k
Wantedly の技術とアーキテクチャ / 2023年度 新人研修
altech
2
790
技術を的に当てる技術について - GraphQL を入れ直した話 / 吉祥寺.pm28
altech
7
6.4k
マイクロサービス・アーキテクチャと共存する Ruby on Rails のアーキテクチャ的拡張 - その事例と可能性 / Kaigi on Rails 2021
altech
8
3.7k
ソフトウェア設計の Why & What & How / Wantedly 新卒研修
altech
0
12k
Data-Driven Service-Oriented Architecture & UI
altech
3
1.7k
Ruby で作るデータ分析基盤
altech
9
2.1k
Object-Oriented Abstraction of Redis Sorted Set
altech
2
2.5k
Other Decks in Programming
See All in Programming
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.6k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
120
JavaDoc 再入門
nagise
1
430
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
990
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
290
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
15
7.9k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
200
OSもどきOS
arkw
0
600
The NotImplementedError Problem in Ruby
koic
1
980
どこまでゆるくて許されるのか
tk3fftk
0
270
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
エンジニアに許された特別な時間の終わり
watany
107
250k
Leo the Paperboy
mayatellez
7
1.9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
How to Ace a Technical Interview
jacobian
281
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
4 Signs Your Business is Dying
shpigford
187
22k
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
γΰτͰίίϩΦυϧ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ