Upgrade to Pro — share decks privately, control downloads, hide ads and more …

4年の開発が積み重なったアプリへのリファクタリング手法

Jun Ikeda
March 12, 2018

 4年の開発が積み重なったアプリへのリファクタリング手法

Jun Ikeda

March 12, 2018
Tweet

Other Decks in Technology

Transcript

  1. ೥ͷ։ൃ͕ੵΈॏͳͬͨ
    ΞϓϦ΁ͷϦϑΝΫλϦϯάख๏
    :BIPP+"1"/஑ాಯ
    1

    View Slide

  2. w γεςϜͱνʔϜΛ஌Δ
    w ࢖͏ٕज़ΛܾΊΔ
    w औΓ૊ΜͰ͍Δઃܭ΍ख๏
    w औΓ૊Μͩ݁Ռ
    ໨࣍
    2

    View Slide

  3. ˞͋͘·Ͱख๏΍ઃܭͷҰྫͰ͢ɻ
    3

    View Slide

  4. γεςϜͱνʔϜΛ஌Δ
    4

    View Slide

  5. w ೥݄ʹϦϦʔεͯ͠೥ܦ͍ͬͯΔ
    w .71΍.77.ͳͲͷΞʔΩςΫνϟ͸ະಋೖ
    w "DUJWJUZ΍'SBHNFOUʹϩδοΫ͕࣮૷͞Εͯ
    ͍ΔՕॴଟ͍
    w ඼࣭ͱ։ൃεϐʔυͷ୲อ͕೉͍͠ঢ়ଶʹ
    :BIPPχϡʔεΞϓϦ
    5

    View Slide

  6. νʔϜͷঢ়گ
    w "OESPJEΤϯδχΞ໊ɻ
    w "͞Μɿ೥͘Β͍୲౰
    w #͞Μɿ೥͘Β͍୲౰
    w ࢲɿ೥݄͔Β୲౰
    6

    View Slide

  7. w .71΍.77.ͳͲͷΞʔΩςΫνϟ͸ະಋೖ
    w 7JFXʹϩδοΫ͕࣮૷͞Ε͍ͯΔ
    w ਓͷதͩͱࣗ෼͕Ұ൪ઃܭͷܦݧ͋Δ
    ίʔυݹ͍͠ɺͬͦ͘͞ϦϑΝΫλͯ͠΍Δʂ
    7

    View Slide

  8. w ೥ؒ.71΍.77.ͷ࢓૊Έͳ͠
    w 7JFXʹϩδοΫ͕࣮૷͞Ε͍ͯΔ
    w ਓͷதͩͱࣗ෼͚ͩγχΞΤϯδχΞɺઃܭͷܦݧ͋Δ
    ίʔυݹ͍͠ɺͬͦ͘͞ϦϑΝΫλͯ͠΍Δʂ
    μϝ
    8

    View Slide

  9. ͍͖ͳΓணख͠ͳ͍
    w αʔϏε΍γεςϜͷ͜ͱΛ஌Βͳ͍ͱྑ͍બ୒͕Ͱ͖ͳ͍ɻ
    w ։ൃ͸νʔϜͰߦ͏΋ͷɻνʔϜϝϯόʔΛ஌Δ͜ͱ΋େ੾ɻ
    w ݱίʔυͰଟ͘ͷϢʔβʔʹ࢖ͬͯ΋Β͍ͬͯΔ͠ɺ

    ച্΋্͍͛ͯΔɻಈ͍͍ͯΔίʔυʹ΋ͬͱϦεϖΫτΛɻ
    w ϲ݄͘Β͍։ൃۀ຿Λߦ͍ͳ͕Β؍࡯ͨ͠ɻ
    9

    View Slide

  10. ؍࡯ɿγεςϜΛ஌Δ
    w ϩʔΧϧ%#΁ͷΩϟογϡ
    w هࣄछผͷ஌͕ࣝଟ͍

    ΧςΰϦɾτϐοΫεɾ߸֎

    w #''͸ͳ͘ɺෳ਺ͷ"1*Λୟ͍
    ͯͭͷϦετΛ࡞Δ͜ͱ΋ඞ

    γεςϜͷಛੑ
    10

    View Slide

  11. ؍࡯ɿγεςϜΛ஌Δ
    w ϩʔΧϧ%#΁ͷΩϟογϡ
    w هࣄछผͷ஌͕ࣝଟ͍

    ΧςΰϦɾτϐοΫεɾ߸֎

    w #''͸ͳ͘ɺෳ਺ͷ"1*Λୟ͍
    ͯͭͷϦετΛ࡞Δ͜ͱ΋ඞ

    γεςϜͷಛੑ
    w σʔλऔಘઌΛந৅Խ͍ͨ͠
    w ಛఆൣғͷؔ৺ࣄΛՕॴʹू
    ໿͍ͨ͠
    w ෳ਺ͷ"1*͔ΒඇಉظͰऔಘɺ
    ଴ͪ߹Θͤɺ૊Έ߹Θͤ

    ղܾ͍ͨ͜͠ͱ
    10

    View Slide

  12. w ΞϓϦʹݶΒͣ

    χϡʔεαʔϏεͷ஌͕ࣝ๛෋
    w 7JFXपΓͷ࣮૷͕ಘҙ
    w 3Y+BWB΍%*ͷܦݧ͸

    ͋·Γͳͦ͞͏
    ؍࡯ɿνʔϜΛ஌Δ
    11

    View Slide

  13. w ΞϓϦʹݶΒͣ

    χϡʔεαʔϏεͷ஌͕ࣝ๛෋
    w 7JFXपΓͷ࣮૷͕ಘҙ
    w 3Y+BWB΍%*ͷܦݧ͸

    ͋·Γͳͦ͞͏
    ؍࡯ɿνʔϜΛ஌Δ
    w ੹຿ͷڥք͸ਓʹ൑அ

    ͯ͠΋Β͓͏
    w ະܦݧͷٕज़Λͨ͘͞Μಋೖ

    ͢Δͷ͸ֶशίετߴ͍
    11

    View Slide

  14. ࢖͏ٕज़ΛܾΊΔ
    12

    View Slide

  15. ໨ࢦ͢͜ͱΛ໌֬ʹ
    w ׳Εɾ؆୯ΑΓ΋ɺ࢓૊Έ͕γϯϓϧͰมߋʹڧ͍͜ͱ
    w ఆٛ΍ݪཧͷਖ਼͠͞ΑΓࣗ෼ͨͪʹ߹͏͜ͱ
    w Ϟμϯελϯμʔυͳٕज़ʹ௥ै͢Δ͜ͱ
    ઃܭ΍ٕज़બఆͷ൑அ࣠
    13

    View Slide

  16. αʔϏεಛੑʹ߹͏
    w σʔλऔಘઌΛந৅Խ͍ͨ͠
    w ಛఆൣғͷؔ৺ࣄΛՕॴʹू
    ໿͍ͨ͠
    w ෳ਺ͷ"1*͔ΒඇಉظͰऔಘɺ
    ଴ͪ߹Θͤɺ૊Έ߹Θͤ

    ؍࡯ͯ͠ݟ͚ͭͨղܾ͍ͨ͜͠ͱ
    14

    View Slide

  17. αʔϏεಛੑʹ߹͏
    w σʔλऔಘઌΛந৅Խ͍ͨ͠
    w ಛఆൣғͷؔ৺ࣄΛՕॴʹू
    ໿͍ͨ͠
    w ෳ਺ͷ"1*͔ΒඇಉظͰऔಘɺ
    ଴ͪ߹Θͤɺ૊Έ߹Θͤ

    ؍࡯ͯ͠ݟ͚ͭͨղܾ͍ͨ͜͠ͱ
    ϦϙδτϦύλʔϯ
    %%%ͷ஋ΦϒδΣΫτ
    3Y+BWB
    ղܾͷͨΊͷٕज़
    14

    View Slide

  18. ͍͖ͳΓֶशίετΛ্͛͗͢ͳ͍
    3Y+BWB
    ະܦݧͩͱ͜ΕͭͰ΋

    ֶशίετߴ͍
    -JWF%BUB %BUB#JOEJOH
    ·ͣ͸3Y+BWBʹ׳Εͯ΋Β͏
    %BHHFS
    ·ͣ͸ίϯετϥΫλΠϯδΣ
    Ϋγϣϯ͢Δ͜ͱʹ׳Εͯ΋Β
    ͏ʢ,PUMJOͷσϑΥϧτҾ਺ʣ
    ࠾༻ ࠓճݟૹΓ
    15

    View Slide

  19. ܾΊͨཧ༝ΛυΩϡϝϯτʹ࢒͢
    w ໨ࢦ͍ͯ͠Δ͜ͱ
    w αʔϏεͷಛੑ
    w ղܾ͍ͨ͜͠ͱ
    w ΞʔΩςΫνϟͷ֓ཁ
    w ࣮૷ͷͨΊͷϥΠϒϥϦͨͪ
    w ύοέʔδߏ੒
    w ଥڠͨ͠఺
    w ࠾༻Λݟૹͬͨ΋ͷʢͱͦͷཧ༝ʣϦετ
    w ࢀߟʹͨ͠ॻ੶΍8FCϖʔδ
    ͳͥ͜͏ͳͬͯΔʁΛઆ໌

    Ͱ͖Δ
    ٕज़ͷਐาʹ߹Θͤͯɺ

    ܧଓతʹมߋͰ͖ΔΑ͏ʹ͢
    Δ
    16

    View Slide

  20. औΓ૊ΜͰ͍Δઃܭ΍ख๏
    17

    View Slide

  21. .77.ϨΠϠʔԽ
    3FQPTJUPSZ
    %PNBJO
    7JFX.PEFM
    7JFX
    w ΞʔΩςΫνϟ͸

    .77.ϨΠϠʔԽ
    18

    View Slide

  22. 3FQPTJUPSZ
    w σʔλͷอଘͱऔಘ
    w 8FC"1*ͱϩʔΧϧʢ%#
    1SFGFSFODFTʣΛந৅Խ
    3FQPTJUPSZ
    %PNBJO
    7JFX.PEFM
    7JFX
    19

    View Slide

  23. %PNBJO
    w ϏδωεϩδοΫ͸%PNBJOʹด͡ࠐ
    ΊΔ
    w ,PUMJOͷEBUBDMBTTΛ࢖ͬͯ஋Φϒ
    δΣΫτΛ࣮૷
    w ෭࡞༻ͷͳ͍ؔ਺Λ࣋ͭ
    3FQPTJUPSZ
    %PNBJO
    7JFX.PEFM
    7JFX
    20

    View Slide

  24. 7JFX.PEFM
    7JFX.PEFM
    w දࣔͷͨΊͷঢ়ଶ؅ཧ
    w 7JFXΠϕϯτ͔Βඞཁͳॲཧ࣮ߦ
    3FQPTJUPSZ
    %PNBJO
    7JFX.PEFM
    7JFX
    21

    View Slide

  25. 7JFX
    w 7JFX.PEFM͔ΒྲྀΕ͖ͯͨσʔλʹ൓
    Ԡ͢Δ͚ͩɺϩδοΫΛ࣋ͨͳ͍
    w JG จࣈྻ͕ۭ
    ͷΑ͏ͳ൑ఆϩδοΫΛ
    ॻ͍ͪΌͩΊ
    w "DUJWJUZ$POUFYU͸7JFX૚͚ͩͰ࢖͏ɺ
    7JFX૚Ҏ֎͸"QQMJDBUJPO$POUFYU
    3FQPTJUPSZ
    %PNBJO
    7JFX.PEFM
    7JFX
    22

    View Slide

  26. 7JFX͔ΒϩδοΫΛണ͕͢
    w ͜Ε·Ͱ͸7JFXʹϩδοΫ͕ॻ͔Ε͍ͯͯɺͦΕʹ׳Εͨঢ়ଶ

    ͩͬͨɻ
    w ॳาతͳ಺༰͕ͩɺ·ͣ͸ͱʹ͔͘7JFXͱϩδοΫΛ෼཭͢Δɻ
    23

    View Slide

  27. 7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ
    %PNBJO
    24

    View Slide

  28. 7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ
    7JFX
    %PNBJO
    24

    View Slide

  29. େྔͷJT&NQUZ
    ΍൑ఆ͕ϘσΟϒϩʔͷΑ͏ʹμϝʔδΛ༩͑Δɻɻɻ
    7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ
    7JFX
    %PNBJO
    24

    View Slide

  30. 7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ
    %PNBJO
    25

    View Slide

  31. 7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ
    %PNBJO
    25

    View Slide

  32. 7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ
    %PNBJO
    7JFX
    25

    View Slide

  33. ίʔυ੔ཧͷεςοϓ
    7JFX
    26
    ϩδοΫ"
    7JFX 7JFX
    w 7JFXʹϩδοΫ͕

    ॻ͔Ε͍ͯΔঢ়ଶ
    w ಉ͡ϩδοΫ͕ෳ਺ͷը໘
    ʹॏෳ͍ͯ͠Δ
    ϩδοΫ" ϩδοΫ"
    ϩδοΫ$
    ϩδοΫ#
    ϩδοΫ#

    View Slide

  34. 7JFX
    27
    7JFX 7JFX
    ϩδοΫ$
    ϩδοΫ" ϩδοΫ"
    ϩδοΫ#
    ϩδοΫ" ϩδοΫ#
    ίʔυ੔ཧͷεςοϓ

    View Slide

  35. 7JFX
    27
    w ੔ཧͯ͠%PNBJOʹ

    ϩδοΫΛҠಈ
    %PNBJO %PNBJO
    7JFX 7JFX
    ϩδοΫ$
    ϩδοΫ" ϩδοΫ"
    ϩδοΫ#
    ϩδοΫ" ϩδοΫ#
    ίʔυ੔ཧͷεςοϓ

    View Slide

  36. ৽7JFX
    27
    w ੔ཧͯ͠%PNBJOʹ

    ϩδοΫΛҠಈ
    %PNBJO %PNBJO
    7JFX 7JFX
    ϩδοΫ$
    ϩδοΫ" ϩδοΫ"
    ϩδοΫ#
    ϩδοΫ" ϩδοΫ#
    ίʔυ੔ཧͷεςοϓ
    w ͭͷը໘ͷ7JFXΛ

    ॻ͖׵͑Δ

    View Slide

  37. ϩδοΫ" ϩδοΫ"
    ϩδοΫ#
    ৽7JFX
    28
    7JFX
    ϩδοΫ$
    %PNBJO %PNBJO
    ϩδοΫ" ϩδοΫ#
    ίʔυ੔ཧͷεςοϓ
    w ผͷը໘΋%PNBJOʹҠಈ
    ͨ͠ϩδοΫΛ࢖͏Α͏ʹ
    ͢Δ
    7JFX

    View Slide

  38. ৽7JFX
    28
    w 7JFX૚ͷίʔυ͕ݮΔ
    7JFX
    ϩδοΫ$
    %PNBJO %PNBJO
    ϩδοΫ" ϩδοΫ#
    ίʔυ੔ཧͷεςοϓ
    w ผͷը໘΋%PNBJOʹҠಈ
    ͨ͠ϩδοΫΛ࢖͏Α͏ʹ
    ͢Δ
    7JFX

    View Slide

  39. ৽7JFX
    29
    %PNBJO %PNBJO
    ϩδοΫ" ϩδοΫ#
    7JFX
    ϩδοΫ$
    ίʔυ੔ཧͷεςοϓ
    7JFX
    w ίʔυ͕ݮͬͨ7JFXΛ

    ॻ͖׵͑Δ

    View Slide

  40. ৽7JFX
    29
    w ը໘୯ҐͰϦϑΝΫλΛ׬
    ྃͤ͞ɺશମͷஔ͖׵͑Λ
    ໨ࢦ͢
    %PNBJO %PNBJO
    ϩδοΫ" ϩδοΫ#
    ৽7JFX 7JFX
    ϩδοΫ$
    ίʔυ੔ཧͷεςοϓ
    w ίʔυ͕ݮͬͨ7JFXΛ

    ॻ͖׵͑Δ

    View Slide

  41. ґଘؔ܎
    w 7JFX.PEFM͕7JFXΛ஌Βͳ͍

    Α͏ʹ͢Δ͜ͱ
    w %PNBJO͕ଞʹґଘ͠ͳ͍͜ͱ
    7JFX.PEFM
    7JFX
    3FQPTJUPSZ
    %PNBJO
    30

    View Slide

  42. σʔλͷྲྀΕ
    %PNBJO4FSWJDF ஋ΦϒδΣΫτ
    7JFX.PEFM
    7JFX
    3FQPTJUPSZ
    3Y+BWB4USFBN
    ؔ਺ݺͼग़͠
    31

    View Slide

  43. σʔλͷྲྀΕ
    %PNBJO4FSWJDF ஋ΦϒδΣΫτ
    7JFX.PEFM
    7JFX
    3FQPTJUPSZ
    3Y+BWB4USFBN
    ؔ਺ݺͼग़͠
    w 3Y+BWBͷ4USFBNΛ4VCTDSJCF

    ͢Δͷ͸7JFX૚ͷΈʹ੍ݶ
    w 4VCKFDU 1SPDFTTPS
    ͸࢖Θͳ͍
    3Y+BWBͷར༻ϧʔϧΛઃ͚ɺ
    ֶशίετ௿Լϝϯςφϯεੑ
    ޲্Λ໨ࢦ͢
    31

    View Slide

  44. औΓ૊Μͩ݁Ռ
    32

    View Slide

  45. औΓ૊Έͱ݁Ռ
    w ࠷΋ར༻਺ͷଟ͍τοϓը໘ΛϦϑΝΫλϦϯά׬ྃ
    w ݕ౼ɾઃܭɾ։ൃ߹Θͤͯϲ݄͘Β͍
    w େ͖ͳόάͳͲͳ͘ɺίʔυͷݟ௨͕͠ྑ͘ͳͬͨ
    w ։ൃ͠΍͍͢ঢ়ଶʹͳΓɺΤϯδχΞ͔Β৽ػೳͷఏҊ΋
    33

    View Slide

  46. νʔϜͷมԽ
    w ઃܭʹ͍ͭͯٞ࿦͢Δස౓͕૿͑ͨɻ

    ڭ͑ΔڭΘΔؔ܎͔Β͓ޓ͍ʹֶ΂Δؔ܎΁ͷมԽɻ
    w ݟૹͬͨ෦෼΍ଥڠ఺ʹରͯٙ͠໰ɺ࣍ʹऔΓ૊Ή΂͖͜ͱ͕ݟ͖͑ͯͨɻ
    w ίϯετϥΫλΠϯδΣΫγϣϯݫ͘͠ͳ͍ʁ
    w ੒௕࣮ײ͢Δͷخ͍͠ʂ
    34

    View Slide

  47. ͋Γ͕ͱ͏͍͟͝·ͨ͠
    :BIPPχϡʔεΞϓϦͥͻ͝ར༻͍ͩ͘͞
    35

    View Slide