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

DDDってなんだろう?

Kinoko
July 24, 2016

 DDDってなんだろう?

2016/07/23 フロントエンド関西開催のDDD勉強会での発表資料です。(一部加筆あり。)

フロントエンドにおける情報設計 と DDD 座談会 - connpass http://kfug.connpass.com/event/34131/

Kinoko

July 24, 2016
Tweet

More Decks by Kinoko

Other Decks in Programming

Transcript

  1. DDDͬͯԿͩΖ͏ʁ
    Abe Asami

    View Slide

  2. ࣗݾ঺հ
    Abe Asami “きの子 ” 

    (大阪のフリーランスプログラマ)
    http://nocono.net/
    @aa7th
    Scala、Andorid(Java/Kotlin)

    最近Scala.jsでReactNative書いてます

    View Slide

  3. ౰ൃදͷ಺༰
    • DDDͬͯͦ΋ͦ΋Կͳͷ͔
    • 2015/9 ؔ੢DDD.javaͷ಺༰ΛৼΓฦΓͳ͕Β࡞Γ·ͨ͠
    • ˒ ͕෇͍͍ͯΔՕॴ͸ɺ͜ͷ೔ͷ૿ా͞ΜͷεϥΠυ͔
    ΒҾ༻ͨ͠ղઆͰ͢ (http://www.slideshare.net/
    masuda220/ss-52462322)
    • ࠓ೔ͷճͰΤϯδχΞɾσβΠφʔ྆ํ͕ର৅ʹͳ͍ͬͯΔ
    ཧ༝

    View Slide

  4. DDDͬͯͦ΋ͦ΋Կͳͷʁ

    View Slide

  5. DDD (Domain-driven design)
    • υϝΠϯۦಈઃܭ
    • υϝΠϯΛத৺ʹߟ͑ͨιϑτ΢ΣΞઃܭ

    ख๏

    View Slide

  6. υϝΠϯͱ͸ʁ
    • ιϑτ΢ΣΞΛར༻͢Δਓͨͪͷ

    ʮ׆ಈʯͱʮؔ৺ࣄʯ˒
    • ։ൃऀͰ͸ͳ͘ɺར༻ऀͷݴ༿Ͱදݱ͢Δ

    View Slide

  7. ྫ͑͹

    View Slide

  8. ϞϯελʔΛ֗தͰั֫ɾҭ
    ੒͢ΔҐஔ৘ใήʔϜͷυϝ
    Πϯ(Ϣʔβʔͷ׆ಈɾؔ৺
    ࣄ)Λߟ͑ͯΈΑ͏ɻ

    View Slide

  9. ͳΜͱ͔GO(Ծ໊)ͷυϝΠϯ
    • ϓϨΠϠʔ͸ϞϯελʔΛั֫͢Δ
    • ั֫ͨ͠ϞϯελʔͰઓͬͯఢͷਞ஍Λୣ͏
    • ਞ஍Λୣ͏ͱϓϨΠϠʔͷϨϕϧ্͕͕Δ
    • × Ϟϯελʔͷ࢟͸ARٕज़ʹΑͬͯΧϝϥʹࣸͬͨ

    ෩ܠʹ߹੒͞ΕΔ (←Ͳ͏࣮ݱ͢Δ͔͸Ϣʔβʔͷؔ৺ࣄͰ͸ͳ
    ͍)
    • ̋ Ϟϯελʔͷ࢟͸ݱ࣮ੈքʹଘࡏ͢Δ͔ͷΑ͏ʹݟ͑Δ

    View Slide

  10. ͜͜Ͱ΋͏̍ͭେࣄͳ֓೦
    ʮϢϏΩλεݴޠʯʹ͍ͭͯ

    આ໌͠·͢

    View Slide

  11. ϢϏΩλεݴޠ
    • ࢖͏ݴ༿Λ౷Ұ͢Δ
    • 1ͭͷݴ༿͸ಉ͡ҙຯɺ1ͭͷҙຯ͸ಉ͡ݴ༿
    ˒

    View Slide

  12. ͳΜͱ͔GO(Ծ໊)ͷ

    ϢϏΩλεݴޠ
    • ʮϓϨΠϠʔʯʮτϨʔφʔʯ
    • ʮਞ஍ʯʮδϜʯ
    • ʮั֫ʯʮήοτʯ

    View Slide

  13. ͳΜͱ͔GO(Ծ໊)ͷ

    ϢϏΩλεݴޠ
    • ʮϓϨΠϠʔʯʮτϨʔφʔʯ
    • ʮϞϯελʔʯʮ̋̋Ϟϯʯ
    • ʮਞ஍ʯʮδϜʯ
    • ʮั֫ʯʮήοτʯ
    νʔϜ಺Ͱ࢖͏ݴ༿Λ౷Ұ͢Δ
    දهΏΕμϝઈର

    View Slide

  14. վΊͯ̋̋ϞϯGOͷυϝΠϯ
    • τϨΠφʔ͸̋̋ϞϯΛήοτ͢Δ
    • ήοτͨ̋̋͠ϞϯͰઓͬͯఢͷδϜΛୣ͏
    • δϜΛୣ͏ͱτϨΠφʔͷϨϕϧ্͕͕Δ
    • ̋̋Ϟϯͷ࢟͸ݱ࣮ੈքʹଘࡏ͢Δ͔ͷΑ͏
    ʹݟ͑Δ

    View Slide

  15. ͜ΕΛ͜ͷݴ༿ͷ௨Γʹ

    ͳΔ΂ͦ͘ͷ··

    ϓϩάϥϛϯάίʔυʹ

    མͱ͜͠Ή

    View Slide

  16. τϨʔφʔ(Trainer)Ϟσϧ͸̋̋Ϟϯ(̋̋mon)

    Λήοτ(get)͢Δͱ͍͏ৼΔ෣͍Λ࣋ͭ
    τϨΠφʔ͸̋̋ϞϯΛήοτ͢Δ

    View Slide

  17. ͜Μͳײ͡ͰɺϢʔβʔ໨ઢ
    Ͱͷࢥߟͱ࣮ࡍͷίʔυͷണ
    ཭Λۃྗͳͦ͘͏ʂͱ͍͏ͷ
    ͕υϝΠϯۦಈઃܭ

    View Slide

  18. DDDͷޮՌ
    • มߋʹڧ͘ͳΔ
    • Ϟσϧͱίʔυ͕Ұக͍ͯ͠ͳ͍

    = Ͷ͡Ε
    • Ͷ͡Ε͕͋Δͱมߋ͕େมʹͳ͍ͬͯ͘
    • ్தࢀՃͷϝϯόʔͱ΋ҙࣝΛ౷Ұ͠΍͍͢
    • ͱ͸͍͑ɺϞσϧͱίʔυΛ౷Ұ͢Δͱ͍͏ͷ͸͔ͳΓ೉͠
    ͍ɾɾɾ

    View Slide

  19. ͱ͍͏Θ͚ͰɺDDDࣗମ͸

    ΤϯδχΞͷͨΊͷ

    ιϑτ΢ΣΞઃܭख๏

    View Slide

  20. ࠓ೔͸ͳͥσβΠφ͞Μ΋

    ࢀՃର৅ʹ͸͍͍ͬͯΔͷ͔

    View Slide

  21. UIσβΠϯͱ৘ใઃܭ
    • UI͸Ϣʔβʔࢹ఺Ͱ৘ใΛ੔ཧɾઃܭͯ͠

    σβΠϯ͢Δඞཁ͕͋Δ
    • σβΠφʔ͞ΜୡͷதͰʮ৘ใઃܭʯͱ͍͏
    ΩʔϫʔυΛ࠷ۙΑ͖͘͘

    View Slide

  22. • DDD΋ཁ͸Ϣʔβʔࢹ఺Ͱ৘ใΛ੔ཧɾઃܭ

    ͢Δ͜ͱ
    • ಉ͡͡ΌΜʂ
    • ΤϯδχΞɾσβΠφʔؔ܎ͳ͘ɺʮϢʔβʔ
    ࢹ఺Ͱ৘ใΛઃܭ͢Δʯͱ͍͏ςʔϚͰ࿩ͤ
    ͹໘ന͍Μ͡ΌͶʁͬͯؾ͕ͨ͠ɻ

    View Slide

  23. ͱ͍͏Θ͚Ͱ
    • ·͊ɻ͋Μ·Γ೉͍͜͠ͱߟ͑ͣɺ͍ΖΜͳ
    ࿩͖͖͍ͨͳͬͯࢥ͍·͢ɻ

    View Slide

  24. ࢀߟࢿྉ
    • ʮυϝΠϯۦಈઃܭʯͷෳࡶ͞ʹཱͪ޲͔͏ http://
    www.slideshare.net/masuda220/ss-52462322
    • ScalaίʔυͰΘ͔ͬͨؾʹͳΔDDD | GREE
    Engineers' Blog http://labs.gree.jp/blog/2013/12/
    9354/
    • ͪ͜ΒͷهࣄͰ͸”ϋϯλʔ͕ϞϯελʔΛङΔ”Α
    ͏ͳήʔϜͷυϝΠϯʹ͍ͭͯॻ͔Ε͍ͯ·͢ɻ

    View Slide

  25. ͝੩ௌ

    ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

    View Slide