ベンチャーでドメイン駆動設計をやるとどうなるか? #genbadeDDD

ベンチャーでドメイン駆動設計をやるとどうなるか? #genbadeDDD

8ccb6288c8b9f34d6917a14d42e66cbe?s=128

Tsuyoshi Yasunishi

May 11, 2019
Tweet

Transcript

  1. ϕϯνϟʔͰ υϝΠϯۦಈઃܭΛ΍Δͱ Ͳ͏ͳΔ͔ʁ ʙ1ZUIPOͰܕʹ׬શʹ౗ͯ͠Έͨʙ 2019.05.11 גࣜձࣾνʔϜϘοΫε ҆੢ ߶

  2. νʔϜϘοΫεͬͯʁ

  3. None
  4. None
  5. ৽αʔϏεͱػցֶशʹΑΔ෼ੳγεςϜ΋։ൃத

  6. ձࣾͷ࣌୅എܠ

  7. ˠ࣌୅ ʢ೥૑ۀʣ

  8. ࣾһਓ

  9. ҰਓͰ࡞ͬͨ

  10. ͘͞Β714্ʹ1ZUIPO

  11. ࣄۀ͕͏·͘ߦ͖ͩͨ͠

  12. ˠ࣌୅ ʢ೥ʣ

  13. ೖࣾ

  14. 1ZUIPO͔ ͣͬͱଓ͘ αʔϏεʹ͍ͨ͠ͳ͊

  15. Ϣʔβ؅ཧ͕྆ํʹ͋Δ͜ͱʹؾͮ͘

  16. Ϣʔβ؅ཧΛ෼཭͠Α͏

  17. 4QSJOH#PPU ,PUMJOͰ࡞ͬ ͨ

  18. ͜ΕʹՃ͑ͯ৽αʔϏεΛ࡞Ζ͏ʂ

  19. 1ZUIPO΍ͬͨ͜ͱແ͍͠ ڷʹೖΕ͹ڷʹै͑ ·ͣ΍ͬͯΈΑ͏

  20. ͕͢͞ʹ.7$͚ͩ͸͖͍ͭ ·ͣ͸ϨΠϠʔυΞʔΩςΫνϟ ʢͱ͍͏໊ͷ෼͚͚ͨͩʣ

  21. 6*ʢ1SFTFOUBUJPOʣ "QQMJDBUJPO %PNBJO *OGSBTUSVDUVSF ˔ ϞσϦϯά͸͋·Γ͍ͯ͠ͳ͍ ˔ υϝΠϯ૚͸ಠཱ͍ͯ͠ͳ͍ʢଞͷ૚ʹґ ଘ͍ͯ͠Δʣ

  22. ϨΠϠʔΛ෼͚Έͯ (PPEʂ  %#΍"1*ΞΫηεͷॲཧΛͲ͜ʹॻ͚͹͍͍͔͕Θ͔Δ B ଞͷਓ͕ॻ͍ͨίʔυͰ΋Ͳ͜ʹॻ͍ͯ͋Δ͔͸Θ͔Δ  03ϚούʔͷϞσϧ͔ΒϏδωεϩδοΫ͸ഉআͰ͖ͨ #BEʂ 

    ϏδωεϩδοΫͷډॴ͕ᐆດɻॻ͖ํ΋ਓ΍ػೳʹΑͬͯมΘΔɻ B υϝΠϯϞσϧශ݂঱ঢ়ଶ  ͦ͏ͳΔͱ݁Ռతʹ$POUSPMMFS͕ଠΓɺ4FSWJDFͱ͍͏ಾͷDMBTT͕Ͱ͖࢝Ί Δ
  23. த్൒୺͸͋·ΓޮՌ͕ͳ͍ ʢ࣮ײʣ

  24. υϝΠϯϞσϦϯάΛ͍ͨ͠ ΍ΔͳΒܕ͕΄͍͠ͳ͊ʜ

  25. ("&ͷ1ZUIPOΛ ʹ্͛ͨΑʂ $50߱ྟ

  26. ͜Ε͸5ZQF)JOU͕ ࢖͑Δ͡Όͳ͍͔ʜ

  27. 1ZUIPOͰܕʹ ౗࣮͢ݧͯ͠ΈΑ͏Αʂ ͓લͦΕͩͬͨΒ +BWBͰ͑͑΍Μʂ https://www.irasutoya.com/2017/08/blog-post_54.html

  28. ؟ͷલʹ͋Δͷ͸1ZUIPOͰ͋Δ 1ZUIPOͰܕʹ౗ͯ͠ΈΑ͏ʂ ʢ࣮͸ڵຯຊҐʣ

  29. جຊܗ

  30. 引数の型指定 戻り値の型指定 コメントで型指定

  31. جຊతʹ5ZQF)JOU͸ ͜Ε͚ͩͰ0, ʢ(FOFSJDTͱ͔͸ඞཁແ͠ʣ

  32. *%&

  33. 1ZDIBSNʢ*OUFMMJK*%&"ʣ ͜ͷิ׬͕ͳ͍ͱແཧ

  34. NZQZ ܕΛνΣοΫͯ͘͠Ε·͢ 1ZDIBSNʹ΋ઃఆ͢ΔͱΑΓྑ͍

  35. little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 υϝΠϯ૚Λ ಠཱͤ͞Δ ʲج४ʳ υϝΠϯ૚ʹ ଞͷ૚ͷJNQPSUจ͕ແ͍

  36. little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 "QQMJDBUJPO4FSWJDF͔ Β *OGSBTUSVDUVSF ʢ%#ΞΫηεʣ Λݺͼ͍ͨ Ͱ΋໼ҹ͕ٯʹͳΔ

  37. ͦ͜Ͱ%*

  38. *OUFSGBDF͕ແ͍ͷͰɺܧঝͰදݱ

  39. ɾܕΛCJOE͢Δ ɾ%*Ͱ"QQMJDBUJPO4FSWJDFΛJOKFDU͢Δ ɾ"QQMJDBUJPO4FSWJDFͰ͸*OUFSGBDFͷܕͰݺͼग़͢

  40. little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 ͍͑ʔ͍ ґଘؔ܎͕ ٯ޲͍ͨʂ

  41. ઃܭͯ͠ΈΑ͏

  42. खॱ ᶃॳظͷυϝΠϯϞσϧΛ࡞Δ  ໊લͱৼΔ෣͍Λநग़  ίʔυʹམͱͯ͠ΈΔ  ϦϑΝΫλϦϯά͍ͯ͘͠ ᶄυϝΠϯ૚Ҏ֎Λ࡞͍ͬͯ͘

  43. ᶃॳظͷυϝΠϯϞσϧΛ࡞Δ

  44. Ϣʔεέʔε΍࢓༷Λ༻ҙͯ͠

  45. None
  46. ෇ᝦͰग़͢ ˞ΠϝʔδͰ͢

  47. ॳظͷυϝΠϯϞσϧΛ࣮૷ͯ͠ΈΔ 7BMVF0CKFDUΛ࡞ͬͯΈΔ ͔͜͜Β࣮૷։࢝ ˞ύοέʔδҠಈΛߟྀͯ͠DMBTT͝ͱʹϑΝ ΠϧΛ෼͚ͯΈͨɻ͕ɺ͜Ε͸ࣦഊɻ

  48. "QQMJDBUJPO૚ *OGSBTUSVDUVSF૚ σʔλϞσϧઃܭ Λ࡞͍ͬͯ͘

  49. 6*ʢ1SFTFOUBUJPOʣ "QQMJDBUJPO %PNBJO *OGSBTUSVDUVSF

  50. little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 υϝΠϯ૚Λ ಠཱͤ͞Δ ʲج४ʳ υϝΠϯ૚ʹ ଞͷ૚ͷJNQPSUจ͕ແ͍

  51. ϙΠϯτ

  52. ᶃݱ࣮ͷݴ༿Λͦͷ·· ίʔυʹམͱ͢ ʢϢϏΩλεݴޠʣ

  53. ࢓༷ॻ͚ͩͰͳ͘ɺ ීஈ࢖͍ͬͯΔݴ༿ʹײ౓ΛߴΊΔ

  54. ᶄσʔλϞσϧ͸ υϝΠϯϞσϧͷޙʹઃܭ ʢυϝΠϯϞσϧ͕σʔλϞσϧʹӨڹ͞ΕΔͷ Ͱʣ

  55. ᶅϞσϧΛҭͯΔ

  56. いったり来たり 俯瞰 詳細

  57. Ϟσϧʹ౴͑͸ͳ͍ɻ

  58. ΍ͬͯΈͯ Ͳ͏͔ͩͬͨʁ

  59. ͳ͔ͥͱ͍͏ͱɺߏ଄Λઌʹ࡞ΔͷͰ ϩδοΫʹͨͲΓண͘ͷ͕࠷ޙͷํͰ ΋Ͳ͔͠͞Λײͨ͡ͷͰ͸ͳ͔Ζ͏͔ ᶃ࠷ॳ͸গ͠ख͕͔͔ؒΔ ײ͕͢͡Δ ౰ࣾൺ

  60. ᶄͲ͜ʹԿ͕͋Δ͔͕ Θ͔Γ΍͍͢ ଞਓɺաڈͷࣗ෼͕ॻ͍ͨίʔυɺͲͪΒͰ΋ ߏ଄ͱ໊લ͕໌֬ͳͷͰɺͨͲΓ΍͍͢

  61. ᶅมߋ͕҆৺ ࠷ߴʹؾ͕͍͍࣋ͪɻ ݁ߏେ͖ͳमਖ਼΋҆৺ײ͕͋Δ

  62. ᶆ5ZQF)JOUͰ΋ͦͦ͜͜େৎ ෉ ܕ͕͋Δݴޠ࢖͑Αɺͱ͍͏࿩͕ͩɺ ʢͩͬͯ໨ͷલʹ1ZUIPO͕͋ͬͨΜͩ΋ͷʣ 1ZUIPOͰ΋*%&͕ิ׬ͯ͘͠ΕΔͷͰॆ෼Ͱ͖Δ 1)1Ͱ΋͍͚ΔͷͰ͸ͳ͍ͩΖ͏͔

  63. ᶇ։ൃʹ౷Ұੑ͕ੜ·ΕΔ υϝΠϯϞσϧΛআ͘ͱ͋Δఔ౓ɺܗ͸Ͱ͖Δ Ϟσϧͷձ࿩Λଓ͚Ε͹ ίϛϡχέʔγϣϯίετ͕গͳ͍

  64. ᶈDMBTT͝ͱͳͲ ࡉ͔͍ςετ͕ඞཁͳͦ͞͏ ܕ͕୲อͯ͘͠ΕΔ ઃܭ͕͔ͬ͠Γ͍ͯ͠Ε͹ɺෳࡶͳܭࢉ΍ "QQMJDBUJPO4FSWJDF΍$POUSPMMFS͝ͱͰ୲อ͠΍͍͢

  65. ࠓޙͷ՝୊

  66. ᶃͦ͜·ͰϞσϧ͕ҭͬͯͳ͍ ΋ͬͱϦϑΝΫλϦϯά͠ͳ͚Ε͹

  67. ᶄ΍Γ͗ͨ͢ͱ͜Ζʁ DMBTT͝ͱʹϑΝΠϧΛ෼͚ͨͷ͸ࣦഊɻ͍͔ͭ໭͢ ʢ*OUFMMJK*%&"Ͱมߋ͕஗͘ͳͬͨʜʣ ͋Εɺଞʹ͸ແ͍ͳʁʁʁ

  68. ᶅ1ZUIPOΤϯδχΞ͕ೖͬͨ Β ࠔ࿭͢ΔͷͰ͸ͳ͔Ζ͏͔ ࿩ͤ͹Θ͔Δͱ৴͍ͯ͡Δ

  69. ࢥͬͨ͜ͱ

  70. ˠˠˠˠ㱣

  71. ˠˠˠˠ㱣 探そう 探しつつ 伸ばそう もっと 伸ばそう もっともっと 伸ばそう

  72. 複雑度(変更コスト)が指数関数的に上がっていく ˠˠˠˠ㱣 サクッと 作って検証 人が増えてきた なんか開発が 遅い感じがする あぁ辛い 作り直したい 厳しい

    辛すぎる もう無理だ…
  73. ˠˠˠˠ㱣 ここに不可逆な 境界線が????

  74. ˠˠˠˠ㱣 ここで 大幅に設計をしなおすことが 大事なのではないか

  75. ͜Ε͕ͦͷޙͷมߋίετΛ େ෯ʹԼ͛Δ

  76. ここが最も価値がある

  77. None
  78. ৽͍͠΋ͷΛ௥Ճͭͭ͠΋ ෳࡶͳ΋ͷΛ੔ཧ͠ଓ͚Δ

  79. ෳࡶͳ΋ͷΛෳࡶͳ··ѻ͏ ෳࡶͳ΋ͷ͕୯७ʹͳΔຐ๏͸ ͳ͍

  80. ͦͷͱ͖ʹυϝΠϯۦಈઃܭΛ બ୒͢Δͱྑ͍ͱࢥ͏

  81. ஥ؒΛେେืूதͰ͢ʂ ˔ ෭ۀɾϑϦʔϥϯεΤϯδχΞืूʂ ˓ ࣌ؒ΋৔ॴ΋࢓ࣄ಺༰΋ࣗ༝ ˓ ݁Ռతʹ࢓ࣄ͠ͳͯ͘΋͍͍ͷͰɺҰ୴4MBDLʹೖΖ͏ʂ ˓ 1ZUIPOɺ7VFKTɺ,PUMJOɺJ04ͳͲ ˔

    ΤϯδχΞࣾһืूʂ ˓ ਓͷ੒௕ʹڵຯ͕͋Δํ ˓ ಇ͘৔ॴɺ࣌ؒࣗ༝ ˓ ձٞ΋৘ใ΋Φʔϓϯ ˓ ෭ۀࣗ༝ ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ IUUQTXXXXBOUFEMZDPNQSPKFDUT