$30 off During Our Annual Pro Sale. View Details »

レガシーコードの触り方 / Working Effectively with Legacy Code

レガシーコードの触り方 / Working Effectively with Legacy Code

オープンセミナー2017@岡山

Takuto Wada
PRO

May 13, 2017
Tweet

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. ϨΨγʔίʔυͷ
    ৮Γํ
    ࿨ా୎ਓ !U@XBEB

    .BZ !ΦʔϓϯηϛφʔԬࢁ

    View Slide

  2. ࿨ా୎ਓ
    JEUXBEB
    !U@XBEB
    HJUIVCUXBEB

    View Slide

  3. View Slide

  4. ひとり歩きするスタンド
    ελϯυ໊ϫΠϧυɾαόϯφ

    View Slide

  5. assert(typeof item.id === 'strong')
    | | | |
    | | | false
    | | "foo"
    | Item{id:"foo",name:"bar"}
    "string"
    --- [string] 'strong'
    +++ [string] typeof item.id
    @@ -1,6 +1,6 @@
    str
    -o
    +i
    ng
    https://github.com/power-assert-js/power-assert
    power-assert

    View Slide

  6. ΑΖ͓͘͠ئ͍͠·͢

    View Slide

  7. ݱ৔͔ΒͷதܧͰ͢

    View Slide

  8. ർฐ͖ͬͨ͠ݱ৔

    View Slide

  9. IUUQTXXXqJDLSDPNQIPUPTPLJOBXBTPCB
    ߥΈ͖ͬͨίʔυ

    View Slide

  10. ര஄ॲཧͷΑ͏ͳϦϦʔε

    View Slide

  11. ͭͷlͳΒΘ͠z

    View Slide

  12. IUUQTXXXqJDLSDPNQIPUPTELBMP
    lςετΛॻ࣌ؒ͘͸ͳ͍z

    View Slide

  13. ετϨε
    ςετ

    View Slide

  14. ࣗಈςετ
    ετϨε

    View Slide

  15. ςετΛॻ͕࣌ؒ͘ͳ͍ͷͰ
    ͸ͳ͘ɺςετΛॻ͔ͳ͍͔
    Β͕࣌ؒͳ͘ͳΔͷͰ͢ɻ

    View Slide

  16. lಈ͘ίʔυʹ৮ΕΔͳz
    IUUQTXXXqJDLSDPNQIPUPT!/

    View Slide

  17. &EJU1SBZ͸ࢮ͕଴͍ͬͯΔ

    View Slide

  18. $PWFS.PEJGZ

    View Slide

  19. w ʮςετΛॻ͕࣌ؒ͘ͳ͍ʯͷͰ͸
    ͳ͘ʮςετΛॻ͔ͳ͍͔Β͕࣌ؒ
    ͳ͘ͳΔʯ
    w ʮಈ͘ίʔυʹ৮ΕΔͳʯͱಆ͏ɻ
    ৮Βͳ͘ͱ΋पΓ͕มΘͬͯಈ͔ͳ
    ͘ͳΔɻ৮Εͳ͚Ε͹ίʔυ͸؇΍
    ͔ʹࢮΜͰ͍͘
    ͭͷʮͳΒΘ͠ʯͱಆ͏

    View Slide

  20. ͭͷlಓ͠Δ΂z

    View Slide

  21. w ʮϨΨγʔίʔυͷδϨϯϚʯ
    w lίʔυΛมߋ͢ΔͨΊʹ͸ςετΛ੔උ͢Δ
    ඞཁ͕͋Δɻଟ͘ͷ৔߹ɺςετΛ੔උ͢Δ
    ͨΊʹ͸ɺίʔυΛมߋ͢Δඞཁ͕͋Δz
    w ϨΨγʔίʔυʹ৮ΔͨΊͷ

    ޠኮͱٕ๏Λ੔ཧͨ͠ຊ
    w TUBDLPWFSqPXDPN͔Βͷ

    ඃݴٴ਺ୈҐ
    ϨΨγʔίʔυվળΨΠυ

    View Slide

  22. w ϨΨγʔίʔυվળΨΠυΑΓ΍΍ந৅
    ౓͕ߴ͍
    w ιϑτ΢ΣΞͷϦΤϯδχΞϦϯάΛߦ
    ͏ͭͷબ୒ࢶΛ͍ࣔͯ͠Δ
    w ϦϑΝΫλϦϯά
    w ϦΞʔΩςΫςΟϯά
    w ϏοάɾϦϥΠτ
    ϨΨγʔιϑτ΢ΣΞվળΨΠυ

    View Slide

  23. Ͳ͜ʹςετΛ
    ॻ͍͍͔ͯ͘

    View Slide

  24. ʮ௧ΜͩՕॴʯͱʮख͕ಧ͘Ռ࣮ʯ

    View Slide

  25. w ϦεΫ
    w खಈςετͷίετ
    w ࣗಈԽίετ
    ςετͷτϦΞʔδ

    View Slide

  26. ςετέʔεΛҰཡʹ·ͱΊΔ
    ςετέʔε
    σβΠϯมߋ
    ηΩϡϦςΟΞϥʔτ
    औҾཤྺ
    ޱ࠲ͷౚ݁
    ৽نϢʔβొ࿥
    ݕࡧ݁Ռͷฒͼସ͑
    ͓ۚͷೖۚ
    ৼΓࠐΈͷ֬ೝ

    View Slide

  27. ϦεΫΛݟੵ΋Δ
    ςετέʔε ϦεΫ
    σβΠϯมߋ
    ηΩϡϦςΟΞϥʔτ
    औҾཤྺ
    ޱ࠲ͷౚ݁
    ৽نϢʔβొ࿥
    ݕࡧ݁Ռͷฒͼସ͑
    ͓ۚͷೖۚ
    ৼΓࠐΈͷ֬ೝ

    View Slide

  28. खಈςετͷίετΛݟੵ΋Δ
    ςετέʔε ϦεΫ
    खಈςετͷ
    ίετ
    σβΠϯมߋ
    ηΩϡϦςΟΞϥʔτ
    औҾཤྺ
    ޱ࠲ͷౚ݁
    ৽نϢʔβొ࿥
    ݕࡧ݁Ռͷฒͼସ͑
    ͓ۚͷೖۚ
    ৼΓࠐΈͷ֬ೝ

    View Slide

  29. ࣗಈԽίετΛݟੵ΋Δ
    ςετέʔε ϦεΫ
    खಈςετͷ
    ίετ
    ࣗಈԽίετ
    σβΠϯมߋ
    ηΩϡϦςΟΞϥʔτ
    औҾཤྺ
    ޱ࠲ͷౚ݁
    ৽نϢʔβొ࿥
    ݕࡧ݁Ռͷฒͼସ͑
    ͓ۚͷೖۚ
    ৼΓࠐΈͷ֬ೝ

    View Slide

  30. ༏ઌॱҐΛ෇͚ͯฒ΂ସ͑Δ
    ςετέʔε ϦεΫ
    खಈςετͷ
    ίετ
    ࣗಈԽίετ
    ޱ࠲ͷౚ݁
    ৼΓࠐΈͷ֬ೝ
    औҾཤྺ
    ݕࡧ݁Ռͷฒͼସ͑
    ͓ۚͷೖۚ
    ηΩϡϦςΟΞϥʔτ
    ৽نϢʔβొ࿥
    σβΠϯมߋ

    View Slide

  31. Ͳ͏ςετΛ
    ॻ͍͍͔ͯ͘

    View Slide

  32. w ςετ͕ͳ͍ͷ͸طʹઃܭ͕ѱ͍ஹީ
    w ઃܭ࣮૷Λม͑Δͷ͕લఏ
    w ࣮૷ͷςετΛॻ͔ͳ͍͜ͱ
    w ςετ͕Χόʔ͢Δൣғʹ༡ͼΛ࣋ͨ
    ͤɺΧόʔൣғ಺ΛϦϑΝΫλϦϯά
    w ঢ়گʹԠͯ͡&&ςετΛ࢖͍͜ͳ͢
    ઃܭͷՄಈҬΛ֬อ͢Δ

    View Slide

  33. w ࠷ॳ͔Βશ෦΍Ζ͏ͱ͠ͳ͍
    w ςετۦಈʹͩ͜ΘΔͳ
    w ςετϑΝʔετʹͩ͜ΘΔͳ
    w ʮϢχοτʯςετʹͩ͜ΘΔͳ
    w ςετͷ࣮ߦ଎౓ʹͩ͜ΘΔͳ
    w ςετͷ໢ཏੑʹͩ͜ΘΔͳ
    ͩ͜ΘΔͳ

    View Slide

  34. w ྑ͍Ϣχοτςετͷࢦඪʹ΋༏ઌ
    ౓͕͋Δ
    w ࠶ݱɺ܁Γฦ͠Մೳ 3FQFBUBCMF

    w ಠཱ͍ͯ͠Δ *OEFQFOEFOU

    w ଞ͸ͦΕ͔ΒͰ͍͍
    ͩ͜ΘΖ͏

    View Slide

  35. w ઀߹෦ͷݕ౼ͱۛຯ
    w ߜΓࠐΈ఺ͷൃݟͱґଘͷ෼཭
    w ࠶ݱੑ͋Δςετϋʔωεͷ੔උ
    w ௒ूதฤू )ZQFSBXBSF&EJUJOH

    w ίϯύΠϥ*%&·͔ͤ
    w ࢓༷Խςετ
    w ࢼߦϦϑΝΫλϦϯά
    ϨΨγʔίʔυվળͷٕ๏
    ৄ͘͠͸
    σϞͰ

    View Slide

  36. σϞطʹୀ৬ͨ͠
    ઌഐ͕ॻ͍ͨ
    ṖͷίʔυΛҾ͖ܧ͙

    View Slide

  37. IUUQTXXXqJDLSDPNQIPUPTUPNQBHFOFU
    ςετ͸඼࣭Λ্͛ͳ͍

    View Slide

  38. w ඼࣭͕ʮΘ͔ΔʯΑ͏ʹͳΔ
    w Θ͔Δ͜ͱͦ͜େࣄ
    w ςετΛॻ͚ͩ͘Ͱ͸ɺྑ͘͸ͳΒͳ͍
    w ମॏܭʹ৐Δ͚ͩͰ͸૫ͤͳ͍
    w ඼࣭Λ্͛Δͷ͸ઃܭͱϓϩάϥϛϯά
    w ࠶ઃܭͱϦϑΝΫλϦϯάΛςετͰࢧ͑Δ
    ςετ͸඼࣭Λ্͛ͳ͍

    View Slide

  39. lςετͰ͸඼࣭͸্͕Βͳ͍
    Ͱ͢Αɻςετ͸͋͘·Ͱ΋඼
    ࣭Λ͋͛Δ͖͔͚ͬɻ඼࣭Λ͋
    ͛Δͷ͸ϓϩάϥϛϯάͰ͢ɻ
    ͜Ε͸େੲ͔Βͦ͏ɻz

    View Slide

  40. w ઀߹෦ͷݕ౼ͱۛຯ
    w ߜΓࠐΈ఺ͷൃݟͱґଘͷ෼཭
    w ࠶ݱੑ͋Δςετϋʔωεͷ੔උ
    w ௒ूதฤू )ZQFSBXBSF&EJUJOH

    w ίϯύΠϥ*%&·͔ͤ
    w ࢓༷Խςετ
    w ࢼߦϦϑΝΫλϦϯά
    ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide