二人チームにおけるバックエンド開発の効率化を求めて
by
Masafumi Okura
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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ͷྗΛआΓΕΔͱ͖ʹआΓ͍ͯ͘ • ίʔυϨϏϡʔେࣄͳͱ͜Ζ͚ͩʹߜͬͯ ͍͘