Rethinking Technical Debt

Rethinking Technical Debt

JAWS DAYS2014で発表した「「技術的負債」を問いなおす」の資料。

補足: http://blog.kentarok.org/entry/2014/03/15/224227

23f4d5d797a91b6d17d627b90b5a42d9?s=128

Kentaro Kuribayashi

March 15, 2014
Tweet

Transcript

  1. 2.

    ࣗݾ঺հ w ܀ྛ݈ଠ࿠ w !LFOUBSP BOUJQPQ ͋ΜͪΆ w ιϑτ΢ΣΞΤϯδχΞ w

    גࣜձࣾQBQFSCPZDP w ٕज़ج൫νʔϜɺάϩʔενʔϜ
  2. 4.

    ໰୊ҙࣝ w ͍ΘΏΔlٕज़తෛ࠴zʹ͍ͭͯɺ᷿ؒग़ճ͍ͬͯΔ ݴઆ͸ɺ  ྺ࢙త  ൺᄻత  ࣮ફతʹෆे෼ͳ

    ೝࣝʹ΋ͱ͍͍ͮͯΔ w ͦͷͨΊɺ౰ॳͦͷ༻ޠ͕৽઱ͳ΋ͷͱͯ͠ಋೖ͠ ͨ͸ͣͷೝࣝརಘ͕ᆝଛ͞Εɺ͍·΍୯ͳΔਫֻ͚ ࿦Λؒᓛతʹऒى͢Δͷʹ࢖༻͞ΕΔ͹͔Γͩ w ຊτʔΫͰ͸ɺ౰֘༻ޠͷຊٛʹཱͪฦΓɺ͞Βʹ ద੾ͳઆ໌Λఏڙ͢Δ͜ͱͰɺΑΓΑ͍ݴઆͷج൫ Λఏڙ͢Δ
  3. 5.
  4. 12.

    lٕज़తෛ࠴zͷ࢛৅ݶ w ϦνϟʔυɾϑΝ΢ϥʔɺ೥ʹlٕज़తෛ࠴z ʹݴٴ 'PXMFS֯   w lٕज़తෛ࠴zͷ࢛৅ݶΛఏএ 'PXMFS֯

      w ͋Δ΋ͷ͕lෛ࠴zͰ͋Δ͔ͦ͏Ͱͳ͍͔ʹ͸͋· Γҙຯ͕ແ͍ w ͦͷݴ༿ͷಋೖʹΑΓɺઃܭ্ͷ໰୊ʹ͍ͭͯ஌ ݟΛಘΒΕΔ͔Ͳ͏͔ɺίϛϡχέʔγϣϯ͕ଅ ਐ͞ΕΔ͔Ͳ͏͔͕େࣄ w ίϛϡχέʔγϣϯͷͨΊͷ෼ྨ
  5. 13.

    lٕज़తෛ࠴zͷ࢛৅ݶ ແమ๒ͳ 3FDLMFTT ༻৺ਂ͍ 1SVEFOU ҙਤతͳ %FMJCFSBUF ઃܭ͢Δ͕࣌ؒͳ͍Μͩ ͔Β͠ΐ͏͕ͳ͍ ࠓ͙͢ϦϦʔε͠ͳ͍ͱ

    ͍͚ͳ͍ɻ ϦεΫ͸ঝ஌ͷ্ͩ ແҙࣝͳ *OBEWFSUFOU ϨΠϠʔԽʁ ͳʹͦΕʁ Α͠ɺ ͜ΕͰΦοέʔʂ 'PXMFS֯ 
  6. 14.

    lٕज़తෛ࠴zͷىݯɺ࠶ͼ w ଟ͘ͷਓʑ͸lٕज़తෛ࠴zΛޡղ͍ͯ͠Δ $VOOJOHIBN   w ։ൃͷεϐʔυΞοϓͷͨΊʹμϝͳίʔυΛॻ ͍ͯ΋͍͍ͳͲͱ͸͍͍ͬͯͳ͍ w

    ιϑτ΢ΣΞΛॻ͍ͨͦͷ࣌ΑΓ΋ਐΜͩཧղΛɺ ͋ͱ͔Β൓өͤ͞ΒΕΔͱ͍͏࿩ w ͦͷͨΊʹ΋ɺϦϑΝΫλϦϯάͰ͖ΔΑ͏ΫϦʔ ϯͳίʔυʹ͓ͯ͘͠ͷ͕େ੾
  7. 15.

    ͜͜·Ͱͷ·ͱΊ w ద੾ʹฦࡁ͞ΕΔ෼ʹ͸ɺ։ൃͷεϐʔυΞοϓͱ͍͏ҙ ຯͰ͸ɺΉ͠Ζ๬·͍͜͠ͱͰ͢Β͋ΓಘΔ w lٕज़తෛ࠴z͸ɺٕज़ऀؒͷΈͳΒͣɺඇٕज़ऀͱͷؒͰ ͷίϛϡχέʔγϣϯʹ໾ཱͭൺᄻͰ͋Δ ΂͖  w

    ͦͷͨΊʹɺͲ͏͍͏lෛ࠴z͕͋Δͷ͔Λ෼ྨɾ੔ཧ͢Δ w ·ͣɺҙਤత͔ඇҙਤత͔Ͱ෼ྨͰ͖Δɻ࣍ʹɺແమ๒ʹ ߦΘΕ͔ͨ༻৺ਂ͘ߦΘΕ͔ͨʹ෼ྨͰ͖Δ w ͦ΋ͦ΋͜ͷൺᄻ͸ʮμϝͳίʔυʯΛҙਤతʹॻ͘͜ͱ Λࢧ࣋͢Δ΋ͷͰ͸ͳ͍ɻͦ͏Ͱ͸ͳ͘ɺ͋ͱͰϦϑΝΫ λϦϯάͰ͖Δͱ͍͏ೝ͕ࣝେࣄ
  8. 16.
  9. 18.

    ݟ͑ͳ͍΋ͷͱͯ͠ͷlෛ࠴z w ,SVDIUFOΒʹΑΔݚڀ ,SVDIUFOFUBM    w ίʔυͷ඼࣭ͳͲͷΑ͏ͳՄࢹతͳlෛ࠴zΑΓ΋ Ή͠ΖɺΞʔΩςΫνϟతͳݟ͑ͳ͍lෛ࠴z͕ক

    དྷͷ։ൃʹؔ͢Δҙࢥܾఆʹ΋ͨΒ͢Өڹʹண໨ w ҙࢥܾఆͷཁҼΛɺओʹকདྷͷ։ൃίετʹஔ͘ w ϑΝΠφϯεʹ͓͚Δ༷ʑͳϞσϧ͕ɺٕज़తͳҙ ࢥܾఆʹ͓͍ͯ༗༻Ͱ͋ΓಘΔ
  10. 19.

    ݟ͑ͳ͍΋ͷͱͯ͠ͷlෛ࠴z ݟ͑Δ 7JTJCMF ݟ͑ͳ͍ *OWJTJCMF ϓϥεͷՁ஋ 1PTJUJWF 7BMVF ৽ػೳ /FXGFBUVSFT

    BEEFE GVODUJPOBMJUZ ΞʔΩςΫνϟɾߏ଄ "SDIJUFDUVSBM  TUSVDUVSBM GFBUVSFT ϚΠφεͷՁ஋ /FHBUJWF 7BMVF όά %FGFDUT ٕज़తෛ࠴ 5FDIOJDBMEFCU ,SVDIUFOFUBM 
  11. 20.

    ݟ͑ͳ͍΋ͷͱͯ͠ͷlෛ࠴z w কདྷͷ։ൃʹؔ͢Δҙࢥܾఆʹ͍ͭͯɺl΍Γ௚͠ 3FXPSL z ͱ͍͏؍఺ͰϞσϧԽ w ΞʔΩςΫνϟͷ࠶ߏங w ϦϑΝΫλϦϯά

    FUD w ҙࢥܾఆཁҼ w Ͳͷ࣌఺ͰΞʔΩςΫνϟΛվળ͢Δ͔ ࠷ॳʹ΍Δ͔ɺ͋ ͱʹ΍Δ͔  w ͦͷ͜ͱ͕݁ՌతʹશମͷίετʹͲ͏Өڹ͢Δ͔ w ໨ʹݟ͑Δ΋ͷ ϢʔβՁ஋΍όάͳͲ ͱɺ໨ʹݟ͑ͳ͍Ξʔ ΩςΫνϟΛ෼͚ͯߟ͑Δ w ৄࡉ͸ /PEFFUBM  ࢀর
  12. 23.

    Մೳత୅ସγεςϜͱͷࠩҟ w ݱ࣮తʹՄೳͳ୅ସγεςϜͱ͸Կ͔ʁͱ͍͏ࢹ఺ ΛಋೖͰ͖Δɻͨͱ͑͹ w Α͘੔උ͞Εͨ3BJMTΞϓϦ w 1VQQFU΍$IFGͰ͖ͬͪΓߏ੒؅ཧ͞Εͨαʔ ό܈ w

    ͦ͏ͨ͠γεςϜͱͷࠩҟ͕ɺະདྷʹ͋ΓಘΔ։ൃ εςοϓʹ͓͍ͯͲͷΑ͏ͳӨڹΛ΋ͨΒ͠ಘΔͷ ͔ʹΑͬͯɺlෛ࠴ฦࡁzͷҙࢥܾఆΛߦ͏ w ৄࡉ͸ 4DINJE  ࢀর
  13. 25.
  14. 26.

    lෛ࠴zͱ͍͏ൺᄻͷ໰୊ w ࡒ຿ձܭతͳҙຯʹ͓͚Δෛ࠴ͱҟͳΓɺఆྔԽ͕ ࠔ೉ w ඞͣฦࡁ͠ͳ͚Ε͹ͳΒͳ͍ͱ͍͏΋ͷͰ͸ͳ͍ w ͦ΋ͦ΋୭͔͔ΒԿ͔ΛआΓ͍ͯΔೝ͕ࣝͱ΋ͳͬ ͍ͯͳ͍͜ͱ͕Α͋͘Δ w

    lٕज़తෛ࠴zʹ͍ͭͯΑ͘ೝࣝ͠ɺద੾ʹରԠͯ͠ ͍ͯ΋ɺ࣌ؒͷܦաͱͱ΋ʹlෛ࠴Խz͕ى͜Δ w ίϛϡχέʔγϣϯʹ͓͚ΔศٓͷͨΊͷͷͨͱ͑ ࿩ͷ͸͕ͣɺͻͱΓา͖ͯ͠͠·͏
  15. 28.

    ͋͑ͯൺᄻΛ͞Βʹԡ͠޿͛Δ w ͨͩ͠ɺࡒ຿ձܭతͳҙຯʹ͓͚Δlෛ࠴zͷؚҙΛ ਖ਼͘͠ཧղͯ͠࢖͑͹ɺ༗༻ͳ΋ͷͱͳΓಘΔ w ϑΝΠφϯεͱձܭ͸ɺϏδωεʹ͓͚ΔϦϯΨɾ ϑϥϯΧ $POSPZ  

    w ෆ࣮֬ੑͷݩͰͷҙࢥܾఆϓϩηεʹ͍ͭͯ͸ɺܦ ࡁֶ΍ϑΝΠφϯεʹ͓͍ͯ஝ੵ͕͋Δɻͦ͏ͨ͠ Ϟσϧ͕໾ʹཱͪಘΔ ,SVDIUFOFUBM   w lෛ࠴zͱ͍͏ൺᄻͷՄೳੑΛɺ΋͏গ͠ԡ͠޿͛ͯ ΋Αͦ͞͏ͩ
  16. 29.

    8FCαʔϏε։ൃͱׂҾ཰ w lٕज़తෛ࠴zΛɺϑΝΠφϯεʹ͓͚ΔׂҾ཰ͷ ໰୊ͱͯ͠ߟ࡯͢Δ ܀ྛ   w 8FCαʔϏε։ൃʹ͓͚ΔҙࢥܾఆཁҼ w

    ಘΒΕΔՁ஋Λ૿େͤ͞Δ w අ΍͞ΕΔίετΛݮগͤ͞Δ w Ձ஋Λ૿େͤͭͭ͞ɺίετΛݮগͤ͞Δ w ܧଓੑ͕͍ͭͯ·ΘΔ8FCαʔϏε։ൃʹ͓͚Δ lίετzͷࢉग़ʹ͸ɺׂҾ཰ΛצҊ͢Δ͜ͱ͕ඞ ਢɻ໰୊͸ͦͷόϥϯε
  17. 30.

    8FCαʔϏε։ൃͱׂҾ཰ 0 55 110 165 220 2014 2015 2016 2017

    2018 ݱ࣮త(੒௕཰10%) ཧ૝త(੒௕཰20%) ͜ͷ෦෼͕ lٕज़తෛ࠴z ͱͳΓಘΔ
  18. 31.

    8FCαʔϏε։ൃͱׂҾ཰ 0 55 110 165 220 2014 2015 2016 2017

    2018 ݱ࣮త(੒௕཰10%) ཧ૝త(੒௕཰20%) ͔͜͜Β ݟΕ͹ རࢠˠ ͔͜͜Β ݟΕ͹ ˡׂҾ཰
  19. 34.

    ࢿຊߏ੒ઓུ ιϑτ΢ΣΞ ࢿ࢈ ٕज़త lෛ࠴z ٕज़త lࢿຊz ιϑτ΢ΣΞ ࢿ࢈ ٕज़త

    lෛ࠴z ٕज़త lࢿຊz ιϑτ΢ΣΞ ࢿ࢈ ٕज़త lෛ࠴z ٕज़త lࢿຊz ઓུ ࣌ؒ
  20. 35.
  21. 37.
  22. 39.

    ෆ࣮֬ੑͱҙਤ 0 55 110 165 220 2014 2015 2016 2017

    2018 ݱ࣮త(੒௕཰10%) ཧ૝త(੒௕཰20%) ͔͜͜Β ݟΕ͹ ෆ࣮֬ੑˠ ͔͜͜Β ݟΕ͹ ˡҙਤత࣮૷
  23. 45.

    lෛ࠴zͱײ৘తίϯϑϦΫτ w lٕज़తෛ࠴z͸ɺײ৘తίϯϑϦΫτΛऒى͕͠ ͪɻͦͷͨΊϒϩάωλͱͯ͠සൟʹ׆༻͞ΕΔ w ίϯϑϦΫτͷݪҼ w աڈʹߦΘΕͨ੒Ռ෺Λlෛ࠴zͱΈͳ͢Έͳ͞ Εͨͱײ͡Δ w

    ͦ͏ͨ͠lෛ࠴z͕ɺෆ౰ʹޡͬͨҙਤΛ࣋ͬͯߦ ΘΕͨͱΈͳ͢Έͳ͞Εͨͱײ͡Δ w ίϛϡχέʔγϣϯͷͨΊʹಋೖ͞ΕͨൺᄻͰ͋Δ ʹ΋ؔΘΒͣɺਖ਼͘͠༻͍ΒΕ͍ͯͳ͍
  24. 49.

    ٕज़తlෛ࠴z w ιϑτ΢ΣΞࢿ࢈Λܗ੒͢Δʹࡍͯ͠ௐୡ͞ΕΔݯ ઘͷ͏ͪɺͨͱ͑͹ҎԼͷΑ͏ͳ΋ͷ w ίʔσΟϯάن໿੔උͷอཹ w ςετΛ੔උ͢Δ͜ͱͷอཹ w υΩϡϝϯτΛ੔උ͢Δ͜ͱͷอཹ

    w 04 ϥΠϒϥϦ౳ґଘίϯϙωϯτͷߋ৽อཹ w ڭҭମ੍Λ੔උ͢Δ͜ͱͷอཹ w ໨ʹݟ͑΍͍͢΋ͷ ,SVDIUFOFUBM   w ൺֱతఆྔԽ͠΍͍͢
  25. 50.

    lෛ࠴zΛϚωδ͢Δ w όοΫϩάΛ ,SVDIUFOFUBM  ʹै͍ɺ ৭෼͚ͯ͠؅ཧ͢Δ ػೳҎ֎ͷ΋ͷ΋؅ཧ͢Δ  w

    ςετ΍υΩϡϝϯτΛඞཁʹԠͯ͡੔උ͢Δɻͦ ͷঢ়گΛͰ͖Δ͚ͩՄࢹԽ͢Δ w ૊৫ͷ੒௕Λద੾ʹίʔυʹ൓ө͢Δ ϦϑΝΫλ Ϧϯά͢Δ  w 04΍ϛυϧ΢ΣΞɺϥΠϒϥϦ΍ϑϨʔϜϫʔΫ Λৗʹ࠷৽ʹอͭ w ڭҭମ੍Λ੔උ͢Δ
  26. 51.

    ٕज़తlࢿຊz w ιϑτ΢ΣΞࢿ࢈Λܗ੒͢Δʹࡍͯ͠ௐୡ͞ΕΔݯ ઘͷ͏ͪɺͨͱ͑͹ҎԼͷΑ͏ͳ΋ͷ w Α͍ΞʔΩςΫνϟ w ಁ໌ੑͷߴ͍։ൃϓϩηε w ϝϯόͷϞνϕʔγϣϯ

    w ϝϯόͷίϛοτϝϯτ w ֎෦͔Βͷ༏लͳਓࡐͷ࠾༻ w ໨ʹݟ͑ʹ͍͘΋ͷ ,SVDIUFOFUBM   w ఆྔԽ͠ʹ͍͘
  27. 52.

    lࢿຊzௐୡίετΛϚωδ͢Δ w ະདྷͷෆ࣮֬ੑʹରԠՄೳͳΞʔΩςΫνϟʹɺద ੾ͳλΠϛϯάͰ࡞Γม͑Δ w ಁ໌ੑͷ͋Δ։ൃϓϩηεΛ࠾༻͢Δ w νʔϜϝϯόͷϞνϕʔγϣϯΛߴΊΔΑ͏ͳνϟ ϨϯδΛৗʹ͠ଓ͚Δ w

    νʔϜϝϯόͷίϛοτϝϯτΛҾ͖ग़͢Α͏ͳ༏ Εͨιϑτ΢ΣΞΛ࡞Γଓ͚Δ w ૊৫֎෦ʹରͯ͠ɺັྗΛײͯ͡΋Β͑ΔΑ͏ͳٕ ज़޿ใΛߦ͏ ߦ͑ΔΑ͏ͳٕज़ମ੍Λ࡞Δ
  28. 54.

    ίϛοτϝϯτ w ૊৫໨ඪͱݸਓ໨ඪͷҰக౓߹͍Λlίϛοτϝϯ τzͱ͍͏ ాඌ   w ण໋ͷ௕͍ιϑτ΢ΣΞΛ։ൃ͢Δ૊৫ʹ͓͍ͯ͸ɺ อकɾվมίετ͕ߴ͍ιϑτ΢ΣΞ͕ɺաڈɾݱ

    ࡏɾະདྷͷ૊৫తಉҰੑΛ્֐͠ಘΔ w աڈͷlෛ࠴zΛ%*4Δͱ͍͏ͷ͕యܕྫ w ૊৫తಉҰੑ͕ࠞཚ͍ͯ͠Δ૊৫ʹ͓͍ͯɺϝϯό ͷίϛοτϝϯτΛৢ੒͢Δͷ͸ࠔ೉
  29. 55.

    ·ͱΊ w lٕज़తෛ࠴z͸ͨͱ͑࿩ʹա͗ͳ͍ɻ͔͠͠ɺ༗༻ ͳൺᄻͰ͋ΓಘΔ w ίϛϡχέʔγϣϯʹ໾ཱͭݶΓʹ͓͍ͯ༗༻ɻ%*4 Γ༻్͸ෆՄ w ࣗݾ΍νʔϜͷ੒௕Λɺ͍ͭͰ΋ίʔυʹཱͪฦͬ ͯ൓өͰ͖Δ

    lෛ࠴zΛฦͤΔ ͱ͍͏ͷ͕ɺݴ͍ग़ ͬ͠΃Ͱ͋Δ$VOOJOHIBNతͳຊٛ w ະདྷͷෆ࣮֬ੑʹͲ͏ରॲ͢Δ͔͸ɺܦࡁֶ΍ϑΝ ΠφϯεͰ஝ੵͷ͋Δ෼໺ɻલ޲͖ʹଊ͑Ε͹ɺͦ ͷؚҙ͔Βଟ͘ͷ஌ݟΛಘΒΕΔ ͩΖ͏
  30. 56.

    ࢀߟจݙ • Conroy, P. (2012), “Technical Debt: Where Are the

    Shareholders’ Interests?”, IEEE Software, November/December 2012 • Cunningham, W. (1992), “The WyCash Portfolio Management System”, http://c2.com/ doc/oopsla92.html • Cunningham, W. (2009), “Ward Explains Debt Metaphor”, http://c2.com/cgi/wiki? WardExplainsDebtMetaphor • Fowler, M. (2003), “TechnicalDebt”, http://www.martinfowler.com/bliki/ TechnicalDebt.html (֯੐య༁, “ٕज़తෛ࠴”, http://capsctrl.que.jp/kdmsnr/wiki/bliki/? TechnicalDebt) • Fowler, M. (2009), “TechnicalDebtQuadrant”, http://www.martinfowler.com/bliki/ TechnicalDebtQuadrant.html (֯੐య༁, “ٕज़తෛ࠴”, http://capsctrl.que.jp/kdmsnr/ wiki/bliki/?TechnicalDebtQuadrant) • Johann, S., Wolff, E. (2013), “Managing Technical Debt”, http://www.infoq.com/articles/ managing-technical-debt (େా྘༁, “ٕज़తෛ࠴Λ؅ཧ͢Δ”, http://www.infoq.com/jp/ articles/managing-technical-debt) • Kruchten, P., Nord, R. L., Ozkaya, I. (2012), “Technical Debt: From Metaphor to Theory and Practice”, IEEE Software, November/December 2012
  31. 57.

    ࢀߟจݙ • ܀ྛ݈ଠ࿠ (2013)ʮͳͥʮܧଓతWebαʔϏεվળʯ͕ඞཁͳͷ͔ʙมԽʹରԠ͠ɼ10೥ ޙ΋ੜ͖࢒ΔWebαʔϏεͷͨΊʹʯʮWEB+DB PRESS Vol.75 ܧଓతWebαʔϏεվળ ΨΠυʯٕज़ධ࿦ࣾ •

    McConnell, S. (2007), “Technical Debt”,http://www.construx.com/ 10x_Software_Development/Technical_Debt/ • Nord, R. L., Ozkaya, I., Kruchten, P., Gonzalez-Rojas, M. (2012), “In search of a metric for managing architectural technical debt” • Oku, K. (2013), Twitter΁ͷ౤ߘ, https://twitter.com/kazuho/status/415695299827359744 • Oku, K. (2014), Twitter΁ͷ౤ߘ, https://twitter.com/kazuho/status/436870682014515200 • Osawa, K. (2011), “Acme-FizzBuzz-0.03”, https://metacpan.org/release/YAPPO/Acme- FizzBuzz-0.03 • ੪౻ಯ (2006)ʮ࠶ੜࣄۀ͔Βݟͨ೔ຊʯhttp://jfn.josuikai.net/josuikai/21f/62/sai/sai.htm • Schmid, K. (2013), “Technical Debt — From Metaphor to Engineering Guidance: A Novel Approach based on Cost Estimation” • ాඌխ෉ (2012)ʰݱ୅૊৫࿦ʱႻ૲ॻ๪ • Wikipediaʮෛ࠴ʯhttp://ja.wikipedia.org/wiki/%E8%B2%A0%E5%82%B5