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

JavaScript+DDD実践編?

KAZUMA Ukyo
December 05, 2013
35k

 JavaScript+DDD実践編?

KAZUMA Ukyo

December 05, 2013
Tweet

Transcript

  1. JavaScript
    ×
    DDD
    ࣮ફฤ

    KAZUMA UKYO

    View Slide

  2. ϨΠϠʔԽ
    ɹΞʔΩςΫνϟ
    ΤϯςΟςΟ
    όϦϡʔ
    ɹΦϒδΣΫτ
    ϦϙδτϦ
    ϢϏΩλεݴޠ
    େن໛ઃܭ
    ϦϑΝΫλϦϯά
    ΞάϦήʔτ


    ͢
    Δ
    ͓



    ͠
    ͳ
    ͍
    ͓

    View Slide

  3. ೋ෦ͷલ൒ͷྫ

    View Slide

  4. ʮϢϏΩλεݴޠͱ͔͸Կͱͳ͘෼͔͚ͬͨͲɺ
    ɹ࣮ࡍΞϓϦέʔγϣϯ࡞ͬͨΒͲ͏ͳΔͷʁʯ
    ͱ͍͏࿩Λ͠·͢

    View Slide

  5. ϞσϦϯάͷ࿩͸͠·ͤΜ

    View Slide

  6. ౿ΈࠐΜͩ࿩͸͠·ͤΜ
    ͋͘·ͰงғؾͱҰྫ

    View Slide

  7. ઌʹݴ͓͖ͬͯ·͕͢

    View Slide

  8. ઌʹݴ͓͖ͬͯ·͕͢
    ׬ᘳͳઃܭ͸ͳ͍

    View Slide

  9. ϨΠϠʔԽ
    ΞʔΩςΫνϟ
    Layered Architecture

    View Slide

  10. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure

    View Slide

  11. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    event observing
    Callback
    Callback
    Callback
    event
    observing
    event observing

    View Slide

  12. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    View
    Controller
    Model

    View Slide

  13. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    View
    ViewModel
    Model

    View Slide

  14. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    Ϗϡʔ
    ΞϓϦέʔγϣϯͷ
    ϩδοΫ
    ήʔϜϩδοΫ
    API௨৴ / ֎෦࿈ܞ

    View Slide

  15. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    jQuery
    Backbone.view
    Backbone.model
    underscore

    View Slide

  16. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    jQuery
    Backbone.view
    Backbone.model
    underscore
    ?

    View Slide

  17. υϝΠϯ
    Domain

    View Slide

  18. ؆୯ʹݴ͑͹
    ϏδωεϩδοΫ

    View Slide

  19. ྫ͑͹
    Ϣʔβʔ
    είΞܭࢉϩδοΫ
    Χʔυͷ৘ใ

    View Slide

  20. ྫ͑͹
    Ϣʔβʔ
    είΞܭࢉϩδοΫ
    Χʔυͷ৘ใ
    ͍ΘΏΔϞσϧͱ͍͏΍ͭ

    View Slide

  21. Ϟσϧͷදݱ͸
    େ͖͘෼͚ͯೋछྨ

    View Slide

  22. ΤϯςΟςΟͱ
    όϦϡʔΦϒδΣΫτ
    Entity / Value object

    View Slide

  23. 7BMVFPCKFDU
    &OUJUZ
    ಉҰੑ͕͋Δ ಉҰੑ͕ͳ͍
    ௥੻Մೳ
    ϦϙδτϦ
    ӬଓԽ

    ͷ*0ͷ୯Ґ
    ௥੻ෆՄೳ
    ڞ༗Մೳͳ΋ͷ

    View Slide

  24. ϦϙδτϦ
    Repository

    View Slide

  25. υϝΠϯͷݴ༿Λ࢖ͬͯ
    &OUJUZΛ*0͢Δ

    View Slide

  26. ྫ͑͹
    "1*͔Βऔಘ
    -PDBM4UPSBHFʹΩϟογϡ

    View Slide

  27. ໾ऀ͕ଗ͖ͬͯͨͷͰ੔ཧ

    View Slide

  28. ϢʔβʔΠϯλʔϑΣΠε
    User interface
    ΞϓϦέʔγϣϯ
    Application
    υϝΠϯ
    Domain
    ΠϯϑϥετϥΫνϟ
    Infrastructure
    jQuery
    Backbone.view
    Backbone.model
    underscore
    Entity Value object
    Repository

    View Slide


  29. Example

    View Slide

  30. Ϣʔβʔͷ
    ϓϩϑΟʔϧϖʔδΛදࣔ

    View Slide

  31. User interface
    Application
    Domain
    Infrastructure
    UserView
    UserViewModel / Controller
    UserRepository
    $.ajax API
    Ϣʔβʔද͍ࣔͨ͠Ͱ͢
    "1*͔Β͍ͩ͘͞
    event observing
    aυʔκ
    User

    View Slide

  32. ϢʔβʔΛ৽ن࡞੒

    View Slide

  33. User interface
    Application
    Domain
    Infrastructure
    UserRegisterView
    UserViewModel / Controller
    $.ajax API
    ͜͏͍͏৘ใೖྗ͞Ε·ͨ͠
    ৘ใΛݩʹ6TFS࡞Γ·͢
    event observing
    User
    UserRepository
    "1*ʹ౤͛ͯ
    ొ࿥͍ͯͩ͘͠͞
    User

    View Slide

  34. ϢʔβʔΛߋ৽

    View Slide

  35. User interface
    Application
    Domain
    Infrastructure
    UserUpdateView
    UserViewModel / Controller
    $.ajax API
    χοΫωʔϜมΘͬͨ
    ର৅ͷϢʔβʔ͍ͩ͘͞
    event observing
    User
    UserRepository
    User.updateNickname
    User
    ม͑ͨͷͰอଘ͍ͯͩ͘͠͞

    View Slide

  36. Ϧετͷϖʔδϯά

    View Slide

  37. User interface
    Application
    Domain
    Infrastructure
    UserListView
    UserListViewModel / Controller
    UserRepository
    $.ajax API
    )PHFΛ·ͣݸද͍ࣔͨ͠Ͱ͢
    "1*͔Β
    ݸ͍ͩ͘͞
    event observing
    aυʔκ
    User
    User
    User
    User
    ࠓݸ͋Γ·͢
    ݸग़·ͨ͠

    View Slide

  38. User interface
    Application
    Domain
    Infrastructure
    UserListView
    UserListViewModel / Controller
    UserRepository
    $.ajax API
    ʮଓ͖ΛಡΉʯ͠·ͨ͠
    "1*Ͱ
    ൪໨͔Β
    ݸ͍ͩ͘͞
    event observing
    aυʔκ
    User
    User
    User
    User
    ࠓ̎ݸ͋Γ·͢
    ࠓݸ͋Γ·͢
    ݸग़·ͨ͠

    View Slide

  39. ൪֎ฤ੩తϖʔδͷදࣔ

    View Slide

  40. User interface
    Application
    Domain
    Infrastructure
    HelpView
    $.ajax
    aυʔκ
    ϔϧϓϖʔδ͘Ε
    ੩త͔ͩΒυϝΠϯͱ͔ͳ͍

    View Slide

  41. ϊ

    View Slide

  42. ʮηϯηʔʂ+40/͡Όବ໨ͳΜͰ͔͢ʁʯ

    View Slide

  43. ʮବ໨Ͱ͢ʯ

    View Slide

  44. +40/Λ
    ͦͷ··࢖͏ͳ
    +40/͸ϞσϧͰ͸͋Γ·ͤΜ

    View Slide

  45. +40/͸
    ΠϯϑϥετϥΫνϟ
    ΋͘͠͸
    ΞϓϦέʔγϣϯ
    Ͱղܾ͠·͠ΐ͏

    View Slide

  46. ͋ͱࠓճ#BDLCPOFΛྫʹग़͠·͕ͨ͠ɺ
    $P$ܥͷϑϨʔϜϫʔΫͱ͸͋Μ·Γ૬ੑྑ͘ͳ͍Ͱ͢

    View Slide

  47. ৄ͘͠͸ຊಡΊ

    View Slide

  48. ׬

    View Slide