ドメイン駆動設計基礎講座_ドメインと組織編_

 ドメイン駆動設計基礎講座_ドメインと組織編_

933291444e456bfb511a66a2fa9c6929?s=128

かとじゅん

June 05, 2019
Tweet

Transcript

  1. υϝΠϯۦಈઃܭجૅߨ࠲ ʙυϝΠϯͱ૊৫ฤʙ ͔ͱ͡ΎΜ !KJLP

  2. υϝΠϯͱ#$

  3. υϝΠϯͱ#$ w υϝΠϯ ໰୊ྖҬ  w Ϗδωεͷઓུ՝୊Λ෼ੳ໌֬Խ͢ΔྖҬ w #$ڥք͚ͮΒΕͨίϯςΩετ ղܾྖҬ

     w Ϗδωεͷઓུ՝୊Λղܾ͢ΔྖҬ
  4. αϒυϝΠϯ w ίΞυϝΠϯ w ૊৫Λ੒ޭʹಋ͘࠷΋ॏཁͳ ΋ͷ w αϒυϝΠϯ w ࢧԉυϝΠϯ

    w Ϗδωεʹ͸ඞཁෆՄܽͩ ͕ίΞυϝΠϯ΄ͲॏཁͰ ͳ͍΋ͷ w ൚༻υϝΠϯ w ϏδωεʹಛผͰ͸ͳ͍͕ શମͱͯ͠ඞཁͳ΋ͷ ೝূ ܥ ֎෦&31ͳͲࠩ͠ସ͑ Մೳͳ΋ͷ υϝΠϯ ࢧԉυϝΠϯ ൚༻υϝΠϯ ίΞυϝΠϯ
  5. &ίϚʔεͷυϝΠϯ෼ੳྫ υϝΠϯ &ίϚʔε#$ ঎඼Χλϩά ஫จ ੥ٻ ൃૹ ࡏݿ w ଟ͘ͷؔ৺ࣄ͕୯Ұ#$ʹด͡ࠐΊΒΕ΋͢΂ͯͷཁٻʹରԠͰ͖ͳ͍

    w ຊ࣭తͰ͸ͳ͍ґଘ͕ൃੜ͠มߋ༰қੑ͕௿Լ͢Δ w ૊৫ͷίϛϡχέʔγϣϯ΋ෳࡶԽ͢Δ w ຊདྷ͸αϒυϝΠϯɾ#$ຖʹ෼ׂ͞ΕΔ΂͖ w ग़య࣮ફυϝΠϯۦಈઃܭ
  6. αϒυϝΠϯͷ෼ੳ w ෳࡶʹབྷΈ߹ͬͨϞ σϧΛղ๤͠ɺػೳ ʹج͍ͮͨαϒυϝ Πϯʹ෼ׂ͢Δ w αϒυϝΠϯ΍#$ͷ ؔ܎ੑ΋੔ཧ͢Δ w

    #$͕αϒυϝΠϯ ͚ͩͰ੒Γཱͭͱ͸ ݶΒͳ͍͕ɺͰ͖Ε ͹#$ʹαϒυϝΠ ϯ͕๬·͍͠ w ग़య࣮ફυϝΠϯۦ ಈઃܭ υϝΠϯ &ίϚʔε#$ ੥ٻ ஫จ ঎඼Χλϩά ࡏݿ#$ ൃૹ धཁ༧ଌ#$ ࡏݿ
  7. ίΞυϝΠϯͷ෼ੳ w ࡏݿͷ࠷దԽ͕՝୊ w ചΕߦ͖͕Α͍঎඼Λޮ཰తʹࡏݿ͠ɺചΕͳ͍΋ ͷ͸ࡏݿΛ֬อ͠ͳ͍ɻ w ࢿۚޮ཰Λվળ͠ചΕے঎඼ͷࡏݿΛ֬อ͠΍͘͢ ͢Δɻ·ͨɺ༧૝Λ্ճΔചΕߦ͖Λݟͤͨͱ͖ɺ ͦͷ঎඼ͷࡏݿ֬อͰ͖ͳ͚Ε͹ͳΒͳ͍ɻ

    w কདྷͷࡏݿྔ΍ച্ݟࠐΈΛաڈͷ܏޲͔Β൑அͰ ͖Ε͹େ͖ͳॿ͚ʹͳΔɻ͜ͷΑ͏ͳधཁ༧ଌػೳ ͷಋೖ͸৽ͨͳίΞυϝΠϯʹͳΔͩΖ͏
  8. ίϯςΩετϚοϓͷ໨త w γεςϜؒͷؔ܎Λద੾ʹ೺ ѲͰ͖Δ w νʔϜ͸طଘγεςϜͱͷ࿈ ܞํ๏Λ೺ѲͰ͖ɺଞνʔϜ ͱͷίϛϡχέʔγϣϯͷඞ ཁੑΛ൑அͰ͖ΔΑ͏ʹͳΔ w

    ίϯςΩετϚοϓ͸૊৫ؒ ͷ໰୊Λݟ͚ͭग़ͤΔ།Ұͷ υΩϡϝϯτͱͳΔͨΊɺϓ ϩδΣΫτͷ੒ޭʹෆՄܽͱ ͞Ε͍ͯΔ w ग़య࣮ફυϝΠϯۦಈઃܭ ೝূɾΞΫηε ΞδϟΠϧ ϓϩδΣΫτ؅ཧ ίϥϘϨʔγϣϯ 6 6 6 % % %
  9. ίϯςΩετϚοϓͷύλʔϯ w ૊৫ύλʔϯ w νʔϜͷؔ܎Λ ද͢ w ౷߹ύλʔϯ w σʔλͱγες

    Ϝͷ࿈ܞํ๏Λ ද͢ νʔϜ# νʔϜ" γεςϜ# γεςϜ" ձ࿩ σʔλ
  10. ૊৫ύλʔϯ

  11. ύʔτφʔγοϓ w ೋͭͷίϯςΩετΛ୲౰͢ΔνʔϜ͕੒ޭɾࣦഊͷ ӡ໋Λڞʹ͢Δ૊৫ύλʔϯ ӡ໋ڞಉମ  w νʔϜؒͰڠྗతͳؔ܎Λங͖ɺ։ൃͷϓϥϯχϯά ΍ΠϯςάϨʔγϣϯͷ؅ཧ͸ڞಉͰߦ͍ɺ͓ޓ͍ͷ χʔζΛຬͨ͢Α͏ʹ͢Δඞཁ͕͋Δɻ૬ޓґଘ͢Δ

    ػೳ͸͓ޓ͍ͷϦϦʔεʹؒʹ߹͏Α͏ʹ։ൃ͢Δ $POUFYU# $POUFYU"
  12. ผʑͷಓ w ίϯςΩετΛ෼཭͢Δ૊৫ύλʔϯ w ೋͭͷػೳͷू߹͕͓ޓ͍ʹͱͬͯෆՄܽͰͳ͍ͳ Β෼཭͢Δ͜ͱ͕Ͱ͖Δ w ΠϯςάϨʔγϣϯͷߴίετΛΘ͟Θ͟෷͏ඞཁ͸ ͳ͍ɻ։ൃऀ͕ͦͷখ͍͞είʔϓͰγϯϓϧͰಛԽ ͨ͠ղܾࡦΛݟ͚ͭΒΕΔΑ͏ʹ͢Δ

    $POUFYU# $POUFYU"
  13. ॱԠऀ w ্ྲྀԼྲྀؔ܎͕͋Δ૊৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀ͕Լྲྀͷཁٻ ʹԠ͑Δಈػ͕ͳ͍ɻ w ্ྲྀʹԼྲྀͷ੒൱ͷ੹೚͕ͳ͍ w ԼྲྀνʔϜ͸#$ؒͷม׵ͷखؒ Λলͨ͘Ίʹɺ্ྲྀʹ༩͑ΒΕ

    ͨϞσϧͰզຫ͢͠Δ͜ͱʹͳ Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
  14. ސ٬ڙڅऀ w ্ྲྀԼྲྀؔ܎͕͋Δ૊৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀͷνʔϜ͕੒ޭ ͢Δ͔Ͳ͏͔͕Լྲྀͷ݁Ռʹࠨӈ ͞ΕΔ w ্ྲྀνʔϜ͸ԼྲྀνʔϜͷχʔζ ʹ༷ʑͳํ๏ͰରԠ͢Δඞཁ͕͋ ΔɻԼྲྀͷ༏ઌॱҐΛߟྀͯ͠ɺ

    ্ྲྀͷϓϥϯχϯάΛߦ͏ɻԼྲྀ ͷཁ݅ʹඞཁͱͳΔ࡞ۀʹ͍ͭͯ ަব͠ɺ༧ࢉΛཱͯΔ͜ͱͰఏڙ ͷ໿ଋͱεέδϡʔϧΛશһ͕ཧ ղͰ͖ΔΑ͏ʹ͢Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
  15. ౷߹ύλʔϯ

  16. ڊେͳటஂࢠ #JH#BMMPG.VE w ڥք͕ͳ͍΋͘͠͸ᐆດͳγεςϜΛ ࣔ͢Ξϯνύλʔϯ w ෳ਺ͷ֓೦ମܥ͕ࠞ͟Γ߹͍ɺఆٛ΍ ϧʔϧ͕ᐆດͳͬͨΓໃ६͢Δɻػೳ ௥Ճ͞ΕΔͱJGDBTFͳͲͷ෼ذϩδο Ϋ͕૿͑Δɻґଘؔ܎͸ιϑτ΢ΣΞ

    Λԣஅ͠࠷ऴతʹటஂࢠʹͳΔ w &ίϚʔεͷ঎඼ͱࡏݿͷ঎඼͸ผͷ ֓೦͕ͩɺڥք͕ͳ͍ͷͰ͢΂ͯͷཁ ٻΛຬͨ͢ɺਆϞσϧͱͯ͠ͷ঎඼Ϟ σϧ͕Ͱ͖͕͋Δɻཧղ΋มߋ΋ࠔ೉ ʹʜ w ࠷΋ਓؾ͕͋Δઃܭख๏Ͱ΋͋Δʜ $POUFYU# $POUFYU" $POUFYU$
  17. ڞ༗Χʔωϧ w Ұ෦ͷϞσϧ΍ͦΕʹؔ࿈͢Δ ίʔυΛڞ༗͢Ε͹ɺ૬ޓґଘ ੑ͕ඇৗʹߴ·Δɻ w ઃܭ࡞ۀͷॿ͚ʹͳΔ͜ͱ΋͋ Ε͹ɺٯʹअຐʹͳΔ͜ͱ΋͋ ΔɻҰํͷνʔϜʹ૬ஊͤͣʹ มߋͯ͠͸ͳΒͳ͍ɻ

    w ໌ࣔతͳڥքΛఆΊɺೋͭͷ νʔϜ͕߹ҙͨ͠υϝΠϯϞσ ϧͷαϒηοτΛࢦఆ͢Δ $POUFYU# $POUFYU"
  18. ෗ഊ๷ࢭ૚ "$- w ෗ഊͨ͠ੈքͷϞσϧΛ৽͍͠ੈքʹ ࣋ͪࠐ·ͳ͍ͨΊͷ౷߹ύλʔϯ w ԼྲྀͷΫϥΠΞϯτ͸ִ཭͢ΔͨΊͷ ϨΠϠʔΛ࡞੒͢Δ͜ͱʹΑͬͯɺ্ ྲྀͷγεςϜͷػೳΛಠࣗͷυϝΠϯ Ϟσϧͷ༻ޠͰදݱ͢ΔػೳΛఏڙ͢

    Δ w "$-͸طଘͷ*'Λ౳ͯ͠ଞͷγες Ϝͱ௨৴͢ΔͷͰɺଞͷγεςϜΛम ਖ਼͢Δඞཁ͸΄ͱΜͲͳ͍͔ɺ·ͬͨ ͘ͳ͍͜ͱ΋͋Δɻ಺෦తʹ͸ɺ͜ͷ ϨΠϠʔ͕ඞཁʹԠͯ͡ೋͭͷϞσϧ ؒͰͷม׵Λ྆ํ޲ʹରͯ͠ߦ͏ $POUFYU# $POUFYU" "$-
  19. ެ։ϗεταʔϏε 0)4 w ϓϩτίϧΛαʔϏεͱͯ͠ެ։͠ɺαϒγεςϜͱ ౷߹͢Δඞཁ͕͋Δ૊৫͕ར༻Ͱ͖ΔΑ͏ʹ͢Δ w ৽͍͠౷߹ͷཁ݅ʹରԠ͢Δࡍ͸ɺϓϩτίϧʹػೳ Λ௥Ճ֦͠ு͢Δɻͨͩ͠ɺ͋ΔνʔϜ͚ͩʹಛ༗ͷ ཁٻ͸ผͩɻͦͷΑ͏ͳಛघͳέʔεʹ͸ɺҰճݶΓ ͷม׵αʔϏεΛ࢖༻ͯ͠ϓτϩτίϧΛ֦ு͠ɺڞ

    ༗ϓϩτίϧ͸୯७ͰҰ؏ੑͷ͋Δঢ়ଶΛอͭ͜ͱɻ $POUFYU# $POUFYU" 0)4
  20. ެද͞Εͨݴޠ 1- w ͭͷڥք಺ͷϞσϧಉ࢜Λม׵͢ΔͨΊʹڞ௨ͷ ݴޠΛ࢖͏ɻ w ϞσϧΛ͜ͷڞ௨ݴޠʹม׵ͨ͠ޙʹɺҰํͷϞσ ϧ΁ม׵͢Δ w ެද͞Εͨݴޠ͸ެ։ϗεταʔϏεͱ૊Έ߹Θͤ

    ͯར༻͞ΕΔ͜ͱ͕ଟ͍ $POUFYU# $POUFYU" 1-
  21. #$ͱϚΠΫϩαʔϏε

  22. #$ͱϚΠΫϩαʔϏε w #$ʹԊͬͯαʔϏεڥքΛҾ͘ɻνʔϜ΋#$ʹҰக ͢Δ͜ͱʹͳΔɻ#$಺ͷυϝΠϯ֓೦Λ೺Ѳ͠΍͢ ͘ͳΔɻཁٻมԽ࣌ʹมߋର৅ͷαʔϏε͕ಛఆ͞ Εɺมߋ͢Δඞཁͷ͋ΔՕॴ͕ݮΓɺਝ଎ʹσϓϩΠ Ͱ͖ΔΑ͏ʹͳΔ w #$಺ͷαʔϏε͕͓ޓ͍ʹର࿩͢ΔαʔϏεʹ͋Δ Մೳੑ͕ߴ·ΓɺγεςϜઃܭͱϦϦʔεௐ੔͕༰қ

    ʹͳΔɻ w Ϗδωεར֐ؔ܎ऀͱͷର࿩ͷ࢓ํʹؔͯ͠ɺνʔϜ ͕෼໺ͷઐ໳ՈͱΑ͍ؔ܎Λங͖΍͘͢ͳΔ
  23. #$γεςϜͷڥքʹ૊৫ͷڥք

  24. ૊৫͸ΞʔΩςΫνϟʹ౤Ө͞ΕΔ w ΠϊϕʔγϣϯͷδϨϯϚΑΓ

  25. ίϯ΢ΣΠͷ๏ଇ w γεςϜΛઃܭ͢Δ͋ΒΏΔ૊৫͸ɺඞͣͦͷ૊৫ͷίϛϡχ έʔγϣϯߏ଄ʹ฿ ͳΒ ͬͨߏ଄Λ࣋ͭઃܭΛੜΈग़͢ɻ w ͭ·Γɺ૊৫ͷߏ଄͸γεςϜͷߏ଄ͱἧ͑ͯͳ͚Ε͹ͳΒͳ ͍ɻ w

    ٯίϯ΢ΣΠઓུ ग़య"/"(*-&8":  w lࣗ෼ͨͪͷ๬·͍͠ΞʔΩςΫνϟઃܭΛଅਐ͢ΔΑ͏ ʹɺνʔϜͱ૊৫ଆΛػಈతʹਐԽͤ͞Δ͜ͱΛਪ঑͢Δɻ ཧ૝తʹ͸ʮٕज़తΞʔΩςΫνϟʯ͕ʮϏδωεΞʔΩς Ϋνϟʯͷಉܗࣸ૾ʹͳΔΑ͏ʹz w ʮਓؒ΍૊৫ؒͷίϛϡχέʔγϣϯʢ৘ใྲྀʣʯͱ͍͏΋ ͷ͕ιϑτ΢ΣΞ։ൃʹ͸ܾఆతͳΠϯύΫτΛ༩͑Δɺͱ ͍͏͜ͱΛ·ͣೝΊɺͦΕΛੵۃతʹ׆༻͢ΔΑ͏ʹɺͱ͍ ͏͜ͱͰ͢ɻ
  26. ·ͱΊ w ڥք͚ͮΒΕͨίϯςΩετ #$ ͸Ϟσϧͷ༗ޮൣ ғͱݴΘΕΔɻͦͷϞσϧ͸ར֐ؔ܎ऀؒ΍γεςϜ ؒͰར༻͞ΕΔɻ͜ͷಛੑʹ߹Θͤͯɺ૊৫ͷڥք ʹγεςϜͷڥքͱͳΔΑ͏ʹ͢Δ͜ͱ͕๬·ΕΔ w ʮιϑτ΢ΣΞ͸ձ࿩ͰͰ͖ͯΔʯͱ͍͏ݴ༿΋͋

    Δɻ૊৫͕վม͞ΕΔͱ͖͸ɺίϛϡχέʔγϣϯ ͷมԽ͕ιϑτ΢ΣΞ΁༩͑ΔӨڹΛແࢹͰ͖ͳ ͍ɻ൥ࡶͳίϛϡχέʔγϣϯ͸γεςϜΛෳࡶʹ͢ ΔՄೳੑ΋͋Δ͠ɺ૊৫ؒͷ໾ׂ͕γϯϓϧʹͳΕ ͹ɺͦΕΛ౤Өͨ͠γεςϜ΋γϯϓϧʹͳΔ͔΋͠ Εͳ͍