今あえてDRY原則に向き合う

6521324f6ab5266cdcde1dd05945a27b?s=47 Shinpei Maruyama
February 09, 2018
550k

 今あえてDRY原則に向き合う

6521324f6ab5266cdcde1dd05945a27b?s=128

Shinpei Maruyama

February 09, 2018
Tweet

Transcript

  1. CZ͠Μ΃͍BLBೣܕ஝Իػ ࠓ͋͑ͯ%3:ݪଇʹ ޲͖߹͏

  2. BCPVUNF w ג ϝσΟϩϜ w ݈߁Λ΋ͬͱ৽͘͠ w 4DBMB w +BWB4DSJQU

    w 1FSM w 3VCZ
  3. BCPVUNF ͍Ζ͍Ζॻ͔͍͖ͤͯͨͩ·ͨ͠

  4. ࠓ೔ͷ࿩ w %3:ݪଇΛݟ௚ͦ͏ w ৽͍͔͠ʁ w Թނ஌৽ͱ͍͏͜ͱͰͲ͏͔ͻͱͭ

  5. ಋೖ

  6. %3:ݪଇධ൑Α͘ͳ͍ w ͋Δఔ౓ܦݧΛੵΜͩϓϩάϥϚ ʮ%3:ʹ͍͍ҹ৅ͳ͍ʯ͍͍ͬͯ ͕ͪ

  7. Θ͔Δ

  8. ຊ౰ʹ͋ͬͨා͍࿩ w ʮVQEBUFͱJOTFSUɺҾ਺͕ಉ͡ ͳͷͰಉؔ͡਺ʹ·ͱΊ·ͨ͠ʂ %3:ݪଇͰ͢ʂʯ

  9. ͩΜͩΜ%3:ʹ ରͯ͠υϥΠͳଶ౓ ͱΔΑ͏ʹͳΓ͕ͪ

  10. Ͱ΋ɺͦ΋ͦ΋ %3:ݪଇͬͯͳʹʁ

  11. %POU3FQFBU:PVSTFMG w ॏෳ͸Α͘ͳ͍͔Βॏෳ͸ഉআ͠Α ͏Ͷɺͱ͍͏ݪଇ w ϓϩάϥϜͷʮઃܭʯʹؔ͢Δݪଇ Ͱ͢Ͷ

  12. Αͦ͞͏͡ΌΜ ͱ͜ΖͰʜ

  13. %POU3FQFBU:PVSTFMG w ॏෳ͸Α͘ͳ͍͔Βॏෳ͸ഉআ͠Α ͏Ͷɺͱ͍͏ݪଇ w ϓϩάϥϜͷʮઃܭʯʹؔ͢Δݪଇ Ͱ͢Ͷ

  14. ઃܭͬͯͳΜͳͷʁ ;Θͬͱͯ͠ͳ͍ʁ

  15. ιϑτ΢ΣΞͷઃܭͬͯʁ w ໰୊Λ෼ׂͯ͠ɺߏ଄Խ͢Δ͜ͱʢཁ ग़యʣ

  16. ͳΔ΄Ͳʂ ෼ׂ͢Ε͹ ͑͑Μ΍ͳʂ

  17. Ͳ͏෼ׂ͢Δ͔ w ͨͱ͑͹%#Λѻ͏γεςϜʹ͍ͭͯɺ Ͳ͏͍͏໨ઢͰ෼ׂ͢Δ͔ߟ͑ͯΈΑ͏ w ςʔϒϧຖʹ෼ׂʁ w $36%Ͱ෼ׂʁ w ͋Δ͍͸ผͷࢹ఺Ͱ෼ׂʁ

    w ͍ΖΜͳํ๏͕ߟ͑ΒΕΔ͕ɺͲΕ͕ے͕ྑ ͍ͱݴ͑ΔʁͦΕ͸ͳͥʁ
  18. ΍Έ͘΋ʹ෼ׂͯ͠ ΋μϝ

  19. ઃܭݪଇ͕༩͑ͯ͘ΕΔ΋ͷ w ےͷྑ͍෼ׂͱ͸Ͳ͏͍͏෼ׂͳͷ ͔ʁΛߟ͑ΔͨΊͷࢦ਑

  20. %3:ݪଇΛ࢖ͬͯ ໰୊Λ෼ׂ͢Δ ྫΛݟͯΈΔ

  21. ྫ w ͨͱ͑͹ඒ༰Ӄͷ༧໿؅ཧγεςϜΛ ߟ͑Δ w ελοϑͱސ٬͕͍Δ w ελοϑ΋ސ٬΋ɺͱ΋ʹࢯ໊Λ࣋ ͭ w

    Ͳͬͪ΋pSTU@OBNFඞਢ
  22. ૉ௚ʹॻ͖Լ͠

  23. %3:͡Όͳ͍ʂ

  24. %3:ݪଇʹૉ௚ʹଇΔ w 1FSTPO͍ͬͯ͏ΫϥεΛ࡞ͬͯɺ TFU@pSTU@OBNF͸ͦ͜ʹॻ͜͏ʂ w 4UBGG͸1FSTPOΛܧঝͯ͠ w $MJFOU΋1FSTPOΛܧঝ͠Α͏ʂ w ΍ͬͨͶʂ%3:ͩʂ

  25. %3:ݪଇ

  26. ΍ͬͨͶʂ

  27. ຊ౰ʹʁ

  28. ͋Δ೔ w ʮ͜ͷγεςϜɺෆศͳΜͰ͢Αʯ w ి࿩༧໿ͷͱ໊͖ͬͯࣈ͔͠ਜ͔ͳ ͍͜ͱ͕ଟ͍Μ͚ͩͲɺͳΜ͔Լͷ ໊લ΋ඞਢೖྗͳΜ͢ΑͶ

  29. ͋Δ೔ w ʮελοϑ΋໊ࣈ͸ඞਢɺԼͷ໊લ ͸೚ҙͰ͍͍Ͱ͔͢ʯ w ʮ͍΍ɺͦΕ͸ࠔΔͳʙʯ

  30. ख͔͚ؒͣͰ͖Δमਖ਼

  31. ͜ΕͰ͍͍ͷʁ w ਌Ϋϥεʹʮڞ௨͡Όͳ͍ॲཧʯ͕ ॻ͔ΕͯΔ w ;ͨͭͷࢠΫϥεͷಈ͖ͷҧ͍͸਌ ΫϥεΛݟʹߦ͔ͳ͍ͱΘ͔Βͳ͍ w ෼ذ͸ෳࡶͷ࢝·Γ

  32. ͜ΕͰ͍͍ͷʁ w ΋ͬͱͪΌΜͱॻ͜͏ͱࢥͬͨΒ਌ Ϋϥεʹॻ͍ͯͨॲཧΛࢠΫϥεଆ ʹҠͯ͠ɺͦ͏͢Δͱ΋͸΍਌Ϋϥ εඞཁͳ͘ͳͬͯʜʜ w େखज़ͱͳΔ

  33. %3:ʹͨ݁͠Ռɺ Ή͠Ζෳࡶੑ͕ ૿ͯ͠ϝϯςφϏϦ ςΟ௿Լͨ͠ʜ

  34. ͳͥ͜Μͳ͜ͱʹʜ

  35. %3:ݪଇ l͚ͩz Λߟ͍͑ͯΔ͍ͤ

  36. ଞͷઃܭݪଇ΋ ݟͯΈΑ͏

  37. ڽू౓ͱ݁߹౓

  38. ڽू౓ͱ݁߹౓ w ڽू౓͸ߴ݁͘߹౓͸௿͘ w ؔ࿈ͷߴ͍΋ͷ͸ಉ͡෦඼ʹ·ͱΊΔ w ෦඼ಉ࢜ͷӨڹ͸ͳΔ΂͘খ͘͢͞Δ

  39. ڽू౓͕௿͍ྫ ؔ࿈͢Δ΋ͷΛ όϥόϥόϥͬͱ ͍ͬͯ͡͠·͍ͬͯΔ

  40. ڽू౓ΛߴΊΔ ؔ࿈͢Δ΋ͷ͸ ͻͱͭʹ·ͱΊΔ

  41. ݁߹౓͕ߴ͍ྫ 4UB⒎ͱ$MJFOU ຊདྷผͷ΋ͷͳͷʹ ॲཧ͕ͻͱͭͷͱ͜Ζʹ ॻ͔Εͯ͠·͍ͬͯΔ

  42. ݁߹౓Λ௿ΊΔ w ͋ͱͰ΍Γ·͢

  43. ୯Ұ੹೚ݪଇ

  44. ୯Ұ੹೚ݪଇ w ͋ΔΫϥε͕มߋ͞ΕΔཧ༝͕̎ͭ Ҏ্͋ͬͯ͸͍͚ͳ͍

  45. ୯Ұ੹೚ݪଇʹ൓͢Δྫ ΫϥεΛมߋ͢Δཧ༝ɿ 4UB⒎ͷ࢓༷มߋ $MJFOUͷ࢓༷มߋ

  46. ୯Ұ੹೚ʹ͢Δ w ͋ͱͰ΍Γ·͢

  47. ղ์ด࠯ݪଇ

  48. ։์ด࠯ݪଇ w ֦ுʹରͯ͠։͍͍ͯΔ w ػೳ௥Ճ͢Δࡍʹɺ΋ͱ΋ͱͷίʔυʹӨ ڹ͕ͳ͍Α͏ʹ͠Α͏ w मਖ਼ʹରͯ͠ด͍ͯ͡Δ w ಺෦Λमਖ਼ͨ͠ͱ͖ʹͦͷΫϥεʹґଘ͠

    ͯΔΫϥεʹӨڹ͕ͳ͍Α͏ʹ͠ͳ͚Ε͹ ͳΒͳ͍
  49. ֦ுʹରͯ͠։͍͍ͯͳ͍ ߴ଎ҠಈϞʔυͷଞʹ΋ ΧχϞʔυ͕௥Ճ͞ΕͨΒʁ

  50. ֦ுʹରͯ͠։͘ ΧχϞʔυ͕௥Ճ͞Εͯ΋ ଞͷΫϥεΛॻ͖׵͑Δ ඞཁͳ͠

  51. मਖ਼ʹରͯ͠։͍͍ͯͳ͍ ߴ଎ҠಈϞʔυΛमਖ਼͢Δͱ͖ ΧχϞʔυʹ΋ӨڹΛ ༩͔͑Ͷͳ͍

  52. मਖ਼ʹରͯ͠ด͡Δ ߴ଎ϞʔυΛमਖ਼ͯ͠΋ ଞͷΫϥεʹӨڹΛ༩͑ͳ͍

  53. Ҏ্Λҙࣝͯ͠ ໰୊Λ࠶ݕ౼͢Δ

  54. ໰୊ͷݟ௚͠ w 4UBGG΋$MJFOU΋ͲͪΒ΋ࢯ໊Λ ࣋ͭ w ಉ͡7BMJEBUJPOͰ͋Δ w ผʑʹॻ͘ͱ%3:͡Όͳ͍ͷͰͳ Μͱ͔͍ͨ͠

  55. w %3:Ͱͳ͍ຊདྷͻͱͭͷΫϥ ε΍ϝιου͕୲͏΂͖੹຿͕ෳ਺ ͷͱ͜Ζʹ͹Β·͔Εͯ͠·͍ͬͯ Δ w ੹຿Λݟ௚ͯ͠ΈΔ΂͖ ໰୊఺

  56. ୯Ұ੹೚ݪଇʢ࠶ܝʣ w ͋ΔΫϥε͕มߋ͞ΕΔཧ༝͕̎ͭ Ҏ্͋ͬͯ͸͍͚ͳ͍ w ˠʮมΘΓͦ͏ͳͱ͜Ζʯ͕Ͳ͔͜ Λ஌Γɺ͔ͦ͜Βʮ෼ׂ఺ʯΛݟग़ ͢΂͖

  57. Ͳ͕͜มΘΓͦ͏ʁมΘΒͳͦ͏ʁ w ސ٬ελοϑͱ͍͏΋ͷ͕ଘࡏ͢ Δ͜ͱ͸ଟ෼ͦ͏ͦ͏มΘΒͳ͍ͩ Ζ͏ w ސ٬ࣗମͷ࢓༷มߋ͸͋Γͦ͏ w ελοϑͷ࢓༷มߋ΋͋Γͦ͏

  58. Ͳ͕͜มΘΓͦ͏ʁมΘΒͳͦ͏ʁ w ʮۭന͔Ͳ͏͔ΛνΣοΫ͢Δʯͬ ͯඞཁੑ͸มΘΒͣ͋Γͦ͏ w ۭനͱ͸Կ͔ʁ͸มΘΔ͔΋ʢεϖʔ ε͸ʁOJM͸ʁվߦ͸ʁʣ

  59. Ͳ͏෼ׂ͢Δ w ސ٬ w ސ٬ͷ࢓༷มߋʹΑͬͯมΘΔ w ελοϑ w ελοϑͷ࢓༷มߋʹΑͬͯมΘΔ w

    ۭനνΣοΫ܅ w ۭനͱ͸Կ͔ɺͱ͍͏࢓༷ʹΑͬͯมΘΔ
  60. ΍ͬͯΈͨ

  61. Ұ౓Ҿ͍ͯ ઃܭݪଇΛຬͨͯ͠ ͍Δ͔ݟͯΈΔ

  62. ݁߹౓ڽू౓ w ڞ௨ͷ਌Ϋϥε͕ͳ͘ͳͬͯ$MJFOU ͱ4UBGGͷ݁߹౓͕௿͘ͳͬͨ w ۭനνΣοΫॲཧࣗମ͸ۭനνΣο Ϋ܅ʹ੾Γग़͞Ε͓ͯΓɺڽू౓͕ ߴ·ͬͨ

  63. ୯Ұ੹೚ݪଇ w $MJFOU͕มߋ͞ΕΔཧ༝͸$MJFOUͷ࢓༷͕ มΘͬͨͱ͖ w 4UBGG͕มߋ͞ΕΔཧ༝͸4UBGGͷ࢓༷͕ มΘͬͨͱ͖ w &NQUZ7BMJEBUPS͕มߋ͞ΕΔཧ༝͸ ʮ&NQUZͷఆٛʯ͕มΘͬͨͱ͖

    OJM΋ &NQUZͱΈͳ͢ͱ͔ʣ
  64. ։์ด࠯ݪଇ w ͦΕͧΕ͕मਖ਼͞Εͯ΋ͦΕͧΕʹ ରͯ͠ӨڹΛ༩͑ͳ͍ʢमਖ਼ʹରͯ͠ ด͍ͯ͡Δʣ w ৽͍͠WBMJEBUPSΛఆٛͯ͠΋ͦΕ ͧΕʹӨڹΛ༩͑ͳ͍ʢ֦ுʹର͠ ͯ։͍͍ͯΔʣ

  65. ͋Δ೔ w ʮ͜ͷγεςϜɺෆศͳΜͰ͢Αʯ w Ծ༧໿ͷͱ໊͖ͬͯࣈ͔͠ਜ͔ͳ͍ ͜ͱ͕ଟ͍Μ͚ͩͲɺͳΜ͔Լͷ໊ લ΋ඞਢೖྗͳΜ͢ΑͶ

  66. ͋Δ೔ w ʮελοϑ΋໊ࣈ͸ඞਢɺԼͷ໊લ ͸೚ҙͰ͍͍Ͱ͔͢ʯ w ʮ͍΍ɺͦΕ͸ࠔΔͳʙʯ

  67. मਖ਼ͨ͠

  68. ͋Δ೔ w ϑΥʔϜ͔Β͸͍͍Μ͚ͩͲɺ"1* ͔Βୟ͍ͨΒͳΜ͔Τϥʔग़ͯΔΜ ͚ͩͲ w ˠௐ΂ͨΒɺpSTU@OBNFʹۭจࣈ ྻ͡Όͳͯ͘OJM͕౉͖ͬͯ͏Δ͜ͱ ͕Θ͔ͬͨ

  69. मਖ਼ͨ͠

  70. ΄͔ͷ ઃܭݪଇ΋ߟ͑ͯ ॻ͍ͨΒ อकੑ͕ߴ·ͬͨʂ

  71. w ·ͩͪΐͬͱ%3:͡Όͳ͍ʁ w 3VCZͷϝλϓϩʙΈ͍ͨͳ΍ͭͰͳΜ ͱ͔Ͱ͖ͦ͏ w ͦͷࡍ͸ʮଞͷઃܭݪଇΛഁΒͳ͍ʯ͜ ͱʹؾΛ͚ͭͳ͕Β΍Γ·͠ΐ͏ ·ͱΊͱ༨ஊ

  72. ·ͱΊͱ༨ஊ w %3:͸ѱ͍΍ͭ͡Όͳ͍ɻ%3:ʮ͚ͩʯ͠ ͔ߟ͑ͳ͍ͷ͕ѱ͍ w ੹຿Λద੾ʹ෼ׂ͢ΔͨΊʹ͸ɺʮͲ͕͜ม ΘΓͦ͏ͰͲ͕͜มΘΒͳͦ͏͔ʯΛ஌Δ͜ ͱ͕େࣄ w ͦΕ͕Θ͔Βͳ͍͏͔ͪΒա৒ʹઃܭ͢Δͷ

    ͸ѱख
  73. w ܧঝΑΓҠৡΛ࢖͑ͬͯ࿩ʁʮͳ ͥʯʮͲ͏͍͏ͱ͖ʹʯͦ͏͢΂͖͔ ͱ͍͏࿩Ͱ͢ w ʮͳΜͱͳ͘ηϯεͰ΍͍ͬͯͯͭ΋ ࠔͬͯͳ͍͚ͲʯͦΕ͕Ͱ͖Δͻ ͱ͸͜Μͳൃදແࢹͯ͠େৎ෉ʂ ·ͱΊͱ༨ஊ

  74. ࠷ޙએ఻ w Ұॹʹಇ͍ͯ͘ΕΔͻͱΛืूͯ͠· ͢ w ࣗຫͰ͖ΔϓϩάϥϚͱҰॹʹಇ͍ ͯ·͢ w ·ͩ·͍ͩΖ͍Ζ໰୊͕͋Δ͚ͲҰ ॹʹઓͬͯ͘ΕΔͻͱ୳ͯ͠·͢