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

DDD is dead. God is in Twitter #scrumsapporo

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

kyonmm
PRO

November 06, 2021
Tweet

More Decks by kyonmm

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. w %%%ͷ͓͞Β͍
    w 4DSVNͱϏδωε
    w ೰Έ
    w ޻෉

    View Slide


  4. LZPO@NN

    σϩΠττʔϚπίϯαϧςΟϯά߹ಉձࣾࣥߦ໾һ
    ΞδϟΠϧίʔνɺΞʔΩςΫτ

    ৽نࣄۀɺ.BB4ɺେن໛ΞδϟΠϧɺݚम

    ஜ೾େֶFO1J5
    ෼εϓϦϯτɺϑϥΫλϧεϓϦϯτ

    ΫϦετϑΝʔɾΞϨάβϯμʔ

    View Slide

  5. %%%Ͳͷఔ౓
    ͱΓ͍Ε͍ͯ·͔͢

    View Slide

  6. %%%ͷ͓͞Β͍

    View Slide

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

    View Slide

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

    View Slide


  9. View Slide

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

    View Slide

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

    View Slide

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

    %PNBJO%SJWFO%FTJHO%JTUJMMFE 7BVHIO7FSOPO F

    View Slide

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

    View Slide

  14. 4DSVNͱϏδωε

    View Slide


  15. IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ
    fi
    UKPVSOFZ

    View Slide


  16. IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ
    fi
    UKPVSOFZ
    4DSVNͷ

    ओઓ৔

    View Slide


  17. IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ
    fi
    UKPVSOFZ
    σβΠϯࢥߟ

    ͷओઓ৔
    -FBO4UBSUVQ

    ͷओઓ৔
    4DSVNͷ

    ओઓ৔

    View Slide

  18. ೰Έ

    View Slide

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

    View Slide

  20. ͷ4DSVNνʔϜʹͱͬͯ%%%ͷ)PX͸ղ૾౓͕͋Β͍
    &SJD&WBOTͷ՟෺༌ૹϓϩάϥϜͷྫ
    w ͜͜Ͱ͸υϝΠϯ͕͸͖ͬΓ͍ͯ͠Δ͕ɺͦΕ͸৽نࣄۀͰ͸Մೳੑ͕ͻ͍͘
    w ͜ͷఔ౓ͷձ࿩͕͓͜ͳΘΕΔͷͬͯ1.'ɺาखલɺγϦʔζ"ௐୡ͕
    ݟ͖͑ͯͨࠒͰ͸ͳ͍ͩΖ͏͔
    w 1.'ޙͩͱͯ͠΋͜ͷձ࿩Λ10ͱ΍Δํ๏͕େࣄͳͷͰ͸ͳ͍͔

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    w τϨʔχϯάతʹผϒϥϯνͰ΍Δͷ͸͍͍͕

    ຊ൪Ͱ΍ͬͯͭΒ͍͜ͱʹͳΓ·ͤΜ͔Ͷ
    w ͔ͦͯͦ͜͠ΒͲ͏΍ͬͯ%%%ʹ΋͍͔ͬͯ͘ͱ͍͏ઓུ͸ͳʹ

    View Slide

  25. %%%GPS%JTDPWFSZͱ%%%GPS%FMJWFSZ͕΄͍͠ͱ͍͏Ծઆ
    ࣗ෼ͷ೰Έ͸͜ͷͭʹಛԽͨ͠ઓུ͕ͳͯ͘҉த໛ࡧͰ͋Δ͜ͱ
    w %JTDPWFSZ
    w 69% 693 .71 ϊʔίʔυπʔϧ -FBO4UBSUVQ

    w %FMJWFSZ
    w 4DSVN 69% 693 γεςϜΞʔΩςΫνϟ ΞϓϦέʔγϣϯΞʔΩςΫ
    νϟ

    View Slide

  26. ޻෉

    View Slide


  27. IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ
    fi
    UKPVSOFZ
    σβΠϯࢥߟ

    ͷओઓ৔
    -FBO4UBSUVQ

    ͷओઓ৔
    4DSVNͷ

    ओઓ৔
    ߟ࡯͍ͨ͠

    λʔήοτ

    View Slide


  28. IUUQTSFWJFXGPVOEYKQFOUSZTUBSUVQ
    fi
    UKPVSOFZ
    σβΠϯࢥߟ

    ͷओઓ৔
    -FBO4UBSUVQ

    ͷओઓ৔
    4DSVNͷ

    ओઓ৔
    ߟ࡯͍ͨ͠

    λʔήοτ

    View Slide

  29. ίϯηϓτϚοϓ

    ໦Ӝװ༤σβΠϯϦαʔνͷڭՊॻ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. ίϯηϓτΛετʔϦʔʹ͢Δ
    7BMVBCMFʹؔͯ͠ͷ࣭໰
    w ᶃ͜ͷίϯηϓτͷ૝ఆϢʔβʔ͸୭͔ʁ
    w ᶄ૝ఆϢʔβʔ͕ղܾ͕͍ͨͬͯ͠Δ໰୊͸ԿͩΖ
    ͏͔ʁ
    w ᶅ૝ఆϢʔβʔ͸ͲͷΑ͏ʹͯͦ͠ͷ໰୊Λղܾ͠
    ͕͍ͨͬͯΔ͔ʁ
    w ᶆͳͥ૝ఆϢʔβʔ͸ͦΕΛղܾͰ͖͍ͯͳ͍ͷ
    ͔ʁ
    w ᶇϓϩμΫτΛ࢖ͬͨ݁ՌɺϢʔβʔ͸ͲͷΑ͏ͳ
    ੒ՌΛ๬ΜͰ͍Δ͔ʁ
    w ᶈϢʔβʔ͕զʑͷϓϩμΫτΛ࢖͏ཧ༝͸Կ͔ʁ
    w ᶉϢʔβʔ͸զʑͷϓϩμΫτΛ࢖͓͏ͱࢥ͏ͩΖ
    ͏͔ʁ
    w ᶊզʑͷϓϩμΫτΛ࢖ͬͨ݁ՌɺϢʔβʔ͸Ͳͷ
    Α͏ʹײ͡ΔͩΖ͏͔ʁ
    w ᶋϢʔβʔ͸զʑͷϓϩμΫτͷ࢖͍ํ͕Θ͔Δͩ
    Ζ͏͔ʁ
    w ᶌզʑͷϓϩμΫτͷ6*͸ͲͷΑ͏ͳܗঢ়Ͱ͋Δ΂
    ͖ͩΖ͏͔ʁ
    w ᶍզʑͷϓϩμΫτ͸ɺίϯηϓτ΍ϝοηʔδΛ
    ఻͑ΔͨΊʹద੾ͳݟͨ໨ͩΖ͏͔ʁ

    ໦Ӝװ༤σβΠϯϦαʔνͷڭՊॻ

    View Slide

  34. ίϯηϓτετʔϦʔΛίϯςΩετʹ·Ͱͭͳ͛Δ
    Ϗδωεͷ၆ᛌਤΛͭ͘Δ

    View Slide


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

    View Slide

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

    View Slide

  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

    View Slide