Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ೋਓνʔϜʹ͓͚Δ όοΫΤϯυ։ൃͷ ޮԽΛٻΊͯ For RailsDM Day 4, 2018/12/08 By OKURA Masafumi (@okuramasafumi) from Cycle
Slide 2
Slide 2 text
͜ͷൃදʹ͍ͭͯ • εϥΠυຕɿ31ຕ • ൃද࣌ؒɿ20ʢ࣭ٙԠؚΉʣ • Ұ൪͞ΔͰ͋Ζ͏ɿখ͍͞νʔϜͰϦιʔ εෆʹΈͭͭ։ൃ͍ͯ͠Δਓͨͪ
Slide 3
Slide 3 text
ࣗݾհ • ໊લɿେխ࢙ • ձࣾɿCycleʢՈ͞Μ͚ΞϓϦ։ൃʣ • Ruby/Railsྺɿ5ڧ • ͓ࣄɿRailsͰͷAPI։ൃɺAWSͷΠϯϑϥཧ • ΤσΟλɿVim
Slide 4
Slide 4 text
͓ॻ͖ 1. νʔϜਓ͕গͳ͍͜ͱͰੜ͡Δओͳ 2. ։ൃํʢͱอकੑͷόϥϯεʣ 3. RailsͷAPI։ൃʹؔ͢Δπʔϧ 4. ίʔυϨϏϡʔʹؔ͢Δπʔϧͱ࢟
Slide 5
Slide 5 text
1. νʔϜਓ͕গͳ͍͜ͱͰ ੜ͡Δओͳ
Slide 6
Slide 6 text
ͦͦ • νʔϜਓଟ͚Ε͍͍ͱ͍͏ͷͰͳ ͍ • ཧগਫ਼Ӷ͕ͩɺগ͗ͯ͢ਏ͍͠ਫ਼ Ӷ͚ͩͱ͍͔ͳ͍ʢࢲ͕ࣗ…ʣ
Slide 7
Slide 7 text
͏ͪͷνʔϜͷݱঢ় • ΤϯδχΞ2໊ʢ͏ͪ1໊ࢲʣ • Γͷ1໊CEO • όοΫΤϯυʢRails APIʣ2໊ͱͰ͖Δ • ϑϩϯτΤϯυʢReact Nativeʣࢲ͕Ͱ͖ͳ ͍
Slide 8
Slide 8 text
ೋਓνʔϜͷ͕͜͜ਏ͍ • શPRͷϨϏϡʔ૬ख͕ݟͳͯ͘ͳΒͳ͍ ʢ૬ख͕ٳΈor͍͠ͱϨϏϡʔ͕ࢭ·Δʣ • ૬ஊ૬ख͕গͳ͍ • CEO͍͠Μͩ <- IMPORTANT!
Slide 9
Slide 9 text
CEO͍͠ • CEO։ൃҎ֎ʹࢿۚௐୡͦͷଞͰखҰഋͰ ͋Γ͕ͪ • ͔͠͠ɺίʔυͷ࣭ΛอͭͨΊʹίʔυϨ Ϗϡʔ͍ͨ͠͠ɺԿΑΓCEO͕ࣗRubyΛ ॻ͖͕ͨΔ • ࢲͱͯ͠ɺCEOϑϩϯτͬͯ΄͍͠
Slide 10
Slide 10 text
CEO͍͠ʢଓʣ • ΤϯδχΞͱͯ͠ͷCEOΛ࠷େݶʹαϙʔτ ͍ͨ͠ɺͦͷͨΊʹ • Railsଆͷ։ൃޮΛ্͛Δ • APIͱͷͭͳ͗ࠐΈ෦Λޮతʹ͢Δ
Slide 11
Slide 11 text
2. ։ൃํ ʢͱอकੑͷόϥϯεʣ
Slide 12
Slide 12 text
جຊޮॏࢹ • ೋਓνʔϜجຊతʹ͕࣌ؒͳ͍ • CEOͷ࣌ؒوॏ • ϢʔβʔମݧʹͱͬͯॏཁͳͷϑϩϯτΤ ϯυͳͷͰɺͦͪΒʹ࣌ؒΛ͍͍ͨ
Slide 13
Slide 13 text
ίʔυ࣭ͱͷόϥϯε • ΤϯδχΞͱͯ͠ίʔυ࣭कΓ͍ͨ • Ϗδωεͷظతͳʹίʔυͷॊೈ͞ ͕ॏཁ • ςετ͔ͬ͠Γॻ͖͍ͨ͠ɺՄಡੑߴ͘ อ͍ͪͨ
Slide 14
Slide 14 text
૬͢Δཁٻ • ޮΛߴ͘อͪͭͭɺίʔυͷ࣭Λߴ͘ ҡ࣋͢Δ • ྆ํΛ࠷େʹ͢Δ͜ͱͰ͖ͳ͍ͷͰɺόϥ ϯεʢଥڠʣΛߟ͑Δ • GemͦͷଞͷύϫʔΛ׆͔͢
Slide 15
Slide 15 text
3. RailsͷAPI։ൃʹؔ͢Δ πʔϧ
Slide 16
Slide 16 text
Rails͢Ͱʹޮత • Railsͷʢॳظʣੜ࢈ੑͷߴ͔͞ͳΓͷͷ • େ͖ͳཧ༝ͷҰ͕ͭCoC (Convention over Configuration)ɺʮઃఆΑΓنʯ • ͰɺنΛͬͱͨ͘͞Μಋೖ͢ΔͷͲ ͏ͩΖ͏ʁ
Slide 17
Slide 17 text
نΛಋೖ͢Δ • نΛಋೖͰ͖ͦ͏ͳՕॴΛߟ͑Δ • APIͷεΩʔϚ • αʔϏεΦϒδΣΫτͷAPI • RSpecͷॻ͖ํ
Slide 18
Slide 18 text
APIͷܗࣜʹ͍ͭͯͷن • ࣗͨͪͰߟ͑ͯͪΖΜྑ͍ • ͕ɺ࣌ؒΛઅ͢ΔͨΊͷنͷ࡞ʹ࣌ؒΛ͏ͷ … • ͢Ͱʹ͋ΔنΛྲྀ༻͍ͨ͠ • JSON:API͕͋Δ͡ΌΜʂ • fast_jsonapi͕͋Δ͡ΌΜʂ
Slide 19
Slide 19 text
JSON:API • https://jsonapi.org/ • ;໊͚ͨ͟લͰ༗໊ʢʁʣͳJSONʹ͓͚Δ APIͷ༷ • རɿࡉʑͨ͜͠ͱΛߟ͑ͳͯ͘Α͘ͳΔ • ܽɿ͔ͳΓ
Slide 20
Slide 20 text
fast_jsonapi • https://github.com/Netflix/fast_jsonapi • NetflixʹΑΔߴͳγϦΞϥΠβ࣮ • ActiveModelSerializerΑΓ͔ͳΓߴ • ରԠ͍ͯ͠ΔܗࣜJSON:APIͷΈ
Slide 21
Slide 21 text
αʔϏεΦϒδΣΫτʹ͍ͭͯ ͷن • αʔϏεΦϒδΣΫτɺͳΜ͔ͩΜ͍ͩͨ ͍ͱ͖͕͋Δ • αʔϏεΦϒδΣΫτRailͷ֎ͳͷͰɺن ଘࡏ͠ͳ͍ • Interactorͱ͍͏gemΛൃݟ
Slide 22
Slide 22 text
Interactor • https://github.com/collectiveidea/interactor • ϏδωεϩδοΫΛΧϓηϧԽ͢ΔͨΊͷgem • ϩʔϧόοΫ͕ఆٛͰ͖Δ͜ͱͱνΣΠϯΛ؆ ୯ʹॻ͚Δ͜ͱ͕ಛ • `call`ϝιουʹΠϯλʔϑΣʔε͕౷Ұ͞ΕΔ
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
RSpecʹؔ͢Δن • RSpec͔ͬ͠Γॻ͍͍͖͍ͯͨ • ͱ͍͑ޮͱͷ݉Ͷ߹͍Ͱॻ͘ͷModel Specͱ Request SpecͷΈɻ • Request SpecෳࡶʹͳΓ͍͢ͷͰͳΜͱ͔͍ͨ͠ • rspec-request_describer͕͋Δ͡ΌΜ
Slide 25
Slide 25 text
rspec-request_describer • https://github.com/r7kamura/rspec- request_describer • describeͷҾʹͨ͠จࣈྻ͕ͦͷ··࣮ߦ ͞ΕΔϦΫΤετͷHTTPͷϝιουͱύεʹ ͳΔ • ύϥϝʔλIDletͰࢦఆͰ͖Δ
Slide 26
Slide 26 text
autodoc • https://github.com/r7kamura/autodoc • ࣮ࡍʹ͍ͬͯͳ͍͕ɺautodocΛ͏ͱυ ΩϡϝϯτͷࣗಈੜՄೳ • ͍ͬͯͳ͍ཧ༝ɺೋਓͱRSpec͕ಡΊ ΔͷͰͦͬͪಡΜͩ΄͏͕ૣ͍͔Β
Slide 27
Slide 27 text
4. ίʔυϨϏϡʔʹؔ͢Δ πʔϧͱ࢟
Slide 28
Slide 28 text
ίʔυϨϏϡʔͷޮ • લఏͱͯ͠ɺίʔυඞͣϨϏϡʔ͢Δ • ϩδοΫ͕όάͬͯͳ͍͔ɺDBͷεΩʔϚ େৎ͔ɺͳͲΛݟ͍ͨ • ࠣͳͰ͖Δ͚ͩࣄલʹ௵͓͖͍ͯͨ͠
Slide 29
Slide 29 text
RuboCopͷ׆༻ • CircleCIͰRuboCopΛΒͤΔ • खݩͷΤσΟλͰautocorrectͯ͠ϨΠΞτͷͱ ͔ίϛοτલʹ௵͢ • ຊSiderͱ͔͍͍͚ͨͲ͓͕ۚͳ͍ • ৄࡉ https://speakerdeck.com/okuramasafumi/ training-rubocop ࢀরͷ͜ͱʢεϥΠυӳޠʣ
Slide 30
Slide 30 text
·ͱΊ
Slide 31
Slide 31 text
ޮͱอकੑͷཱ྆Λࢦͯ͠ • نΛಋೖͰ͖ͦ͏ͳͱ͜Ζʹੵۃతʹಋ ೖ͍ͯ͘͠ • GemͷྗΛआΓΕΔͱ͖ʹआΓ͍ͯ͘ • ίʔυϨϏϡʔେࣄͳͱ͜Ζ͚ͩʹߜͬͯ ͍͘