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

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

Kinoko
October 21, 2017

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

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

での発表資料です。

Kinoko

October 21, 2017
Tweet

More Decks by Kinoko

Other Decks in Technology

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    "CF"TBNJl͖ͷࢠz

    େࡕͷϑϦʔϥϯεϓϩάϥϚ

    IUUQOPDPOPOFU
    !BBUI
    4DBMBɺ"OESPJE +BWB,PUMJO

    View Slide

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

    View Slide

  4. ϓϩδΣΫτ֓ཁ

    View Slide

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

    View Slide

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

    View Slide

  7. ϓϩδΣΫτ։࢝࣌ͷࢲ

    ʮΑʔ͠DDDͰ΍Δͧʂʯ

    View Slide

  8. ओͳཧ༝

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. ͦͯ͠

    ͏·͍͔͘ͳ͔ͬͨʂʂʂ

    View Slide

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

    View Slide

  14. Before

    View Slide

  15. After

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. ΋Βͬͨҙݟ͔Β

    Θ͔ͬͨ͜ͱ

    View Slide

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

    View Slide

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

    View Slide

  27. ࣍ʹྨࣅͷҊ͕݅͋Ε͹

    ࣮ફ͍ͨ͜͠ͱ

    View Slide

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

    View Slide

  29. DDDΛ࣮ફ͢Δ৔߹ɺຊ࣭Λ
    ݟޡΒͳ͍Α͏ʹ͍ͨ͠

    ៉ྷͳઃܭͰ࡞ΔͨΊʹDDDͰ΍Δ

    Ϣʔβʔ໨ઢͰͷࢥߟͱ࣮ࡍͷίʔυͷဃ཭Λۃྗͳͨ͘͢ΊʹDDDͰ΍Δ
    • υϝΠϯʹ͍ͭͯ࿩͠߹͏͜ͱʹΑΓ։ൃऀҎ֎ͷਓ΋։ൃʹר͖ࠐΉ
    • ΫϥΠΞϯτ͞Μͷதʹ͸͍ͬͯɺͪΌΜͱҰॹʹ࿩͠߹͏
    • ؔ܎ऀͷೝࣝΛυϝΠϯʹམͱ͠ࠐΈɺͦΕΛίʔυʹམͱ͠ࠐΉ
    • ಄ͷதͱίʔυΛҰகͤ͞Δ
    • ↑͜͜·ͰͰ͖Δͷ͕ཧ૝Ͱ͸͋Δ͕ɺظؒతʹ೉͍͠৔߹͸ଥڠ΋ඞཁ

    View Slide

  30. ࠷ॳ͔Β͖Ε͍ͳ΋ͷΛ࡞Δ͜ͱ
    ʹͩ͜ΘΓ͗͢ͳ͍Α͏ʹ͢Δ
    • ࣗ෼ͷѱ͍บͩͱ͓΋͏

    View Slide

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

    View Slide

  32. ͝੩ௌ͋Γ͕ͱ͏

    ͍͟͝·ͨ͠

    View Slide