Slide 1

Slide 1 text

ҙਤͤ͵ϨεϙϯεΛ ๷͙APIઃܭ2ͭͷίπ 2017/7/18 taogawa

Slide 2

Slide 2 text

ࣗݾ঺հ • גࣜձࣾΩονϋΠΫ ΤϯδχΞ • খ઒ ߶ (taogawa) • αʔόʔαΠυΛओʹ୲౰͍ͯ͠·͢ɻ

Slide 3

Slide 3 text

ྉཧΛͭ͘Δਓͱ৯΂ΔਓͷަྲྀίϛϡχςΟαΠτ KitchHike https://kitchhike.com/

Slide 4

Slide 4 text

TechBlog΋΍ͬͯ·͢ http://tech.kitchhike.com/ ʮDHHྲྀͷϧʔςΟϯάͰಘΒΕΔϝϦοτͱɺऔΓೖΕΔ্ͰͷϙΠϯτʯ ͱ͍͏هࣄΛॻ͖·ͨ͠

Slide 5

Slide 5 text

API։ൃʹ ͖ͭ·ͱ͏໰୊

Slide 6

Slide 6 text

ʮҙਤͤ͵Ϩεϙϯεʯ Λ๷͙ϙΠϯτ

Slide 7

Slide 7 text

render json: @user.as_json # => response # { # "id": 1, # "first_name": "hike", # "last_name": "kitch", # ... # "password_digest": "xxxxxxxxx" # !!!!! # }

Slide 8

Slide 8 text

ҙਤͤ͵Ϩεϙϯε • ϢʔβʔຊਓͷΈݟΕΔ΂͖ඇެ։৘ใΛϨ εϙϯεͰฦ͍ͯ͠Δ • Ծʹඇެ։APIͰ͋ͬͯ΋ΫϥΠΞϯτʹσʔ λ͕౉ΔͨΊɺආ͚ͳͯ͘͸͍͚ͳ͍ • ҰํͰͪΐͬͱͨ͠ϛεʹΑΔόά͕ೖΓࠐ Έ΍͍͢

Slide 9

Slide 9 text

ҙਤͤ͵ϨεϙϯεΛ ઃܭϨϕϧͰ๷͙

Slide 10

Slide 10 text

1. Ϩεϙϯε߲໨͸ ϗϫΠτϦετํࣜ

Slide 11

Slide 11 text

ϒϥοΫϦετํࣜΛࢭΊΑ͏ • ϒϥοΫϦετํࣜ͸ϛεΛ͠΍͍͢ • ͍ͭͷ·ʹ͔ΧϥϜ͕ՃΘͬͨ • ϒϥοΫϦετ΁ͷ෇͚Ճ͑࿙Ε • ۩ମతʹݴ͑͹ as_json ͸ࢭΊͨ΄͏͕͍͍ Ͱ͢

Slide 12

Slide 12 text

before render json: @user.as_json # => response # { # "id": 1, # "first_name": "hike", # "last_name": "kitch", # ... # } • as_json͸σϑΥϧτͰશͯͷ߲໨Λฦ͢ͷͰ ਏ͍ɾɾɾ

Slide 13

Slide 13 text

ϗϫΠτϦετํࣜʹ͠Α͏ • ϨεϙϯεͰฦ͢΂͖߲໨Λ໌จԽ͢Δ • ॻ͔ͳ͍߲໨͸Ϩεϙϯεʹؚ·Εͳ͍ • ActiveModelSerializer, Jbuilder • as_json ͕ආ͚ΒΕͳͯ͘΋ɺͤΊͯonlyࢦఆ Λ͠Α͏

Slide 14

Slide 14 text

after class UserSerializer < ActiveModel::Serializer attributes :id, :full_name def full_name "#{object.first_name} #{object.last_name}" end end # => response # { # "id": 1, # "full_name": "hike kitch" # }

Slide 15

Slide 15 text

2. Ϣʔβʔࣗ਎/ͦΕҎ֎ͷ Ϧιʔε͸ΤϯυϙΠϯτΛ ෼͚Δ

Slide 16

Slide 16 text

Α͋͘Δύλʔϯ • ΫΤϦύϥϝʔλͰϨεϙϯεΛग़͠෼͚Δ • Ϩεϙϯεͷग़͠෼͚ͷ৚݅൑ఆϛε • ެ։Ϧιʔε͚ͩͷͭ΋Γ͕ϢʔβʔͷϓϥΠ ϕʔτϦιʔε΋ฦ͍ͯͨ͠

Slide 17

Slide 17 text

before # /kitchens/:id?scope=self class KitchensController < ApplicationController def show if params[:scope] == "self" # ... else # ... end end end

Slide 18

Slide 18 text

͍ͬͦΤϯυϙΠϯτΛ ෼͚Α͏ • ΫΤϦύϥϝʔλͰͷ৚݅෼ذͰ͸ͳ͘ɺί ϯτϩʔϥࣗମΛ෼͚Δ • ϓϥΠϕʔτϦιʔε͸selfͷωʔϜεϖʔε ഑ԼʹҰݩԽ

Slide 19

Slide 19 text

after # /kitchens/:id class KitchensController < ApplicationController def show end end # /self/kitchens/:id class Self::KitchensController < ApplicationController def show end end

Slide 20

Slide 20 text

ΤϯυϙΠϯτ෼ׂͷϝϦοτ • ৚݅෼ذͷϛεͷ৺഑Λͳͤͨ͘ • ҆৺ײ͕ͱͯ΋େ͖͍ • ͜ͷΤϯυϙΠϯτ͸ɺ͜ͷϨεϙϯεɺͷ ੾Γ෼͚͕͸͖ͬΓͨ͠ • ։ൃऀͷೝࣝҧ͍Λͳͤͨ͘

Slide 21

Slide 21 text

ΤϯυϙΠϯτ෼ׂͷσϝϦο τ • ౰વAPIίʔϧ਺͸૿͑Δ • N+1ʹ͸ͳΒͳ͍ͷͰڐ༰͍ͯ͠Δ • ෼ׂͨ͠ίϯτϩʔϥͰͷίʔυͷॏෳ͕ى ͜Γ΍͍͢ • Ϟσϧ૚ʹίʔυΛدͤͯରԠ

Slide 22

Slide 22 text

·ͱΊ • ҙਤͤ͵ϨεϙϯεΛฦ͞ͳ͍ઃܭ2ͭͷίπ • Ϩεϙϯε͸ϗϫΠτϦετํࣜʹ͢Δ • ৚݅෼ذΑΓΤϯυϙΠϯτͷ෼ׂ

Slide 23

Slide 23 text

We’re Hiring!