Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rails 5 で作る RESTful API 速習会 / Rails RESTful API

6115584ec4554ed71f17effd3e0b6988?s=47 Altech
April 19, 2017

Rails 5 で作る RESTful API 速習会 / Rails RESTful API

6115584ec4554ed71f17effd3e0b6988?s=128

Altech

April 19, 2017
Tweet

Transcript

  1. ஛໺ ૑ฏʗSOHEI TAKENO Rails 5 Ͱ࡞Δ RESTful API ଎शձ api/v2

    ଎शձ
 
 2017/04
  2. γΰτͰίίϩΦυϧ • ࣗݾ঺հ • ಋೖഎܠ • ϓϩτίϧ • ج൫࣮૷ •

    ࣮ફʢ45minʣ ϝχϡʔ
  3. γΰτͰίίϩΦυϧ ࣗݾ঺հ

  4. γΰτͰίίϩΦυϧ • Sohei Takeno / @Altech_2015 • 2016೥4݄ʹ Wantedly ʹΤϯδχΞͱͯ͠ೖࣾ

    • Wantedy Visit ʹؔΘ͍ͬͯΔ • άϩʔε ― Push௨஌΍ϝʔϧͷσβΠϯվળɾνϡʔχϯάɺͦͷଞ UI ςετ • αʔϏε։ൃج൫ͷ੔උ ― BigQuery ಋೖ, σʔλղੳδϣϒγεςϜɺPush௨஌ج൫ • Ϛονϯάվળ ― ืूΛ୳͢ػೳʢϑΟϧλɾݕࡧʣͷϩδοΫˍUIվળ • ωΠςΟϒΞϓϦ޲͚ͷ API ࡞੒ ࣗݾ঺հ
  5. γΰτͰίίϩΦυϧ ৽͍͠APIͷಋೖഎܠ

  6. γΰτͰίίϩΦυϧ • api/v1 ͱ͍͏ API namespace ͕ݩʑ͋ͬͨ • ը໘ͱAPI͕ີ݁߹͍ͯͨ͠ʢ؇͍ 1screen

    - 1 request ํࣜʣ • දࣔ଎౓Λॏࢹ • ໰୊఺ɿ • νʔϜߏ੒ͷมԽʹґΔɺը໘ͱີ݁߹ʹىҼ͢Δੜ࢈ੑ௿Լ • ϓϩτίϧ͕ͳ͍ʢϨεϙϯεͷܗࣜΛͲ͏͢Δ͔Λຖճ֬ೝʣ ಈػ
  7. γΰτͰίίϩΦυϧ • RESTful ͳ API ʹΞʔΩςΫνϟΛมߋ • ϓϩτίϧͷنఆ • →

    api/v2 ͱͯ͠࡞੒ • ʢ஫ɿ௨ৗͷόʔδϣχϯάతͳ࢖͍ํͱ͸ҟͳΔʣ ղܾํ๏
  8. γΰτͰίίϩΦυϧ • νʔϜͷϓϥοτϑΥʔϜ͝ͱͷ෼୲ํ๏ • Web ͱΞϓϦͷϓϩάϥϚ͸Ұக͢Δͷ͔ɺ͠ͳ͍ͷ͔ • νʔϜͷαʔϏε։ൃͷମ੍ • ผʑʹػೳΛ࣮૷͍ͯ͘͠ͷ͔ɺ౷Ұͯ͠ਐΊ͍ͯ͘ͷ͔ɺWeb

    ͕ઌߦ͢Δͷ͔ɺΞϓϦ͕ઌߦ͢Δͷ͔ • ϢʔβʔʢiOS, Android ϓϩάϥϚʣͷϦςϥγʔ • ΫϥΠΞϯτʢiOS ΞϓϦ, Android ΞϓϦʣͷઃܭ • ΞʔΩςΫνϟ͸ʁViewModel ૚Έ͍ͨͳͷΛೖΕΔ͜ͱ͸Մೳ͔ʁ • ͳͲ… લఏɿRESTful ͔ͩΒྑ͍Θ͚Ͱ͸ͳ͍ API ͷΞʔΩςΫνϟΛܾఆ͢Δࡍʹґଘͨ͜͠ͱͷྫɿ
  9. γΰτͰίίϩΦυϧ v1 ࡞੒࣌

  10. γΰτͰίίϩΦυϧ • Wantedly Visit ॳͷ iOS ΞϓϦϦϦʔε • ಉ͡ҰਓͷϓϩάϥϚ͕ iOS

    ΋ Web ΋ॻ͘ • Server-Client = 1 : 1 v1࡞੒࣌ͷ։ൃମ੍ʢ2014/5ʣ
  11. γΰτͰίίϩΦυϧ • Web, iOS, Android ͦΕͧΕҰਓʢUser Growth νʔϜʣ • Web

    ͸ Web Ͱ iterative ʹϦϦʔεɾݕূͯ͠αʔϏε վળΛ͍ͯ͘͠ͷ͕ϝΠϯλεΫ • Web ͕ઌߦ͢Δ։ൃͳͷͰ API Λॻ࣌͘Ϟσϧ͸͋Δఔ ౓Ͱ͖͍ͯΔঢ়ଶ • ʢͪͳΈʹݱࡏ͸ Web, iOS ͱ΋ʹೋਓʹʣ v2࡞੒࣌ͷ։ൃମ੍ʢ2017/1ʣ
  12. γΰτͰίίϩΦυϧ • ը໘ͷৄࡉʹ͍͍ͪͪ Web ͷΤϯδχΞ͕ؔ஌͍ͯͯ͠͸ੜ࢈ੑ͕Լ͕Δ • มߋͷࡍ΋ɺطʹ͋Δը໘ͷ஌͕ࣝલఏʹͳΔͷͰɺ೉͍͠ • ίϛϡχέʔγϣϯͷ಺༰͕σʔλʹϑΥʔΧε͞ΕΔ •

    ϞσϧʹରԠͯ͠ΤϯυϙΠϯτͱίϯτϩʔϥΛ࡞͍ͬͯ͘ͷͰɺมߋ ͢΂͖Օॴ͕໌֬ • ઃܭʹ੍໿͕ՃΘΔͷͰɺΑΓͦ͜ʹϑΥʔΧεͨ͠࢖͍΍͍͢ϓϩτί ϧ΍ϥΠϒϥϦΛಋೖͰ͖ΔΑ͏ʹͳΔ ಋೖഎܠ·ͱΊ api/v2 ͷಋೖ
  13. γΰτͰίίϩΦυϧ ϓϩτίϧ

  14. https://github.com/Altech/rails-restful-api/blob/master/README.md

  15. γΰτͰίίϩΦυϧ ج൘࣮૷

  16. γΰτͰίίϩΦυϧ • ActiveModelSerializers ΛϦΫΤετύϥϝʔλͱͭͳ͙ • N+1 ΛγεςϚςΟοΫʹ๷͙࢓૊Έ • ad-hoc ύϥϝʔλΛϢʔβʔʹ఻͑Δํ๏

    • ίʔυɿPull Requests · Altech/rails-restful-api ඞཁͩͬͨج൫࣮૷
  17. γΰτͰίίϩΦυϧ ࣮ફ

  18. γΰτͰίίϩΦυϧ • Wantedly Visit ͷձࣾը໘ͷAPIΛ࡞Δ • Ұॹʹॻ͍͍͖ͯ·͢ʂ ଎श಺༰

  19. None
  20. γΰτͰίίϩΦυϧ • ׬੒඼ɿhttps://github.com/Altech/rails-restful-api/pull/7

  21. γΰτͰίίϩΦυϧ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ