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

DDD is dead. God is in Twitter #scrumsapporo

405fe9ab689473f267e2cfbd95f78c75?s=47 kyonmm
PRO
November 06, 2021

DDD is dead. God is in Twitter #scrumsapporo

Scrum Fest Sapporo 2021でプレゼンしました。

私達の愛したDDDを取り戻すための苦悩と挑戦について紹介します。本作品はマリリン・マンソン Rock is dead オマージュ作品となっております。

DDDはその構造上、デザイン思考やリーンスタートアップやディスカバリーといったものを考慮しておらず、デリバリーフェーズを意識した手法になっているのですけど、これはチーム開発のボトルネックを生み出す原因になりがちではないでしょうか?

デリバリーにおいてはドメインを語れる人がいく人かおり、それをベースにそこそこの規模のシステム設計やアプリケーション設計をしていく。その過程でDDDを実践したという経験がつくわけですが、その人に対して、新規事業であったり、若々しい状態の事業のサポートをお願いすると、劣化したDDDのような設計をベースに進めつつ、現場のプログラマーを説得する行為に走る姿をみます。そこには、まだドメインは明確に認識されていないのであるから、DDDというもの自体が使えない。それを自覚的にしろ無自覚的にしろ何か劣化させて使うことで妙な構造が生まれてしまう。

必要とされているのは、ドメインが認識されていない中でのDDDのやり方、つまり旧式DDDと決別した、もしくはそれを予感させながらも、ドメインが暗中模索ななかでの戦い方であり、DDDを進めることではないのではないでしょうか。

そんな中で身近な所からでもDDDを胸の奥底にしまいながら、挑戦していることについて紹介します。

https://confengine.com/conferences/scrum-fest-sapporo-2021/proposal/16033/ddd-is-dead-god-is-in-twitter

405fe9ab689473f267e2cfbd95f78c75?s=128

kyonmm
PRO

November 06, 2021
Tweet

More Decks by kyonmm

Other Decks in Technology

Transcript

  1. LZPO@NN %%%JT%FBE (PEJTJO5XJUUFS 

  2. %%%ͷೖ໳ɺૉ੖Β͍͠ࣄྫʮͰ͸ͳ͍ʯ ຊߨԋͷझࢫ w ιϑτ΢ΣΞγεςϜΛΞδϟΠϧ։ൃ͢Δ΋ͷͱͯ͠ͷ೰Έ w ΞδϟΠϧίʔν͍ͯ͠Δݱ৔Ͱͷ೰Έ w ࣗ෼͕ࢼߦࡨޡ͠͸͡Ί͍ͯΔ͜ͱ w ͜ΕΒΛωλʹΑΓΑ͍։ൃʹ͍ͭͯߟ͍͖͍͑ͯͨ

    w λΠτϧ͸.BSJMZO.BOTPOʮ3PDLJT%FBEʯͷΦϚʔδϡͰ͢ɻ w 3PDLJTEFBEFSUIBOEFBE தུ (PEJTJOUIF57 
  3. w %%%ͷ͓͞Β͍ w 4DSVNͱϏδωε w ೰Έ w ޻෉ 

  4.  LZPO@NN 
 σϩΠττʔϚπίϯαϧςΟϯά߹ಉձࣾࣥߦ໾һ ΞδϟΠϧίʔνɺΞʔΩςΫτ 
 ৽نࣄۀɺ.BB4ɺେن໛ΞδϟΠϧɺݚम 
 ஜ೾େֶFO1J5 ෼εϓϦϯτɺϑϥΫλϧεϓϦϯτ

    
 ΫϦετϑΝʔɾΞϨάβϯμʔ
  5. %%%Ͳͷఔ౓ ͱΓ͍Ε͍ͯ·͔͢ 

  6. %%%ͷ͓͞Β͍ 

  7. &SJD&WBOTΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ +BQBOFTF&EJUJPO  QYJW ,JOEMF൛ ࣄۀՁ஋Λ΋ͨΒ͔͢͠͠ɺଟ͘ͷΞϓϦέʔγϣϯʹ͓͍ͯɺ࠷΋ॏཁͳෳࡶ͞ ͸ɺٕज़తͳ΋ͷͰ͸ͳ͍ɻෳࡶͳͷ͸υϝΠϯͦͷ΋ͷɺ͢ͳΘͪɺϢʔβͷ׆ಈ ΍ϏδωεͳͷͰ͋ΔɻυϝΠϯͷ࣋ͭ͜ͷෳࡶ͕͞ઃܭͰѻΘΕͳ͍ͷͰ͋Ε͹ɺ ج൫ͱͳΔٕज़͕ద੾ʹߟ͑ΒΕ͍ͯͨͱͯ͠΋ҙຯ͕ͳ͍ɻઃܭΛ੒ޭͤ͞ΔͨΊ ʹ͸ɺιϑτ΢ΣΞʹ͓͚Δ͜ͷத৺తͳଆ໘ΛɺମܥతʹѻΘͳ͚Ε͹ͳΒͳ͍ɻ

    
  8. &SJD&WBOTΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ +BQBOFTF&EJUJPO  QYJW ,JOEMF൛ ຊॻ͕લఏͱ͢Δͷ͸ɺ࣍ͷͭͰ͋Δɻ΄ͱΜͲͷιϑτ΢Σ ΞϓϩδΣΫτʹ͓͍ͯɺҰ൪ͷয఺͸ɺυϝΠϯͱυϝΠϯϩ δοΫʹ߹Θͤͳ͚Ε͹ͳΒͳ͍ɻෳࡶͳυϝΠϯͷઃܭ͸ɺ Ϟσϧʹج͔ͮͳ͚Ε͹ͳΒͳ͍ɻ 

  9. 

  10. ϰΝʔϯɾϰΝʔϊϯ࣮ફυϝΠϯۦಈઃܭ +BQBOFTF&EJUJPO  ,JOEMFͷҐஔ/P ,JOEMF൛ ࣄۀՁ஋Λ΋ͨΒ͢ιϑτ΢ΣΞΛ։ൃ͢Δͱ͍͏ͷ͸ɺ୯ʹ͘͝౰ͨΓલͷۀ຿ ιϑτ΢ΣΞΛ࡞Δ͜ͱͱಉٛͰ͸ͳ͍ɻࣄۀՁ஋Λ΋ͨΒ͢ιϑτ΢ΣΞ͸ɺ ࣄۀઓུ͋ͬͯͷ΋ͷͩ͠ɺڝ߹ʹର͢ΔΞυόϯςʔδ͕໌֬ͳιϦϡʔγϣ ϯΛ࣋ͭ΋ͷͩɻιϑτ΢ΣΞ͸ɺ୯ʹٕज़໘͚ͩͰͳ͘ɺϏδωεʹ΋བྷΜͰ ͘Δɻ

    
  11. ϰΝʔϯɾϰΝʔϊϯ࣮ફυϝΠϯۦಈઃܭ +BQBOFTF&EJUJPO  ,JOEMFͷҐஔ/P ,JOEMF൛ ۀ຿஌͕ࣝҰ͔ॴʹ·ͱ·Δ͜ͱ͸ɺ·ͣͳ͍ɻ։ൃνʔϜ͸ɺ͞·͟·ͳཱ৔ͷεςʔΫϗϧμʔ ͷҙݟ΍ཁ๬ʹ͍ͭͯɺ͏·͘όϥϯεΛͱͬͯ༏ઌॱҐ෇͚͢Δඞཁ͕͋Δɻͦͯ͠ɺ͞·͟· ͳεΩϧηοτΛ࣋ͭଟ͘ͷਓͨͪͱྗΛ߹Θͤɺιϑτ΢ΣΞͷػೳཁ݅΍ඇػೳཁ݅Λݟ͚ͭ Δ͜ͱΛ໨ࢦ͢ɻ͢΂ͯͷ৘ใ͕ू·ͬͨͱͯ͠ɺͦΕΒͷཁ͕݅ࣄۀՁ஋Λ΋ͨΒͤΔͱ͍͏͜ ͱΛɺͲ͏΍͔ͬͯͨ͠ΊΕ͹͍͍ͷͩΖ͏ɻٻΊΒΕ͍ͯΔࣄۀՁ஋ͱ͸͍͍ͬͨԿͰɺͦΕΛ

    Ͳ͏΍ͬͯݟ͚ͭग़ͯ͠༏ઌॱҐ෇͚͢Ε͹͍͍ͷͩΖ͏ɻ 
  12. %%%͸໌֬ʹڥք͚ͮΕͨίϯςΩετʹ͓͚ΔϢϏ ΩλεݴޠΛϞσϦϯά͢Δ͜ͱΛ࠷΋ॏཁࢹ͢Δɻ w %%%Ͱ࠷΋ॏཁͳͷ͸େ͖ͳటஂࢠΛͭ͘Βͳ͍͜ͱͰ͋ΓɺͦΕ͸ #PVOEFE$POUFYUͱ6CJRVJUPVT-BOHVBHFʹΑΔγεςϜ։ൃͱ͍͏Ξϓ ϩʔν͕ࠜװͰ͋Δͱ͍͏ߟ͑ํΛ͍ͯ͠Δɻ w ݪจ *OTIPSU %%%JTQSJNBSJMZBCPVUNPEFMJOHB6CJRVJUPVT-BOHVBHF

    JOBOFYQMJDJUMZ#PVOEFE$POUFYU 
 %PNBJO%SJWFO%FTJHO%JTUJMMFE 7BVHIO7FSOPO F 
  13. -FXJT$BSSPMMʰ1PFUB'JU /PO/BTDJUVSʱ ·ͣҰจΛॻ͍ͯɺ࣍ʹͦΕΛࡉ͔͘੾ΓࠁΈͳ͍͞ɻͦͯ͠ɺ ࠁΜͩܽยΛࠞͥ߹Θͤɺ͜΅ΕམͪΔʹ೚ͤͯฒ΂ͯΈͳ͞ ͍ɻϑϨʔζͷॱং͕มΘͬͯ΋ɺ݁ہҧ͍͸ͳ͍ͷ͔ͩΒɻ 

  14. 4DSVNͱϏδωε 

  15.  IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ fi UKPVSOFZ

  16.  IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ fi UKPVSOFZ 4DSVNͷ 
 ओઓ৔

  17.  IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ fi UKPVSOFZ σβΠϯࢥߟ 
 ͷओઓ৔ -FBO4UBSUVQ 
 ͷओઓ৔

    4DSVNͷ 
 ओઓ৔
  18. ೰Έ 

  19. &SJD&WBOTΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ +BQBOFTF&EJUJPO  Q ,JOEMF൛ Ϣʔβɿ͕ͨͬͯ͠ɺ௨ؔ஍఺Λมߋ͢Δͱɺܦ࿏ܭըΛશ෦࡞Γ௚͞ͳ͍ͱ͍͚·ͤΜɻ ։ൃऀɿΘ͔Γ·ͨ͠ɻܦ࿏࢓༷ʢ3PVUF4QFDJGJDBUJPOʣʹ͋ΔଐੑΛͲΕ͔ͭͰ΋มߋ ͨ͠Βɺݹ͍༌ૹ೔ఔʢ*UJOFSBSZʣΛ࡟আ্ͨ͠Ͱɺܦ࿏બ୒αʔϏεʹରͯ͠ɺ৽͍͠ ܦ࿏࢓༷ʹج͍ͮͨ৽͍͠༌ૹ೔ఔΛੜ੒͢ΔΑ͏ґཔ͠·͢ɻ ϢʔβɿͦΕ·Ͱʹ௨ؔ஍఺ͷ࢓༷ΛҰ੾ఆΊ͍ͯͳ͔ͬͨ৔߹͸ɺͦͷఆٛ΋ಉ࣌ʹߦΘ

    ͳ͚Ε͹ͳΓ·ͤΜɻ ։ൃऀɿେৎ෉Ͱ͢ɻܦ࿏࢓༷ͰԿ͔Λมߋͨ࣌͠͸ɺඞͣɺ༌ૹ೔ఔΛੜ੒͠௚͠·͢ɻ ͦΕʹ͸ɺॳΊͯԿ͔Λೖྗͨ͠৔߹΋ؚ·Ε·͢ɻ Ϣʔβɿ΋ͪΖΜɺաڈʹೖྗͨ͠௨ؔ஍఺͕ۮવਖ਼͔ͬͨ͠৔߹ʹ͸ɺͦΜͳ͜ͱΛͨ͠ ͋͘Γ·ͤΜͶɻ 
  20. ͷ4DSVNνʔϜʹͱͬͯ%%%ͷ)PX͸ղ૾౓͕͋Β͍ &SJD&WBOTͷ՟෺༌ૹϓϩάϥϜͷྫ w ͜͜Ͱ͸υϝΠϯ͕͸͖ͬΓ͍ͯ͠Δ͕ɺͦΕ͸৽نࣄۀͰ͸Մೳੑ͕ͻ͍͘ w ͜ͷఔ౓ͷձ࿩͕͓͜ͳΘΕΔͷͬͯ1.'ɺาखલɺγϦʔζ"ௐୡ͕ ݟ͖͑ͯͨࠒͰ͸ͳ͍ͩΖ͏͔ w 1.'ޙͩͱͯ͠΋͜ͷձ࿩Λ10ͱ΍Δํ๏͕େࣄͳͷͰ͸ͳ͍͔ 

  21. %%%%JTUJMMFE͸1.'ޙΛ૝ఆ͍ͯ͠Δ͕ղ૾౓͕͋Β͍ εΫϥϜʹ͍ͭͯͷݴٴͷཁ఺ w ϢϏΩλεݴޠʹΑΔϢʔβʔετʔϦʔ࡞੒ w ͦΕʹରԠ͢ΔΞΫηϓλϯεςετ w λΠϜϘοΫεԽͨ͠ϞσϦϯά΍࣮૷Λ͢Δ 

  22. ͔ͩΒɺͦΕͰͲ͏͢ΔΜͩΑ 

  23. ͦͯ͠ɺ1.'લʹෳࡶͩͱ Θ͔Γ͖͍ͬͯΔγεςϜͰ͸ Ͳ͏͢΂͖͔Θ͔ΒΜ 

  24. ݁Ռͱͯ͠%%%͕࣮ݱͰ͖͍ͯͳ͍ %%%ʹڵຯ͕ͭΑ͍%FW͕΍Γ΍͍͢ͱ͜Ζ͔Β΍ͬͯ͠·͏ w ܰྔ%%% w %FWνʔϜ಺ͷϢϏΩλεݴޠ  w τϨʔχϯάతʹผϒϥϯνͰ΍Δͷ͸͍͍͕ 


    ຊ൪Ͱ΍ͬͯͭΒ͍͜ͱʹͳΓ·ͤΜ͔Ͷ  w ͔ͦͯͦ͜͠ΒͲ͏΍ͬͯ%%%ʹ΋͍͔ͬͯ͘ͱ͍͏ઓུ͸ͳʹ 
  25. %%%GPS%JTDPWFSZͱ%%%GPS%FMJWFSZ͕΄͍͠ͱ͍͏Ծઆ ࣗ෼ͷ೰Έ͸͜ͷͭʹಛԽͨ͠ઓུ͕ͳͯ͘҉த໛ࡧͰ͋Δ͜ͱ w %JTDPWFSZ w 69% 693 .71 ϊʔίʔυπʔϧ 

    -FBO4UBSUVQ  w %FMJWFSZ w 4DSVN 69% 693 γεςϜΞʔΩςΫνϟ ΞϓϦέʔγϣϯΞʔΩςΫ νϟ 
  26. ޻෉ 

  27.  IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ fi UKPVSOFZ σβΠϯࢥߟ 
 ͷओઓ৔ -FBO4UBSUVQ 
 ͷओઓ৔

    4DSVNͷ 
 ओઓ৔ ߟ࡯͍ͨ͠ 
 λʔήοτ
  28.  IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ fi UKPVSOFZ σβΠϯࢥߟ 
 ͷओઓ৔ -FBO4UBSUVQ 
 ͷओઓ৔

    4DSVNͷ 
 ओઓ৔ ߟ࡯͍ͨ͠ 
 λʔήοτ
  29. ίϯηϓτϚοϓ  ໦Ӝװ༤σβΠϯϦαʔνͷڭՊॻ

  30. ϢʔβʔετʔϦʔϚοϓ 

  31. ͏Μɺ͜Ε͸ ύλϯϥϯήʔδͷϓϩηεͩͳ 

  32. ίϯηϓτ͔ΒετʔϦʔΛɺετʔϦʔ͔ΒίϯςΩετΛ طଘͷπʔϧΛ͚ͬͭ͘Δͱ࣍ͷྲྀΕʹͳΔ w ίϯηϓτΛͭͷύλϯͱͯ͠ݟΔ w 64.ͰྲྀΕΛݟ͑ΔΑ͏ʹ͢Δ w 64.ͷίΞ෦෼͕%%%Ͱ͍͏ίΞυϝΠϯͷίϯςΩετͱԾઆΛͨͯΔ w 64.ͷίΞ෦෼ͷϢʔβʔετʔϦʔ͔Βड͚ೖΕ৚݅Λͭ͘Γɺڥք͚ͮ

    ΒΕͨίϯςΩετɺϢϏΩλεݴޠΛ͍ͭͬͯ͘͘ 
  33. ίϯηϓτΛετʔϦʔʹ͢Δ 7BMVBCMFʹؔͯ͠ͷ࣭໰ w ᶃ͜ͷίϯηϓτͷ૝ఆϢʔβʔ͸୭͔ʁ w ᶄ૝ఆϢʔβʔ͕ղܾ͕͍ͨͬͯ͠Δ໰୊͸ԿͩΖ ͏͔ʁ w ᶅ૝ఆϢʔβʔ͸ͲͷΑ͏ʹͯͦ͠ͷ໰୊Λղܾ͠ ͕͍ͨͬͯΔ͔ʁ

    w ᶆͳͥ૝ఆϢʔβʔ͸ͦΕΛղܾͰ͖͍ͯͳ͍ͷ ͔ʁ w ᶇϓϩμΫτΛ࢖ͬͨ݁ՌɺϢʔβʔ͸ͲͷΑ͏ͳ ੒ՌΛ๬ΜͰ͍Δ͔ʁ w ᶈϢʔβʔ͕զʑͷϓϩμΫτΛ࢖͏ཧ༝͸Կ͔ʁ w ᶉϢʔβʔ͸զʑͷϓϩμΫτΛ࢖͓͏ͱࢥ͏ͩΖ ͏͔ʁ w ᶊզʑͷϓϩμΫτΛ࢖ͬͨ݁ՌɺϢʔβʔ͸Ͳͷ Α͏ʹײ͡ΔͩΖ͏͔ʁ w ᶋϢʔβʔ͸զʑͷϓϩμΫτͷ࢖͍ํ͕Θ͔Δͩ Ζ͏͔ʁ w ᶌզʑͷϓϩμΫτͷ6*͸ͲͷΑ͏ͳܗঢ়Ͱ͋Δ΂ ͖ͩΖ͏͔ʁ w ᶍզʑͷϓϩμΫτ͸ɺίϯηϓτ΍ϝοηʔδΛ ఻͑ΔͨΊʹద੾ͳݟͨ໨ͩΖ͏͔ʁ  ໦Ӝװ༤σβΠϯϦαʔνͷڭՊॻ
  34. ίϯηϓτετʔϦʔΛίϯςΩετʹ·Ͱͭͳ͛Δ Ϗδωεͷ၆ᛌਤΛͭ͘Δ 

  35.  ͔͜͜Β͍ͭ͘΋ͷετʔϦʔΛͭΉ͍Ͱ͍͖ ίϯςΩετΛൃݟ͠ɺετʔϦʔϢϏΩλεݴޠ΁

  36. ·ͩͷ͜Δ՝୊ ·ͩͷ͜Δ՝୊ w ετʔϦʔͬͯඇߏ੒త͚ͩͲɺ%%%ͬͯߏ੒తʹ΍Ζ͏ͱ͍͗ͯ͢͠ͳ͍  w %%%ͷઓज़తͳ෦෼͕Ϗδωεͱ͋Θͳ͍ͷ͸ຊདྷతͳ໰୊͗͢Δؾ͕͢ Δ w ϢϏΩλεݴޠͷੑ࣭΍දݱํ๏Λ௥ٻ͢΂͖Ͱ͋ͬͯɺ࣮૷͸͓͍ͱ͘΄

    ͏͕ݱ࣮తͳͷͰ͸ͳ͍ͩΖ͏͔ w ϊʔίʔυπʔϧͰͲͷΑ͏ʹϢϏΩλεݴޠΛͭͳ͛͹͍͍ͷ͔ w ը໘໊ͱϢϏΩλεݴޠ͕ဃ཭ͦ͠͏ 
  37. ࢀߟ৘ใ %%%%JTUJMMFE͕࠷΋ΦεεϝͰ͢ w %%%&SJD&WBOT w *NQMFNFOUJOH%%%7BVHIO7FSOPO w %PNBJO%SJWFO%FTJHO%JTUJMMFE 7BVHIO7FSOPO F

    w %PNBJO.PEFMJOH.BEF'VODUJPOBM4DPUU8MBTDIJO w 8IBU*T%PNBJO%SJWFO%FTJHOaO7MBEJL,IPOPOPW w -FBSOJOH%PNBJO%SJWFO%FTJHO7MBE,IPOPOPW