DDD失敗談を話して学んだこと

87e6be3b5dcac822e5dfd974ba65045a?s=47 Kinoko
October 21, 2017

 DDD失敗談を話して学んだこと

関西Javaエンジニアの会(関ジャバ) '17 10月度 - connpass https://kanjava.connpass.com/event/68169/

での発表資料です。

87e6be3b5dcac822e5dfd974ba65045a?s=128

Kinoko

October 21, 2017
Tweet

Transcript

  1. DDDࣦഊஊΛ࿩ͯ͠ ֶΜͩ͜ͱ Abe Asami

  2. ࣗݾ঺հ "CF"TBNJl͖ͷࢠz
 େࡕͷϑϦʔϥϯεϓϩάϥϚ IUUQOPDPOPOFU !BBUI 4DBMBɺ"OESPJE +BWB,PUMJO

  3. ࠓ೔ͷ಺༰ • ͱ͋ΔϓϩδΣΫτΛDDDͰ΍Δͧʂͱҙؾ ࠐΜͰ͸͡Ίͨ΋ͷͷԿ͔͏·͍͔͘ͳ͔ͬ ͨ • ͱ͍͏࿩ΛScalaMatsuri(2017/02)ͷΞϯΧϯ ϑΝϨϯεͰ΍ͬͨͱ͜Ζ৭ΜͳҙݟΛ΋Βͬ ͨͷͰɺͦΕΛ͍·͞Β·ͱΊͯΈ·ͨ͠

  4. ϓϩδΣΫτ֓ཁ

  5. ΫϥΠΞϯτ͞Μ͔Βͷཁ๬ • AirB̋bΈ͍ͨͳ΍ͭΛ࡞ͬͯ΄͍͠

  6. ิ଍ࣄ߲ • ΫϥΠΞϯτ͞Μ͸ITʹৄ͘͠ͳ͍ • ·ͣ͸ʮ࠷௿ݶʯͷػೳͰβ൛ΛϦϦʔε͠ɺ৭ΜͳਓʹҙݟΛฉ͖ͳ͕Βվળ͠ ͍ͯ͜͏ͱ͍͏ํ਑ • ͍ͣΕ͸େ͖͍αʔϏεʹ͍͖͍ͯͨ͠ • ظؒ͸3ϲ݄൒ఔ౓ɻͷͭ΋Γͩͬͨ

    • 1ϲ݄͙Β͍Φʔόʔ͠·͕ͨ͠ɺҰԠແࣄೲ඼͸͠·ͨ͠ • PlayFramework2+ScalaͰ࣮૷ • ࣮૷ऀ͸ࢲ1ਓ
  7. ϓϩδΣΫτ։࢝࣌ͷࢲ
 ʮΑʔ͠DDDͰ΍Δͧʂʯ

  8. ओͳཧ༝

  9. ΍ͬͯΈ͔ͨͬͨ • ࢲͷDDDཧղϨϕϧ • ʮϢʔβʔ໨ઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃ཭Λۃྗͳ ͘͢ʯͷ͕໨తͱ͍͏ཧղ • աڈʹ࡞੒ͨ͠ࢿྉʮDDDͬͯͳΜͩΖ͏ʁʯ • https://speakerdeck.com/sammy7th/

    dddtutenandarou • ΤϦοΫɾΤϰΝϯεͷຊ͸ະಡ
  10. ཧ༝ɾͦͷଞ • ࢓༷ͱίʔυͷണ཭Λগͳ͘Ͱ͖ΔͳΒͦͷ ํ͕Α͍ͱ͓΋ͬͨɻ • DDDͷϓϩδΣΫτͷ͓ख఻͍Λͨ͠ܦݧ͕ ͋ͬͨ • ಉ͡Α͏ͳߏ੒(ΫϦʔϯΞʔΩςΫνϟ) Ͱ΍Ε͹͍͚Δͱ͓΋ͬͨ

  11. ͔ͯ͘͠Play2+DDDͰ։ൃ ͕։࢝͞Εͨʂ

  12. ͦͯ͠
 ͏·͍͔͘ͳ͔ͬͨʂʂʂ

  13. Ͳ͏͍͏͜ͱʁ • ࣮૷ίετ͕ߴ͘ɺ3िؒఔ౓Ͱํ޲స׵

  14. Before

  15. After

  16. αʔϏε಺Ͱ࢖༻͢Δݴ༿͕શવܾ ·Βͣɺίʔυͱͷണ཭ൃੜ͠·͘Γ • ྫ) ෦԰Λି͠ग़͢ਓΛԿͱݺͿ͔ͳͲ͕ͳ͔ ͳ͔ܾ·Βͳ͍ɻܾ·ͬͯ΋มΘΔɻ • ϢϏΩλεݴޠࣙయ͕શવػೳ͠ͳ͔ͬ ͨɾɾɾ

  17. ͱ͍͏࿩Λ ScalaMatsuri(2017/02) ͷΞϯΧϯϑΝϨϯεͰ ൸࿐ͨ͠ͱ͜Ζ ৭ΜͳҙݟΛ͍͖ͨͩ·ͨ͠

  18. ɹ௖͍ͨҙݟʢൈਮʣ

  19. ͦ΋ͦ΋ɺ៉ྷʹϞσϦϯά͔ͨͬͨ͠ͷʁ ΫϦʔϯΞʔΩςΫνϟͰ࡞Γ͔ͨͬͨ ͷʁʁ • ࢲ͕΍Γ͍ͨͷ͸ɺࠓޙͷ͜ͱ΋ߟ͑ͯػೳ ֦ு͠΍͍͢ݟ௨͠ͷ͍͍ίʔυΛ͔͘͜ͱ • ͦͷͨΊʹΫϦʔϯΞʔΩςΫνϟͰͭ͘ Γ͔ͨͬͨ •

    ͦͷͨΊʹ͸ϞσϦϯά͕ඞཁͩͱ͓΋ͬ ͨ
  20. ࠷ॳ͔Β͖Ε͍ͳϞσϦϯάΛ͠ Α͏ͱͨ͠ͷ͕ѱ͔ͬͨͷͰ͸ʁ • Ϟσϧ͸গͣͭ͠ਐา͍ͯ͘͠΋ͷ • εέʔϧͷ͜ͱ͸࠷ॳ͸๨Ε͍͍ͯΜ͡Όͳ ͍ʁ • Ϟσϧ୳ٻӔר͖

  21. ϞσϦϯάʹ͸஌ࣝͷטΈࡅ͖ ͷϑΣʔζ͕ඞཁ • 1ਓͰͰ͖Δ͜ͱ͸Ͱ͸ͳ͍ • ͪΌΜͱΫϥΠΞϯτ͞Μͷதʹ͸͍͍ͬͯͬͯɺ ͔ͬ͠Γ࿩Λ͠ͳ͍ͱμϝ • ΫϥΠΞϯτ͞Μ͕ཧղͰ͖ΔΑ͏ʹɺֆʹ͢Δ ͳͲͯ͠ͱʹ͔͘טΈࡅ͘

    • ΞΠίχοΫϓϩηεͱ͍͏ͷ͕͋ΔΑ
  22. ୹ೲظ௿ίετͩͱݫ͍͠ͷͰ ͸ • ͪΌΜͱϞσϦϯά͢Δͷ͸͕͔͔࣌ؒΔ • ϞσϦϯά͚ͩͰԿϲ݄΋࢖ͬͪΌ͏ • ͓٬͞ΜͱϞσϧΛͭΊΔͷ೉͍͠ • DDD͡Όͳͯ͘୯७ͳCRUDʹམͱ͠ࠐΜͩ

    ํ͕͍͍৔߹΋͋Δ
  23. DDD͸࢓༷ͱίʔυ͡Όͳͯ͘ɺ಄ͷத ͱίʔυΛҰகͤ͞Δͱ͍͏͜ͱͰ͸ʁ • ͳΔ΄Ͳʂ

  24. ΋Βͬͨҙݟ͔Β
 Θ͔ͬͨ͜ͱ

  25. DDDΛ࣮ફ͢Δ͜ͱͱΫϦʔϯΞʔΩς ΫνϟͰ࡞Δ͜ͱΛͬͪ͝Όʹ͍ͯͨ͠ • DDDΛ࣮ફ͢ΔͱΫϦʔϯΞʔΩςΫνϟͰ ࡞Δ͜ͱʹͳΔͱ͍͏ࢥ͍ࠐΈ͕͋ͬͯɺͦ Ε͕ͦ΋ͦ΋צҧ͍ͩͬͨ

  26. ΫϥΠΞϯτ͞Μͱͷ࿩ͷ٧Ί ํ͕ѹ౗తʹ؁͔ͬͨ • ఆظMTG͸ߦ͍͕ͬͯͨɺMTG಺Ͱܾ·Βͳ͍ࣄ߲ʹͭ ͍ͯ͸ʮܾΊ͓͍͍ͯͯͩ͘͞ʯͱ౤͛ͯ͠·͍ͬͯͨ • PJ؅ཧπʔϧ΍νϟοτπʔϧͰͷΦϯϥΠϯͰͷ΍Γ ͱΓ͕͏·͘ػೳͤͣɺີͳ΍ΓͱΓ͕Ͱ͖͍ͯͳ͔ͬ ͨ •

    ૣ͍ஈ֊ͰΦϑϥΠϯͰͷ΍ΓͱΓΛ૿΍͢΂͖ ͩͬͨ
  27. ࣍ʹྨࣅͷҊ͕݅͋Ε͹
 ࣮ફ͍ͨ͜͠ͱ

  28. DDD͕޲͍͍ͯΔ͔Ͳ͏͔ݕ౼ ͢Δ • Ҋ݅ͷن໛΍ظؒతʹίετʹݟ߹͏͔Ͳ͏ ͔ • ϞσϦϯάͷίετ • ࣮૷ίετ

  29. DDDΛ࣮ફ͢Δ৔߹ɺຊ࣭Λ ݟޡΒͳ͍Α͏ʹ͍ͨ͠ • ៉ྷͳઃܭͰ࡞ΔͨΊʹDDDͰ΍Δ • Ϣʔβʔ໨ઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃ཭Λۃྗͳͨ͘͢ΊʹDDDͰ΍Δ • υϝΠϯʹ͍ͭͯ࿩͠߹͏͜ͱʹΑΓ։ൃऀҎ֎ͷਓ΋։ൃʹר͖ࠐΉ • ΫϥΠΞϯτ͞Μͷதʹ͸͍ͬͯɺͪΌΜͱҰॹʹ࿩͠߹͏

    • ؔ܎ऀͷೝࣝΛυϝΠϯʹམͱ͠ࠐΈɺͦΕΛίʔυʹམͱ͠ࠐΉ • ಄ͷதͱίʔυΛҰகͤ͞Δ • ↑͜͜·ͰͰ͖Δͷ͕ཧ૝Ͱ͸͋Δ͕ɺظؒతʹ೉͍͠৔߹͸ଥڠ΋ඞཁ
  30. ࠷ॳ͔Β͖Ε͍ͳ΋ͷΛ࡞Δ͜ͱ ʹͩ͜ΘΓ͗͢ͳ͍Α͏ʹ͢Δ • ࣗ෼ͷѱ͍บͩͱ͓΋͏

  31. ·ͱΊ • ౰ॳɺࣗ෼͕ແ஌͗ͯؕͬͨ͢᠘͔ͱࢥͬͯ ͍ͨͷͰ͕͢ҙ֎ͱ͋Γ͕ͪͷΑ͏Ͱ͢ • ΈΜͳ͖Λ͚ͭͯʂ

  32. ͝੩ௌ͋Γ͕ͱ͏
 ͍͟͝·ͨ͠