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

新規機能開発からモジュール分割を始めてみる

izumi
September 20, 2020

 新規機能開発からモジュール分割を始めてみる

izumi

September 20, 2020
Tweet

More Decks by izumi

Other Decks in Programming

Transcript

  1. ৽نػೳ։ൃ͔Β
    Ϟδϡʔϧ෼ׂΛ࢝ΊͯΈΔ
    3ZP*[VNJ
    J04%$+BQBO

    View Slide

  2. 3ZP*[VNJ
    OPIBOB *OD
    5XJUUFS!J[N
    (JU)VC!SJ[VNJ

    View Slide

  3. View Slide

  4. ࠓ೔࿩͢ࣄ
    w ػೳ։ൃͱฒߦͯ͠Ϟδϡʔϧ෼ׂΛߦͬͨ࿩
    w ࣮ࡍʹײͨ͡ϝϦοτ΍σϝϦοτ΍ମݧஊ

    View Slide

  5. ϚϧνϞδϡʔϧ

    View Slide

  6. ࠷ۙͷΞϓϦ
    w ͭͷΞϓϦ͕ଟػೳԽ͍ͯ͠Δ
    w FYεʔύʔΞϓϦ

    View Slide

  7. ϊϋφ΋ྫ֎Ͱ͸ͳ͘
    w ϑΥτϒοΫΛ࡞Δ͚ͩͷػೳ͔Β
    w ϓϨϛΞϜϑΥτϒοΫͳͲ঎ࡐͷ௥Ճ
    w (PPHMFϑΥτͱͷ࿈ܞͳͲ
    w εʔύʔΞϓϦ΄ͲͰ͸ͳ͍͕

    ػೳ͕૿͍͑ͯΔ

    View Slide

  8. ػೳ͕૿͑Δͱ
    w ίʔυϕʔε΋ڊେʹͳΔ
    w ઃܭͷෳࡶԽ
    w Ϗϧυ࣌ؒͷ૿Ճ
    w ˠ։ൃޮ཰ͷ௿Լ

    View Slide

  9. ϚϧνϞδϡʔϧ
    w ΞϓϦΛෳ਺Ϟδϡʔϧʹ෼ׂ͢Δ͜ͱͰ
    w ੹຿෼཭ʹΑΔӨڹൣғͷॖখ
    w ࠩ෼ϏϧυʹΑΔϏϧυ࣌ؒͷ୹ॖ

    View Slide

  10. طଘΞϓϦʹऔΓೖΕ͍͕ͨ
    997JFX$POUSPMMFS
    997JFX.PEFM
    99.PEFM
    99"1*$MJFOU



    ػೳ"
    ::7JFX$POUSPMMFS
    ::7JFX.PEFM
    ::.PEFM
    ::"1*$MJFOU



    ػೳ#
    ;;7JFX$POUSPMMFS
    ;;7JFX.PEFM
    ;;.PEFM
    ;;"1*$MJFOU



    ػೳ$

    View Slide

  11. طଘΞϓϦʹऔΓೖΕ͍͕ͨ
    99.BOBHFSͱ͔ͷਆΫϥε
    997JFX$POUSPMMFS
    997JFX.PEFM
    99.PEFM
    99"1*$MJFOU



    ػೳ"
    ::7JFX$POUSPMMFS
    ::7JFX.PEFM
    99.PEFM
    ::"1*$MJFOU



    ػೳ#
    'BU7JFX$POUSPMMFS



    ػೳ$
    ґଘ
    ґଘ
    ڞ௨Ϋϥε
    ֎෦Ϧιʔε
    ґଘ ґଘ
    4IBSFE*OTUBODF

    View Slide

  12. طଘΞϓϦʹऔΓೖΕ͍͕ͨ
    99.BOBHFSͱ͔ͷਆΫϥε
    997JFX$POUSPMMFS
    997JFX.PEFM
    99.PEFM
    99"1*$MJFOU



    ػೳ"
    ::7JFX$POUSPMMFS
    ::7JFX.PEFM
    99.PEFM
    ::"1*$MJFOU



    ػೳ#
    'BU7JFX$POUSPMMFS



    ػೳ$
    ґଘ
    ґଘ
    ڞ௨Ϋϥε
    ֎෦Ϧιʔε
    ґଘ ґଘ
    4IBSFE*OTUBODF
    Ͳ͔͜Β੾Γग़͍͍͔ͯ͠
    ෼͔Βͳ͍

    View Slide

  13. طଘΞϓϦʹऔΓೖΕ͍͕ͨ
    99.BOBHFSͱ͔ͷਆΫϥε
    997JFX$POUSPMMFS
    997JFX.PEFM
    99.PEFM
    99"1*$MJFOU



    ػೳ"
    ::7JFX$POUSPMMFS
    ::7JFX.PEFM
    99.PEFM
    ::"1*$MJFOU



    ػೳ#
    'BU7JFX$POUSPMMFS



    ػೳ$
    ґଘ
    ґଘ
    ڞ௨Ϋϥε
    ֎෦Ϧιʔε
    ґଘ ґଘ
    4IBSFE*OTUBODF
    େن໛ϦϑΝΫλ͕ඞཁͦ͏
    ৽نػೳ։ൃ΋ࢭΊΒΕͳ͍

    View Slide

  14. ৽نػೳ͔ΒϞδϡʔϧ෼ׂ

    View Slide

  15. ৽نػೳ͔ΒϞδϡʔϧ෼ׂ
    w ৽͍͠ࢪࡦͷػೳΛϞδϡʔϧʹ෼ׂ͢Δ
    લఏͰઃܭ͢Δ
    w ྫ
    (PPHMFϑΥτͷ࿈ܞ

    View Slide

  16. खॱ
    w ཁ݅ ࢓༷ͷ੔ཧ
    w ੹຿ΛܾΊΔ
    w JOQVUPVUQVUΛఆٛ
    w GSBNFXPSLͷ࡞੒
    w ։ൃ

    View Slide

  17. खॱཁ݅ ࢓༷ͷ੔ཧ
    w ཁ݅ ྫ

    w (PPHMFΞΧ΢ϯτͱ࿈ܞ͕Ͱ͖Δ
    w ࣸਅ͕ҰཡͰ͖Δ
    w ࣸਅΛબ୒ͯ͠ΞϓϦͰར༻Ͱ͖Δ

    View Slide

  18. Ϟδϡʔϧ෼ׂ͠΍͍͢࢓༷
    w ಠཱͨ͠৽نը໘
    w طଘͷυϝΠϯ࢓༷΁ͷґଘ͕গͳ͍
    w ϊϋφͰ͸طଘͷ*NBHF1JDLFS΋աڈʹϥΠϒϥϦͱͯ͠੾Γग़͠
    ͍ͯͨ
    w IUUQTHJUIVCDPNOPIBOB/PIBOB*NBHF1JDLFS
    w ٯʹطଘը໘΍υϝΠϯ΁ͷґଘ౓͕ߴ͍࢓༷͸෼ׂͮ͠Β͍

    View Slide

  19. खॱ੹຿ΛܾΊΔ
    w (PPHMFΞΧ΢ϯτϩάΠϯ
    w (PPHMFΞΧ΢ϯτϩάΞ΢τ
    w (PPHMFϑΥτͷࣸਅऔಘ
    w ࣸਅબ୒

    View Slide

  20. ϑϨʔϜϫʔΫଆͷϧʔϧ
    w 4XJGU
    w ݹ͍࣮૷͸࣋ͪࠐ·ͳ͍

    View Slide

  21. ϑϨʔϜϫʔΫଆͷϧʔϧ
    w Ͳ͏ͯ͠΋ݹ͍࣮૷Λ࢖͍͍ͨ৔߹
    1SPUPDPM͚ͩఆ࣮ٛͯ͠૷͸"QQଆ͔Β஫ೖ͢Δ

    View Slide

  22. खॱJOQVUPVUQVUΛఆٛ
    w "QQͱϞδϡʔϧؒͰͷJOQVUPVUQVUΛఆٛ͢Δ

    View Slide

  23. खॱJOQVUPVUQVUΛఆٛ
    w "QQͱϞδϡʔϧؒͰͷJOQVUPVUQVUΛఆٛ͢Δ
    "1*5PLFO
    બ୒ͨࣸ͠ਅͷϦετ

    View Slide

  24. खॱGSBNFXPSLͷ࡞੒

    View Slide

  25. खॱ։ൃ
    w جຊతʹ͸ීஈͷ։ൃͱมΘΒͳ͍
    w ΞϓϦଆʹެ։͢Δ΋ͷ͸໌ࣔతʹQVCMJD΍PQFOʹ͢Δ
    w αʔυύʔςΟͷϥΠϒϥϦΛ࢖͏৔߹͚ͩগ͠஫ҙ͕ඞཁ

    View Slide

  26. 5JQTϑϨʔϜϫʔΫଆͰϥΠϒϥϦΛ࢖͏
    w $PDPB1PET
    w $BSUIBHF
    w 4XJGU1BDLBHF.BOBHFS

    View Slide

  27. $PDPB1PET
    w ϝΠϯλʔήοτʹ΋
    ϥΠϒϥϦΛؚΊΔ

    View Slide

  28. $BSUIBHF
    w ϝΠϯλʔήοτʹ΋
    ϦϯΫ͢Δ
    ϝΠϯλʔήοτ
    ϑϨʔϜϫʔΫ

    View Slide

  29. $BSUIBHF
    w DPQZGSBNFXPSLT͸ϝΠϯλʔήοτ͚ͩͰߦ͏

    View Slide

  30. 4XJGU1BDLBHF.BOBHFS
    w Ϟδϡʔϧଆ͚ͩʹೖΕΕ͹0,ͬΆ͍
    w ˞ΞʔΧΠϒ·Ͱ͸֬ೝ͠·͕ͨ͠ετΞϦϦʔε͸ະ֬ೝͰ͢

    View Slide

  31. 4XJGU1BDLBHF.BOBHFS
    w ෳ਺ϞδϡʔϧͰѻ͍͍ͨ৔߹
    w %ZOBNJD-JCSBSZ͸ෳ਺ʹϦϯΫՄೳ
    w 4UBUJD-JCSBSZ͸ෳ਺ϞδϡʔϧʹೖΕΑ͏ͱ͢ΔͱΤϥʔʹͳΔ
    w ෳ਺ϞδϡʔϧͰѻ͍͍ͨ৔߹͸ڞ௨Ϟδϡʔϧʹಋೖ͠ɺ
    ͦͷϞδϡʔϧΛհͯ͠࢖͏ͳͲ͢Δͱྑͦ͞͏

    View Slide

  32. खॱ։ൃ
    w جຊతʹ͸ීஈͷ։ൃͱมΘΒͳ͍
    w ΞϓϦଆʹެ։͢Δ΋ͷ͸໌ࣔతʹQVCMJD΍PQFOʹ͢Δ
    w αʔυύʔςΟͷϥΠϒϥϦΛ࢖͏৔߹͚ͩগ͠஫ҙ͕ඞཁ

    View Slide

  33. ϦϦʔε

    View Slide

  34. ϝϦοτ

    View Slide

  35. ڞ௨Խ͢΂͖෦෼͕ݟ͑ͯ͘Δ
    w ࣮ࡍʹϞδϡʔϧଆͷ։ൃΛ͍ͯͯ͠
    w ΞϓϦଆͷ&YUFOTJPOΛ࢖͍͍ͨέʔεͳͲ͕͋ͬͨ
    Ϟδϡʔϧͷ૬ޓࢀর͸Ͱ͖ͳ͍ͷͰͦͷ··Ͱ͸࢖͑ͳ͍

    &YUFOTJPOͳͲ
    ࢖͍͍ͨ

    View Slide

  36. ڞ௨Խ͢΂͖෦෼͕ݟ͑ͯ͘Δ
    w ڞ௨ϞδϡʔϧͳͲ
    ࠓޙͷϞδϡʔϧ෼͚ͷ
    ώϯτ͕ಘΒΕΔ
    &YUFOTJPOͳͲ
    ڞ௨Ϟδϡʔϧ

    View Slide

  37. طଘίʔυʹनΘΕͳ͘ͳΔ
    w طଘͷԚ͍෦෼ͳͲΛൃݟ͢ΔͱϞνϕʔγϣϯ௿Լ
    ˠ৽ن։ൃͯ͠ΔͷʹӬԕʹϦϑΝΫλΛ࢝Ίͯ͠·ͬͨΓ
    w ৽نϞδϡʔϧΛ੾Δ͜ͱͰطଘͷߏ੒΍ίʔυΛࢀর͢Δػձ͕
    ݮΓɺ্هͷΑ͏ͳ೰Έ͕গ͠ղফ͞Εͨ

    View Slide

  38. Өڹൣғͷॖখ
    w جຊతʹϞδϡʔϧ಺෦Ͱ׬݁Ͱ͖Δ
    w Өڹൣғ΋ݶΒΕΔͷͰ։ൃޮ཰΋ϦϦʔε࣌ͷ҆৺౓΋Ξοϓ
    w 2"΍Ϣʔβʔ໰͍߹ΘͤௐࠪͳͲ΋Ϟδϡʔϧ಺Ͱ׬݁

    View Slide

  39. ϝϦοτ
    w ڞ௨Խ͢΂͖෦෼͕ݟ͑ͯ͘Δ
    w طଘίʔυʹनΘΕͳ͘ͳΔ
    w Өڹൣғͷॖখ

    View Slide

  40. σϝϦοτ

    View Slide

  41. ϓϩδΣΫτϑΝΠϧͷίϯϑϦΫτ
    w λʔήοτͷ௥ՃͰൃੜͨ͠ίϯϑϦΫτͷղফ͸ࠔ೉
    w Ұ෦$BQBCJMJUZͷઃఆΛਧ͖ඈ͹͠·ͨ͠

    View Slide

  42. 9DPEF(FO
    w IUUQTHJUIVCDPNZPOBTLPMC9DPEF(FO
    w σΟϨΫτϦߏ੒ͱ:".-ϑΝΠϧ͔Β
    ϓϩδΣΫτϑΝΠϧΛ࡞ΕΔπʔϧ
    w ϓϩδΣΫτϑΝΠϧͷ(JU؅ཧ͔Βղ์͞ΕΔ
    w ઌʹಋೖ͢΂͖ͩͬͨ

    View Slide

  43. Ϟδϡʔϧ෼ׂͷ୯Ґ͕ػೳ୯ҐʹͳΔ
    BQQ
    ػೳ" ػೳ# ػೳ$
    ڞ௨Ϟδϡʔϧ
    BQQ
    1SFTFOUBUJPO
    %PNBJO
    *OGSBTUSVDUVSF
    ػೳ୯Ґ ϨΠϠʔ୯Ґ

    View Slide

  44. Ϟδϡʔϧ෼ׂͷ୯Ґ͕ػೳ୯ҐʹͳΔ
    BQQ
    ػೳ" ػೳ# ػೳ$
    ڞ௨Ϟδϡʔϧ
    BQQ
    1SFTFOUBUJPO
    %PNBJO
    *OGSBTUSVDUVSF
    ͬͪ͜ͷ෼͚ํʹ͢Δͷ͕೉͘͠ͳΔ

    View Slide

  45. σϝϦοτ
    w ϓϩδΣΫτϑΝΠϧͷίϯϑϦΫτ
    w Ϟδϡʔϧ෼ׂͷ୯Ґ͕ػೳ୯Ґʹͳͬͯ͠·͏
    w ந৅౓্͕͕ΔͷͰ࣮૷͕Ͳ͜ʹ͋Δ͔෼͔Γʹ͘͘ͳΔՄೳੑ

    View Slide

  46. ࠓޙͷల๬
    w 9DPEF(FOͷಋೖ
    w طଘػೳͷϞδϡʔϧ෼ׂ
    w 0CKFDUJWF$ͳͲݹ͍ίʔυͷӅṭ
    w ࠓޙͷ৽ػೳͷϞδϡʔϧ෼ׂ
    w EZOBNJDGSBNFXPSL͕૿͑ͨ৔߹ͷରࡦ
    w ͳͲͳͲ

    View Slide

  47. ·ͱΊ
    w ৽نػೳ͔ΒϞδϡʔϧΛ෼͚Δͱ͍͏ࣄΛ΍ͬͯΈͯ
    w ڞ௨Խ͢΂͖෦෼ͳͲࠓޙͷϞδϡʔϧ෼ׂͷώϯτ͕ಘΒΕͨ
    w ػೳ͕૿͑ͯ΋ӨڹൣғΛ෼཭͢Δ͜ͱ͕Ͱ͖ͨ

    View Slide

  48. ·ͱΊ
    w ϞδϡʔϧΛ෼ׂ͢Δ͜ͱࣗମ͸ͦ͜·Ͱେม͡Όͳ͍
    w ໖ີͳܭը΋େ੾͕ͩखΛಈ͔ͯ͠ΈΔ͜ͱ΋େ੾
    w ಠཱͨ͠৽ػೳΛ࡞Δࡍ͸Ϟδϡʔϧ෼ׂΛ࢝ΊΔνϟϯε
    w ίʔυن໛͕૿͑ͯ΋։ൃޮ཰Λམͱ͞ͳ͍Α͏޻෉Λ͠Α͏ʂ

    View Slide

  49. 5IBOL:PV

    View Slide