ドキュメントとテストのないプロジェクトを引き継ぐ

 ドキュメントとテストのないプロジェクトを引き継ぐ

2017.07.24 技術的負債ナイト@Speee の発表資料です。
https://speee.connpass.com/event/60381/

C638d4b3de6d551fb67ba50a572734c9?s=128

takanamito

July 24, 2017
Tweet

Transcript

  1. υΩϡϝϯτͱςετͷͳ͍ ϓϩδΣΫτΛҾ͖ܧ͙ ٕज़తෛ࠴φΠτ@Speee 7/24 2017

  2. ࣗݾ঺հ • id: takanamito • גࣜձࣾSpeee • ΤϯδχΞ • ि຤ʹαʔϞϯϥϯͰ͸͠Ό͗͗ͯ͢ͷͲ͕௧͍

  3. • ෆಈ࢈ҰׅࠪఆαΠτ • ౔஍΍ՈΛചΓ͍ͨϢʔβʔ͞Μͱෆಈ࢈اۀͷϚονϯά • 2014೥ελʔτ • 1500ࣾҎ্ͷاۀͱఏܞ͠
 20ສ݅ͷෆಈ࢈ച٫੒ཱαϙʔτ •

    ࣄۀશମͰ40~50໊΄Ͳ
  4. ΋͘͡ • νʔϜjoin࣌ͷঢ়گ • Կ͕ෛ࠴ͩͬͨͷ͔ • ෛ࠴ͱͷ෇͖߹͍ํΛߟ͑Δ • ෛ࠴ͱ޲͖߹͏࣌ʹҙ͍ࣝͯͨ͜͠ͱ

  5. νʔϜjoin࣌ͷঢ়گ 1/4

  6. 5/1 join • ։ൃνʔϜ͸4໊ • ͏ͪ1໊ͷୀ৬ʹ൐͍ɺ๻͕ҟಈ͖ͯͨ͠ • ಈ͍͍ͯΔ΋ͷ • ຊମαΠτ

    (Ruby, PHP) • Adminπʔϧ (Java੡, 724class, 66,611ߦ) • ΫϥΠΞϯτاۀ͞·޲͚πʔϧ (Java) • όον͕41ݸ (΄ͱΜͲJava)
  7. Կ͕ෛ࠴ͩͬͨͷ͔ 2/4

  8. ෛ࠴ʹ΋͍Ζ͍Ζ Ҿ༻
 ٕज़తෛ࠴ͷฦࡁϓϩδΣΫτ͕ࣦഊ͢ΔͷϫέKqVUFͷ೔ه IUUQEIBUFOBOFKQKqVUFEFQUBHBJO ٕज़తෛ࠴2JJUB IUUQRJJUBDPNFSVLJUJJUFNTDDEEF

  9. ΠΤ΢ʔϧʹ͓͚Δෛ࠴ • υΩϡϝϯτ͕଍Γͯͳ͍ • ͦ΋ͦ΋Կͷػೳ͕͋Δπʔϧͳͷ͔ • ʮ࣮͸͜ͷυΩϡϝϯτݹͯ͘...ʯ • ςετίʔυ͕গͳ͍ •

    Adminπʔϧ 66,611ߦʹରͯ͠ 39tests • ୀ৬༧ఆͷ։ൃऀͷ಄ͷதʹ͔͠ͳ͍࢓༷ • λΠϜϦϛοτ͸1ϲ݄
  10. ༧໿࣮ߦόον • ೔࣍ͰఏܞاۀͷܝࡌεςʔλεͳͲΛ
 ੾Γସ͑Δ༧໿͕Ͱ͖Δػೳ • ༧໿छผʹςʔϒϧ͕͋Γɺ༧໿Ϩίʔυ͕1݅ͣͭ insert͞Ε͍ͯ͘ • ʮͳΜͰ͜ͷςʔϒϧ͚ͩ༧໿࣮ߦͯ͠ͳ͍ΜͰ͔͢ʁʯ •

    ʮ͑ͬʯ • Ұੜ࣮ߦ͞ΕΔ͜ͱ͕ͳ͍༧໿ػೳͩͬͨ͜ͱ͕ൃ֮
  11. ୭ʹฉ͍ͯ΋Θ͔Βͳ͘ͳΔ ঢ়گ͕ഭ͖͍ͬͯͯͨ

  12. υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ

    º º  ˕ ˚ º +BWB੡
 όον܈ º º d ˓ º ˓ ˞͋ͱͰ΋͏ճग़͢ͷͰɺͬ͟ͱݟͱ͍͍ͯͩ͘͞
  13. ෛ࠴ͱͷ෇͖߹͍ํΛߟ͑Δ 3/4

  14. ࢧ෷͏΂͖͔ɺࢧ෷Θ͟Δ΂͖͔ • ෛ࠴ͷ෷͍໭͠: ٕज़తෛ࠴ͩͱࢥΘΕΔίʔυɺϑϨʔϜϫʔ ΫɺϓϥοτϑΥʔϜΛϦϑΝΫλϦϯά͢Δ͔ɺஔ͖׵͑Δ • ෛ࠴ͷస׵: ݱࡏͷղܾࡦΛʮ׬ᘳͰ͸ͳ͍͚ΕͲ΋ྑ͍ʯղܾ ࡦͱஔ͖׵͑Δɻ৽͍͠ղܾࡦ͸ɺΑΓ௿͍ར཰Ͱ͋Γɺ׬ᘳ ͳղܾࡦΛߏங͢ΔͱඇৗʹߴՁʹͳΔͳΒ͹ɺΑ͍બ୒ࢶ͔

    ΋͠Εͳ͍ • རଉͷΈࢧ෷͏: ίʔυͱͱ΋ʹੜ͖ΔɻϦϑΝΫλϯϦϯά ͸ɺͦΕ΄Ͳྑ͘ͳ͍ίʔυʹऔΓ૊ΉΑΓ΋ߴ͔ͭ͘͘Β Ҿ༻.BOBHJOH5FDIOJDBM%FCU IUUQTXXXJOGPRDPNBSUJDMFTNBOBHJOHUFDIOJDBMEFCU
  15. Ͳ͜·Ͱฦࡁͯ͠ Ͳ͜·Ͱڞଘ͍͔ͯ͘͠

  16. υΩϡϝ ϯτ ςετ ଐਓԽ ෳࡶ౓
 d ॏཁ౓ ۓٸ౓ "ENJO πʔϧ

    º º ˚  ˕ º +BWB੡
 όον܈ º º º  ˓ ˓ υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ º º  ˕ ˚ º +BWB੡
 όον܈ º º d ˓ º ˓ ڞ௨ͯ͠ ଍Γͯͳ͍
  17. υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ

    º º  ˕ ˚ º +BWB੡
 όον܈ º º  ˓ º ˓ υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ º º  ˕ ˚ º +BWB੡
 όον܈ º º d ˓ º ˓ "ENJO͸ӡ༻ʹ ৯͍ࠐΜͰ͍ΔͨΊ ෳࡶ౓͸ߴ͍͕ɺ൓໘ ࢓༷ʹৄ͍͠ਓ͕ଟ͔ͬͨ
  18. υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ

    º º  ˕ ˚ º +BWB੡
 όον܈ º º d ˓ º ˓ όον܈͸ΤϯδχΞ͔͠ ஌Βͳ্͍ʹ ୀ৬༧ఆͷࣾһʹ஌ݟ͕ूத
  19. υΩϡϝ ϯτ ςετ ෳࡶ౓
 d ॏཁ౓ ଐਓԽ ۓٸ౓ "ENJO πʔϧ

    º º  ˕ ˚ º +BWB੡
 όον܈ º º d ˓ º ˓ ୀ৬લʹͳΜͱ͔͠ͳ͍ͱ ຊ౰ʹ୭΋৮Εͳ͘ͳΔ
  20. όον܈ • ୀ৬༧ఆͷ։ൃऀ͕͍ͳ͘ͳΔͱ୭΋࢓༷͕Θ ͔Βͳ͍ • छྨ͕ଟ͘ࠓޙมߋͷՄೳੑ͕ߴ͍ίʔυ
 ૣΊʹίϯτϩʔϧͰ͖ΔΑ͏ʹ͍ͨ͠ • ଐਓԽ x

    ॏཁ౓͕ߴ͍ͱ൑அ͠
 ෛ࠴ͷ෷͍໭͠(RubyԽ)Λ͢Δ͜ͱʹ
  21. Adminπʔϧ • ΠΤ΢ʔϧͷࣄۀͷίΞͱͳΔπʔϧ • ࢓༷ʹৄ͍͠ਓ͕ΤϯδχΞҎ֎ʹ΋ • ܹ͘͠ػೳ௥Ճվम͢Δ༧ఆ͸ͳ͍ • རଉͷΈࢧ෷͏ (͜ͷ··ӡ༻͢Δ)͜ͱʹ

    • ৽ػೳ௥Ճ࣌ʹ͸Railsʹ੾Γग़͢
 ෛ࠴ͷస׵ͷબ୒ࢶ΋
  22. ҙࣝͨ͠ϙΠϯτ • ଐਓԽ͍ͯͨ͠΋ͷΛࣗ෼ͨͪͷίϯτϩʔϧ Լʹ • શͯΛฦࡁ͠Α͏ͱ͠ͳ͍ • ͳͥฦࡁ͢Δඞཁ͕͋Δͷ͔ɺฦࡁ͢Δ͜ͱͰ
 Կ͕ྑ͘ͳΔͷ͔ʹ͍ͭͯࣄۀ੹೚ऀͱ࿩͢

  23. ෛ࠴ͱ޲͖߹͏࣌ʹ
 ҙ͍ࣝͯͨ͜͠ͱ 4/4

  24. ෛ࠴ʹ޲͖߹͍ͳ͕Β • ӡ༻ܥͷλεΫΛੵۃతʹ΍Δ
 㱺 ࣄۀͱγεςϜ͕ಁ͚ͯݟ͑Δ • ͳͥͦ͏ͳͬͯΔ͔Θ͔Βͳ͍ͱ͜Ζ͸ฉ͍ͯΈΔ
 㱺 ༧໿όονͷΑ͏ͳൃݟ͕ •

    ୀ৬͢Δલʹɺ࢓༷Ͱ͸ͳ͘ӡ༻ʹؔ͢ΔυΩϡϝϯτ Λ࡞ͬͯ΋Β͏
 㱺 εςʔΫϗϧμʔ͕Θ͔Ε͹ฉ͘૬ख͕Θ͔Δ
  25. ·ͱΊ

  26. • ෛ࠴ͷछྨΛݟۃΊΔ • ෛ࠴Λฦࡁ͢Δ΂͖͔ߟ͑Δ • ෛ࠴Λฦ͢ίετΛݮΒͨ͢ΊͷΞΫγϣϯΛ

  27. ͋Γ͕ͱ͏͍͟͝·ͨ͠