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
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
800
技術を的に当てる技術について - 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
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
310
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
140
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
110
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.4k
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
720
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
910
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Abbi's Birthday
coloredviolet
3
8.8k
エンジニアに許された特別な時間の終わり
watany
108
250k
Odyssey Design
rkendrick25
PRO
2
730
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
AI: The stuff that nobody shows you
jnunemaker
PRO
9
840
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Marketing to machines
jonoalderson
1
5.6k
How STYLIGHT went responsive
nonsquared
100
6.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
It's Worth the Effort
3n
188
29k
Docker and Python
trallard
47
4k
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
γΰτͰίίϩΦυϧ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ