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

チームをCQRS

F425aff2e1f934fc1e5fa95b1f933068?s=47 boiyama
March 30, 2018

 チームをCQRS

We Are JavaScripters! @17th
https://wajs.connpass.com/event/81022/
の発表資料です。

F425aff2e1f934fc1e5fa95b1f933068?s=128

boiyama

March 30, 2018
Tweet

Transcript

  1. ν ʔϜ Λ C Q R S 2 0 1

    8 . 3 . 3 0 We A re J a v a S c r i p t e r s # 1 7
  2. P ro f i l e • ϑϩϯτΤϯυΤϯδχΞ at PERSOL

    • GitHub: boiyaa
 Twitter: boiyaaaaaa
  3. C Q R S ίϚϯυΫΤϦ੹຿෼཭ શͯͷॲཧ͸ίϚϯυʢߋ৽ʣ͔ΫΤϦʢࢀরʣͰɺͦΕͧΕඞཁͳ΋ͷ͕ҧ͏͔Β෼͚ͯߏ੒͢Δͱ ͍͏ύλʔϯ ߋ৽ॲཧɿ υϝΠϯϩδοΫ༗ σʔλ੔߹ੑ

    ࢀরॲཧɿ υϝΠϯϩδοΫແ ύϑΥʔϚϯεͱ͔ݕࡧͷ͠΍͢͞ͱ͔
  4. • αʔόʔαΠυͰΑ͘࢖ΘΕΔύλʔϯ • Akka͕༗໊ ߋ৽ ࢀর EventʢߴՄ༻ͳDBʣ Stateʢ޷౎߹ͳDBʣ Command

  5. • αʔόʔαΠυ͚ͩͰͷߟ͑ํͰ͸ͳ͍ • ReduxͳΜ͔͸CQRSνοΫͳϑϨʔϜϫʔΫ Event Props Action State ʢAPIͱ͔ ɹLocalStorageͱ͔ʣ

    Reducer ߋ৽ ࢀর
  6. ਓͷ໾ׂ΋͜Μͳײ͡Ͱ෼͚͍ͨͱ͍͏࿩

  7. ϑϩϯτΤϯυͱόοΫΤϯυͷ৬຿Λ ϑϩϯτΤϯυɿը໘Λ࡞Δ όοΫΤϯυɿσʔλΛ࡞Δ ͱఆٛ͢Δͱɺ

  8. ࣮ࡍͷݱ৔ͷ໾ׂ෼୲͸͜͏ͳ͍ͬͯΔ ϑϩϯτΤϯυ୲౰ऀɿϑϩϯτΤϯυʴΫϥΠΞϯτ αΠυόοΫΤϯυ όοΫΤϯυ୲౰ऀɿαʔόʔαΠυόοΫΤϯυ

  9. ͱ͍͏ͷ΋ ϑϩϯτΤϯυɹˠɹϑϩϯτΤϯυΤϯδχΞ όοΫΤϯυɹˠɹαʔόʔαΠυΤϯδχΞ ͳΜͰ͜͏ͳͬͯΔʁ

  10. FirebaseͳͲΛ࠾༻ͯ͠ΫϥΠΞϯταΠυʹ΄ͱΜͲ ͷϩδοΫΛ͖࣋ͬͯͨΓ͢Δ
 ͰͦΕΛαʔόʔαΠυϨϯμϦϯάͨ͠Γ͢Δ ΫϥΠΞϯτͱαʔόʔͰ࢓ࣄΛ෼͚Δͷ͸࣌୅ʹ ϑΟοτͯ͠ͳ͍ͷͰ͸

  11. ࠓҰ౓ ϑϩϯτΤϯυɿը໘Λ࡞Δ όοΫΤϯυɿσʔλΛ࡞Δ ʹཱͪฦͬͯ໾ׂΛఆٛ͠௚͍ͨ͠

  12. ը໘Λߏ੒͢Δͷ͸ࢀরॲཧͱͷ૊Έ߹ΘͤͰɺ
 ߋ৽ॲཧ͸ΠϕϯτϋϯυϥͰߦΘΕΔͱ͍͏͜ͱΛ౿ ·͑Δͱɺ • ը໘ͱɺը໘Λߏ੒͢ΔͨΊͷࢀরॲཧΛ࡞Δ • ը໘ͷΠϕϯτϋϯυϥͱߋ৽ॲཧΛ࡞Δ ͱ͍͏ײ͡Ͱ࢓ࣄ΋ߋ৽ܥͱࢀরܥͰ෼཭Ͱ͖ͦ͏

  13. Event State Event State ը໘ ΫϥΠΞϯτ αʔόʔ όοΫΤϯυ ΤϯδχΞ ϑϩϯτΤϯυ

    ΤϯδχΞ ຊདྷͷը໘Λ࡞ΔɾσʔλΛ࡞Δ৬຿ʹूத
  14. JavaScript͸ΫϥΠΞϯτɾαʔόʔͲͪΒ΋࡞ΕΔݴ ޠͳ͚ͩ͋ͬͯɺ JavaScripter͸྆ଆ෼͚ͳ͍͜ͱʹ఍߅͕ແ͍ਓ͕ଟ͍ ͱࢥ͏ ͨͩɺ෼໺ԣஅ͢ΔͷͰɺ֤෼໺ͷपล஌ࣝΛந৅Խ͠ ͨπʔϧ΍αʔϏεΛ׆༻͍ͨ͠

  15. αʔόʔαΠυാͷਓ޲͚
 ๲େͳϑϩϯτΤϯυΤίγεϜͷΩϟονΞοϓͷखؒΛ͔͚ͣʹࡁΉ΋ͷ • Nuxt.js: 
 VueϕʔεͰɺ΍ΕΔࣄͷଟ͞ͱԱ͑Δࣄͷগͳ͞ͷόϥϯε͕͍͍ • Next.js: 
 Reactϕʔεʹͯ͠͸͔ͳΓԱ͑Δࣄ͸গͳ͘Ͱ͖͍ͯΔ

    • Redux: 
 αʔόʔαΠυͰCQRS΍͍ͬͯΔਓʹ͸ೃછΈ΍͍͢ͱࢥ͏͠ɺӬଓԽ͍ͨ͠σʔλΛ ѻ͏ϑϨʔϜϫʔΫͱͯ͠ • AMP: 
 ΍ΕΔࣄগͳ͍͚ͲԱ͑Δࣄ͕Ұ൪গͳ͍ɻSPAͰ͸ͳ͍ͷͰαʔόʔαΠυతʹςϯϓ ϨʔτΤϯδϯʹॻ͚͹͍͍ͷͰϋʔυϧ௿͍
  16. ϑϩϯτΤϯυാͷਓ޲͚
 αʔόʔαΠυͷՄ༻ੑ΍ύϑΥʔϚϯεΛࣗྗͰ୲อ͢Δͷ͸೉͍͠ͷͰɺӡ༻ϋʔυϧͷ௿͍΋ͷ • Cloud Firestore: 
 σʔλΛΫϥΠΞϯταʔόʔؒͰಉظ͢Δεέʔϥϒϧͳ NoSQLσʔλϕʔεɻ
 ͦͦ͜͜ͷΫΤϦػೳʢ!=ͱ͔orͱ͔ͳ͍ʣɻ·ͩϕʔλ •

    Cloud Functions for Firebase: 
 Firestore ͷߋ৽ΛτϦΨʔʹ Node.js ͷؔ਺Λ࣮ߦͰ͖ΔͷͰɺෳࡶͳϩδοΫΛॻ͘৔ॴʹ࢖͑Δɻ • Firebase Hosting: 
 ͱͯ΋؆୯ʹ੩తϑΝΠϧΛFastlyͷڧྗͳCDNͰ഑৴Ͱ͖ΔɻυϝΠϯ΍ূ໌ॻ΋ஶ͘͠؆୯ɻ
 Cloud FunctionsͷϓϩΩγ΋Ͱ͖ͯɺαʔόʔαΠυϨϯμϦϯάͨ͠ը໘΋഑৴Ͱ͖Δɻ • AWS AppSync: 
 GraphQLͰDynamoDBʢεέʔϥϒϧͳ NoSQLσʔλϕʔεʣ΍Elasticsearch ServiceʢϑϧϚωʔδυͳݕ ࡧΤϯδϯʣ͔ΒσʔλऔಘͰ͖ΔαʔϏεͳͷͰɺΫΤϦͱ૬ੑ͕ྑͦ͞͏ɻ
 Lambda Ͱ Node.js ͷؔ਺Λ࣮ߦͰ͖ΔͷͰɺෳࡶͳϩδοΫ΋ॻ͚Δɻ·ͩύϒϦοΫϓϨϏϡʔ
  17. ͱ͍͏ໝ૝