新規事業開発を支える技術 / Technology for new business
by
mokuo
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
৽نࣄۀ։ൃΛ ࢧ͑Δٕज़ 2018/12/15 Developers Boost Sansanגࣜձࣾ DSOC Development Group ΤϯδχΞ ా༔Ұ
Slide 2
Slide 2 text
ࣗݾհ • ా༔Ұ (mokuo) • Twitter : @mokuo_ • 92ੜ·Ε • ݸਓ։ൃͨ͠Γϒϩάॻ͍ͨΓ͠·͢ • ϙουΩϟετϥδΦΛΑ͘ௌ͖·͢
Slide 3
Slide 3 text
ܦྺ • 20182݄ : Sansanגࣜձࣾೖࣾ • Eight ͷϑϩϯτΤϯυɾαʔόʔαΠυͷ։ൃ • React + Redux, Ruby on Rails • 20186݄ : DSOC ʹҟಈ • GEESʢ໊ͷσʔλԽγεςϜʣͷ։ൃɾӡ༻ • Ruby on Rails • ৽نࣄۀ։ൃ <= ຊͷ͓ʂʂ
Slide 4
Slide 4 text
ΞδΣϯμ • ͡Ίʹ • ৽نࣄۀ։ൃΛࢧ͑Δٕज़ • ཁ݅ͷચ͍ग़͠ • ։ൃϓϩηεͷબఆ • ΞʔΩςΫνϟઃܭ • ٕज़બఆ • DBઃܭ • APIఆٛ • ը໘ઃܭ • ϑϩϯτΤϯυ࣮ • αʔόʔαΠυ࣮ • ·ͱΊ
Slide 5
Slide 5 text
͡Ίʹ
Slide 6
Slide 6 text
ࣄۀ༰ʹ͍ͭͯ • େਓͷࣄʹΑΓɺݱ࣌Ͱɺ ৽نࣄۀͷதʹ͍͓ͭͯͰ͖ ·ͤΜɻ • ࣄۀ༰ʹ৮Εͳ͍ൣғͰ͓͞ ͍͖ͤͯͨͩ·͢ɻ
Slide 7
Slide 7 text
ຊͷ͓ʹ͍ͭͯ • ৽نࣄۀ։ൃΛ୲͢Δ͜ͱʹͳͬͯɺ࣮ࡍ ʹࢲ͕औΓΜͰ͍Δ͜ͱΛ͓͠·͢ɻ • ଞʹ༷ʑͳΓํ͕͋Δͱࢥ͍·͢ɻ͋͘ ·ͰɺࢀߟใͷҰͭͱͯ͠ฉ͍͍͚ͯͨͩ ·͢ͱ͍Ͱ͢ɻ
Slide 8
Slide 8 text
৽نࣄۀ։ൃΛࢧ͑Δٕज़
Slide 9
Slide 9 text
લఏ • ։ൃ͢ΔγεςϜෳ • ͦͷதͷج൫తͳγεςϜΛϝΠϯͰ୲
Slide 10
Slide 10 text
৺͕͚͍ͯΔ͜ͱ
Slide 11
Slide 11 text
ࣄۀͷ͕ୈҰ • Ұੜݒ໋ͩ͜Θͬͯ࡞ͬͯɺചΕͳ͚Εɺ ιϑτΣΞࢮΜͰ͠·͍·͢ɻ • ࠓٻΊΒΕ͍ͯΔͷԿͳͷ͔ɺৗʹߟ͑ ΔΑ͏ʹؾΛ͚͍ͭͯ·͢ɻ
Slide 12
Slide 12 text
ࣄۀͱٕज़ͷόϥϯεΛऔΔ • ͱ͍͑ɺεϐʔυ͚ͩΛ༏ઌ͢ΔͷͰͳ ͘ɺٕज़తͳҰઢकΓ͍ͨͱߟ͍͑ͯ·͢ • ࣭͠։ൃΛอͭ͜ͱ͕Ͱ͖Εɺ কདྷతʹϖΠͰ͖ΔͷͰͳ͍͔ɺͱࢥͬ ͨΓ͍ͯ͠·͢ɻ
Slide 13
Slide 13 text
ཁ݅ఆٛ
Slide 14
Slide 14 text
δϣΠϯͨ࣌͠ͷঢ়گ • ཁ͕݅·ͩ;Θͬͱ͍ͯ͠Δ͕ɺεέδϡʔ ϧܾ·͍ͬͯΔ
Slide 15
Slide 15 text
Ұ൪࠷ॳʹͬͨ͜ͱ • ཁ݅ͷચ͍ग़͠ • ݒ೦ͷղফ • ͬ͘͟Γͨ͠ݟੵΓ • εέδϡʔϧௐ
Slide 16
Slide 16 text
ཁ݅ͷચ͍ग़͠ • ϓϩμΫτόοάϩάΛ࡞ • ϓϩμΫτΦʔφʔͱҰॹʹɺཁ݅Λεϓ Ϩουγʔτʹॻ͖ग़ͨ͠
Slide 17
Slide 17 text
ٙͷղফ • ͕ٙ͋ΔͱɺݟੵΓ͕Ͱ͖ͳ͍ • ୭ʹ֬ೝ͢Δ͔Ͱྨ • ࣗͰௐΔ, PO, νʔϜA, νʔϜB, … • ҰͭҰͭ௵͍ͯͬͨ͠
Slide 18
Slide 18 text
ͬ͘͟Γͨ͠ݟੵΓ • தؒ͘Β͍ͷқͷλεΫΛ 3 ϙ Πϯτͱ͢Δ • 1, 3, 5, 8, 13 ͱϙΠϯτΛ͚ͯ૬ର ݟੵΓΛ࣮ࢪ • Πϝʔδ͍͢͠λεΫΛબͼɺԿ ͔͔࣌ؒΓͦ͏͔ݟੵͬͯΈΔ • શମͰ͔͔ΔΛܭࢉ
Slide 19
Slide 19 text
εέδϡʔϧௐ • ཁ݅Λ͗མͱͯ͠εέδϡʔϧʹؒʹ߹Θ ͤΔ͔ɺεέδϡʔϧΛ৳͔͢ަব • डୗ։ൃͳΒɺ2, 3ഒͷόοϑΝΛੵΈ͍ͨͱ ͜Ζ͕ͩɺࣗࣾαʔϏεͰ͋Εɺ͋Δఔ ॊೈʹௐͰ͖Δ
Slide 20
Slide 20 text
։ൃϓϩηεͷબఆ
Slide 21
Slide 21 text
બࢶ1 : ΥʔλʔϑΥʔϧ • ઌʹεέδϡʔϧ͕ܾ·͍ͬͯΔͷͰ͋Εɺ ࠷ॳΥʔλʔϑΥʔϧͰྑ͍͔͠Ε ͳ͍ • σϝϦοτ : ཁٻ͕มΘͬͨͱ͖ʹɺॊೈʹର Ԡͮ͠Β͍
Slide 22
Slide 22 text
બࢶ2 : ΞδϟΠϧ • ΞδϟΠϧιϑτΣΞͷ12ͷݪଇ • Ձͷ͋ΔιϑτΣΞΛૣ͘ܧଓతʹఏڙ͠ ·͢ɻ • ཁٻͷมߋͨͱ͑։ൃͷޙظͰܴ͋ͬͯ ͠·͢ɻ => ৽نࣄۀʹద͍ͯ͠Δͱஅ
Slide 23
Slide 23 text
εΫϥϜΛ࠾༻ • վΊͯɺ͍͔ͭ͘ͷจݙΛಡΈͨ͠ • ΞδϟΠϧιϑτΣΞ։ൃએݴ • εΫϥϜΨΠυ • ࠓ·Ͱͷܦݧ౿·͑ͯɺ۩ମతͳ Πϕϯτఆٛ͞Ε͍ͯΔεΫϥϜ͕ ྑ͍ͱஅ
Slide 24
Slide 24 text
ܗࣜʹͩ͜ΘΓա͗ͳ͍ • ઐ༻ޠΛΘͳ͍ • ϓϩμΫτόοάϩά => λεΫ • εϓϦϯτϓϥϯχϯά => ܭը • ϨτϩεϖΫςΟϒ => ;Γ͔͑Γ • ϓϩμΫτόοΫϩάεϓϨουγʔτͰཧ • ϓϩμΫτΦʔφʔ͕͍͍͢ͷΛ࠾༻ • υϥοά&υϩοϓͰॱ൪ΛೖΕସ͑ΒΕΔ͠ɺࠓͷͱ͜Ζࠔ͍ͬͯͳ͍
Slide 25
Slide 25 text
ΞʔΩςΫνϟઃܭ
Slide 26
Slide 26 text
લఏ • ୲͢ΔγεςϜ Web ΞϓϦέʔγϣϯͷ ΈͰɺϞόΠϧΞϓϦ։ൃ͠·ͤΜɻ • ӡ༻ෛՙΛԼ͍͛ͨͱ͍͏ࢥ͍͕͋Γ·͢ɻ
Slide 27
Slide 27 text
ΞʔΩςΫνϟઃܭͷมભ ᶃ SPA + Firebase ⊗ ᶄ ϚΠΫϩαʔϏεΞʔΩςΫνϟ on GAE ⊗ ᶅ ࠷ॳαʔϏεׂ࠷খݶʹ͠Α͏ <= ݱࡏ
Slide 28
Slide 28 text
SPA + Firebase
Slide 29
Slide 29 text
SPA + Firebase • JavaScript ͷॲཧඞཁ • ϑϩϯτΤϯυͰҰఆҎ্ͷॲཧΛ͢ΔͳΒ SPA ʹͯ͠͠·ͬ ͨํ͕ྑ͍ʢͱࢥ͍ͬͯΔʣ • ͔͠͠ɺϑϩϯτΤϯυͱαʔόʔαΠυͷ྆ํΛ࣮͢Δ͜ͱ ͕͔͔Δ • Cloud Firestore ͳΒϑϩϯτΤϯυ͔Βॻ͖ࠐΊΔ • ଟ͘ͷ API ࣮͢Δඞཁ͕ͳ͘ͳΔ…ͣɻ
Slide 30
Slide 30 text
۩ମతʹ • Firebase Authentication Ͱೝূ • Cloud Firestore, Cloud Storage ͷॻ͖ࠐΈ Λݕͯ͠ɺCloud Functions ΛΒͤΔ͜ͱ ͕Ͱ͖Δ • όοΫΤϯυͷॲཧτϦΨʔத৺ʹ͢Δ
Slide 31
Slide 31 text
SPA + Firebase τϦΨʔ
Slide 32
Slide 32 text
ݒ೦ • ϐλΰϥεΠονతͳγεςϜʹͳΔ͜ͱ͕ఆ͞ΕΔ • কདྷతʹॲཧ͕ෳࡶʹͳͬͯདྷͨͱ͖ʹɺCloud Functions ͚ͩͰΓΕΔͷ͔ • Firebase Authentication B2C ͖ʹݟ͑Δ • ࡉ͔͍ݖݶཧΛ͢ΔͨΊʹɺΈΛߟ͑ͯࣗ લͰ࣮͢Δඞཁ͕͋Δ
Slide 33
Slide 33 text
ͦͦΓ͔ͨͬͨ͜ͱ • ӡ༻ෛՙΛԼ͍͛ͨ • Firebase ʹͩ͜ΘΔඞཁͳ͍
Slide 34
Slide 34 text
ϚΠΫϩαʔϏεΞʔΩςΫνϟ on Google App Engine
Slide 35
Slide 35 text
Google App Engine • GCP ͕ఏڙ͢Δ PaaS • ϦΫΤετʹԠͯࣗ͡ಈͰεέʔϧ • ίϚϯυҰൃͰσϓϩΠͨ͠Βಈ͘ • Function ୯ҐͰͳ͘ɺαʔϏε୯ҐͰσϓϩΠ • FaaS ʹൺͯɺෳࡶͳॲཧʹରԠ͍ͣ͢͠
Slide 36
Slide 36 text
Microservices Architecture on Google App Engine • DB, Ωϡʔ ͳͲڞ༗
Slide 37
Slide 37 text
جຊͷߟ͑ํ • αʔϏεؒͷΓͱΓجຊ Cloud Tasks Λܦ༝ • DB Ҿ͖ଓ͖ Cloud Firestore Λ࠾༻ • ϑϩϯτΤϯυ͔Β DB Λ৮Δ͜ͱͤͣɺAPIܦ༝Ͱ ΞΫηεͤ͞Δ • কདྷతʹɺ৮Δ͜ͱ͋Δ͔͠Εͳ͍ʢཧը໘ͱ ͔ʁʣ • ෳαʔϏεͰίϨΫγϣϯڞ༗͠ͳ͍
Slide 38
Slide 38 text
σʔλϕʔεԿʹ͢Δ͔ • Cloud Datastore • ࣗಈεέʔϦϯάɾύϑΥʔϚϯεΛߟ͑Δ ͱɺGAE ʹద͍ͯ͠Δ • Cloud SQL for MySQL • Cloud SQL for PostgreSQL
Slide 39
Slide 39 text
Cloud Firestore Λબ ެࣜυΩϡϝϯτ ↓↓ • Cloud Firestore ͱ Cloud Datastore ͷબ > Cloud Firestore ɺCloud Datastore ͷϦϒϥϯσΟϯάͱͳΔ ࣍ظϝδϟʔ όʔδϣϯͰ͢ • Cloud Firestore ͷࣗಈΞοϓάϨʔυ • Cloud Datastore Cloud Firestore ʹΞοϓάϨʔυ͞ΕΔ༧ఆ
Slide 40
Slide 40 text
Cloud Firestore ͷϞʔυ • Cloud Firestore ͱ Cloud Datastore ͷબ • Cloud Firestore in Datastore mode • Cloud Firestore in Native mode • ͦΕͧΕͷಛੑΛݟͯஅ
Slide 41
Slide 41 text
ϚΠΫϩαʔϏεΞʔΩςΫνϟ • ຊͰମܥతͳࣝΛೖΕ͢ • ಡΊಡΉ΄ͲɺGAE Ϛ ΠΫϩαʔϏεͷͨΊͷ PaaS ͩͱࢥ͑ͯ͘Δ
Slide 42
Slide 42 text
αʔϏεؒͷ࿈ܞύλʔϯ
Slide 43
Slide 43 text
༻͢Δओͳ GCP ͷαʔϏε • App Engine • Cloud Storage • Cloud Pub/Sub • Cloud Tasks • Cloud Firestore
Slide 44
Slide 44 text
Cloud Pub/Sub Notifications for Cloud Storage Cloud Pub/Sub มߋΛݕ Service A
Slide 45
Slide 45 text
Cloud Pub/Sub Service C Service B Service A Cloud Pub/Sub
Slide 46
Slide 46 text
Cloud Tasks Service A Service B
Slide 47
Slide 47 text
ϑϩϯτΤϯυ͔Β API Λୟ͘ Frontend Service Backend Service
Slide 48
Slide 48 text
࠷ॳαʔϏεׂ࠷খݶ ʹ͢Δ
Slide 49
Slide 49 text
࣌ظঘૣͳղ • ༷ʑͳใɺࣾ֎ͷΤ ϯδχΞͱͷରΛ௨ͯ͠ɺ ࠷ॳ͔ΒαʔϏεΛׂ͢ Δͷةݥͱஅ • ·ͣ࠷খݶͰελʔτ͢ Δ༧ఆͰ͢
Slide 50
Slide 50 text
ඇಉظॲཧ • Cloud Tasks ΤϯυϙΠϯτΛࢦఆͯ͠ Ωϡʔʹ٧ΊΔ Service A ࣗࣗʹͬͯ͘Δ
Slide 51
Slide 51 text
ٕज़બఆ
Slide 52
Slide 52 text
ϑϩϯτΤϯυ
Slide 53
Slide 53 text
ϑϩϯτΤϯυ • React + Redux • TypeScript • Next.js
Slide 54
Slide 54 text
React + Redux • Eight Ͱ React Λ͍ͬͯΔ͜ͱ͋Γɺ׳Ε͍ͯΔɻ ݸਓతʹ Vue ΑΓ͖ • React ͳΒ Redux, Vue ͳΒ Vuex ͳͲɺFlux ΞʔΩς ΫνϟΛ͏͜ͱɺ΄΅ඞਢͩͱࢥ͍ͬͯΔ • ΞϓϦέʔγϣϯશମͰ State Λڞ༗Ͱ͖Δ • ڊେͳ JSON Λ͍࣋ͬͯΔΠϝʔδ
Slide 55
Slide 55 text
TypeScript • ࣄݸਓ։ൃͰ JS Λॻ͍͍ͯͯɺܕ͕ͳ͍ਏ͞Λײ͍ͯ͡ ͨ • Promise ͕ೖͬͯ͘ΔͱɺԿ͕ฦ͖͍ͬͯͯΔͷ͔Θ ͔Βͳ͘ͳͬͨΓ͢Δ • ࣮ߦ࣌ΤϥʔͰ͢ɺΛ܁Γฦ͢ • TypeScirpt ΛೖΕͯɺIDE తͳԸܙΛड͚ΒΕΔ • ͪΖΜɺٯʹେมͳ͜ͱ͋Δ
Slide 56
Slide 56 text
Next.js • pages/ ҎԼʹίϯϙʔωϯτஔ͘ͱࣗಈͰϧʔ ςΟϯάͯ͘͠ΕΔ • αʔόʔαΠυϨϯμϦϯά؆୯ • ಋೖ͓͍ͯͯ͠ѱ͍͜ͱͳ͍ͱஅ
Slide 57
Slide 57 text
αʔόʔαΠυ
Slide 58
Slide 58 text
αʔόʔαΠυ • Node.js • Express • TypeScript • swagger-node
Slide 59
Slide 59 text
αʔόʔαΠυͷݴޠΛԿʹ͢Δ͔ • ݸਓతʹɺ෦ॺͱͯ͠ɺಘҙͳͷ Rails • ͔͠͠ɺݱ࣌ͷ Google App Engine ͷ Standard Environment Ͱ Ruby ͕͑ͳ͍
Slide 60
Slide 60 text
GAE ͷ2छྨͷڥʹ͍ͭͯ • Standard Environment • ݱ࣌Ͱ Python, Java, PHP, Go, Node.js ͷΈ • Flexible Environment • ্هʹՃ͑ͯ .NET, Ruby, ΧελϜϥϯλΠϜ ͕͑Δ
Slide 61
Slide 61 text
֤ڥͷൺֱʢൈਮʣ • https://cloud.google.com/appengine/docs/the-appengine-environments ػೳ 4UBOEBSE &OWJSPONFOU 'MFYJCMF &OWJSPONFOU Πϯελϯεىಈ࣌ؒ ϛϦඵ ϦΫΤετͷ࠷େλΠϜ Ξτ ඵ εέʔϦϯά खಈɺجຊɺࣗಈ खಈɺࣗಈ ΧελϚΠζՄೳͳॲཧ ελοΫ º ˓ʢ%PDLFSpMFͷΧε λϚΠζͰߏஙʣ ྉۚ Πϯελϯε࣌ؒ ʹجͮ͘ W$16ɺϝϞϦɺӬଓσ ΟεΫͷ༻ྔʹجͮ͘
Slide 62
Slide 62 text
͖͢ҧ͍ • Πϯελϯεىಈ࣌ؒ • ྉۚ
Slide 63
Slide 63 text
جຊ Standard Environment • ඞཁͳ͚࣌ͩ Flexible Environment ʹ͢Δ • ࠓճը૾ॲཧʹඞཁͳϥΠϒϥϦΛ͏ ͨΊʹɺGAE/FE Ͱ Docker Λ༻
Slide 64
Slide 64 text
Node.js Λ࠾༻ • ݸਓతʹɺRuby ͷ࣍ʹಘҙͳݴޠ JS • Node.js AWS Lambda, Google Cloud Functions Ͱͬͨ͜ͱ͕͋Δ • ࠓޙδϣΠϯ͢ΔϝϯόʔʹɺϑϩϯτΤϯ υαʔόʔαΠυݟͯ΄͍͠ͱ͍͏ࢥ͍ ͋Δ
Slide 65
Slide 65 text
ϑϨʔϜϫʔΫ Express • Node.js ͰҰ൪ΘΕ͍ͯΔϑϨʔϜϫʔΫ ɺExpress ͩͱࢥΘΕΔ • ܰྔͳϑϨʔϜϫʔΫͰɺϚΠΫϩαʔϏεʹ ྑͦ͞͏
Slide 66
Slide 66 text
TypeScript • ϑϩϯτΤϯυͱಉ༷ʹ TypeScript Λ༻
Slide 67
Slide 67 text
swagger-node • Swagger Ͱ API ఆٛΛॻ͘ͱɺϧʔςΟϯάϦΫΤε τͷόϦσʔγϣϯΛͯ͘͠ΕΔ • ࣮ଶ swagger-express-mw • ϝϯς͕ߦ͖ಧ͍͍ͯͳ͍ײ͢͡ΔͷͰɺཁҙ • swagger editor ೖ͍ͬͯΔ͕ɺόʔδϣϯ͕ݹ͍ • swagger project create ίϚϯυࢀߟఔʹ༻͢Δ
Slide 68
Slide 68 text
CI • طʹࣾͰར༻͍ͯͯ͠ɺಛʹ՝ײͳ͍ͷ ͰɺCircleCI, Sider Λ༻ • CircleCI Ͱ Jest • Sider Ͱ TSLint • CD Γ͍ͨ
Slide 69
Slide 69 text
DBઃܭ
Slide 70
Slide 70 text
Cloud Firestore • NoSQL υΩϡϝϯτࢦσʔλϕʔε • جຊతʹɺRDB ͷΑ͏ͳਖ਼نԽ͠ͳ͍ • ؔ࿈αϒίϨΫγϣϯͱ͍͏ܗͰωετ͢ Δ
Slide 71
Slide 71 text
εϓϨουγʔτͰઃܭ • ͬͱྑ͍Γํ͕͋Εڭ͍͑ͯͩ͘͞… • ↓ Πϝʔδ
Slide 72
Slide 72 text
APIઃܭ
Slide 73
Slide 73 text
RESTful API • Rails ͷϧʔςΟϯάΛࢀߟ • Rails ͷϧʔςΟϯάڧྗ • `resouces: photos` ͷΑ͏ʹॻ͚ͩ͘ͰɺϦ ιʔεϕʔεͷنଇతͳϧʔςΟϯά͕Ͱ͖Δ • Rails ͷϧʔςΟϯά | Rails ΨΠυ ࢀর
Slide 74
Slide 74 text
Swagger Λ༻ • APIυΩϡϝϯτͷσϑΝΫτελϯμʔυʹ ͳ͖͍ͬͯͯΔͱࢥΘΕΔ • swagger-express-mw ͰϧʔςΟϯάͱϦΫΤ ετͷόϦσʔγϣϯ͕Ͱ͖Δ͜ͱେ͖͍ • ͍ͣΕʹͤΑɺAPIυΩϡϝϯτඞཁ
Slide 75
Slide 75 text
GraphQL ʁ • ϑϩϯτ <=> αʔόʔؒ GraphQL Ͱྑͦ͞ ͏ • طʹɺࣗͱͯ͠෦ॺͱͯ͋͠·Γͬͯ͜ͳ ͔ٕͬͨज़ΛΓࠐΜͰ͍Δ • GCP, TypeScript, Node.js, SPA, Atomic Design… • ࠓճݟૹΓ
Slide 76
Slide 76 text
ίϯϙʔωϯτઃܭ
Slide 77
Slide 77 text
Atomic Design • σβΠϯʹΦϒδΣΫτࢦత ͳߟ͑ํΛऔΓೖΕͨײ͡ • UI ͷมߋʹڧ͘ɺίϯϙʔωϯ τΛ࠶ར༻͍͢͠
Slide 78
Slide 78 text
ϑϩϯτΤϯυ࣮
Slide 79
Slide 79 text
ίϯϙʔωϯτ
Slide 80
Slide 80 text
Storybook • Storybook Λ͏͜ͱͰɺίϯϙʔωϯτ͝ͱʹಈ࡞ ֬ೝ͠ͳ͕Β։ൃͰ͖Δ • Storyshot ͰεφοϓγϣοτΛऔΔ͜ͱͰ͖Δ • Storyshot ʹؔͯ͠ɺTypeScript, Next.js ༻͠ ͍ͯΔ͔Β͔ɺΤϥʔ͕ग़ͯղফͰ͖ͣ… • ଞͷํ๏Λݕ౼த
Slide 81
Slide 81 text
Redux
Slide 82
Slide 82 text
Actions • Flux Standard Action (FSA) ʹै͏͜ͱ͕ਪ͞Εͯ ͍Δ • FSA ʹԊͬͨϥΠϒϥϦ͍͔ͭ͋͘Δ • redux-actions Λ͓͏ͱ͕ͨ͠ɺTypeScript ͱ ૬ੑ͕ѱ͔ͬͨʢܕఆ͕ٛෆશʣ • typescript-fsa Λ࠾༻
Slide 83
Slide 83 text
Reducers • Immutable.js Λ༻ • State ͕ωετͨ͠Γෳࡶʹͳͬͯ͘ΔͱɺReducer ͕ େมͳ͜ͱʹͳΔ • Object.assign() ਏ͍ • Immutable.js ͷ Record Λ͏͜ͱͰɺϞσϧʹϝ ιουΛੜͯ͠ Reducer ΛγϯϓϧʹͰ͖Δ
Slide 84
Slide 84 text
ࣗಈςετ • Jest Λ࠾༻ • RSpec ϥΠΫͳͷͰɺRuby ग़ऀೃછΈ͍ͣ͢ • ΦʔϧΠϯϫϯͳͷྑ͍ • Actions ͱ Reducers ͷςετඞͣॻ͘ • ίϯϙʔωϯτɺϩδοΫΛॻ͍ͨϝιουςετ͢Δ • ίϯϙʔωϯτࣗମͷςετࡧத
Slide 85
Slide 85 text
αʔόʔαΠυ࣮
Slide 86
Slide 86 text
Express ͷ͓࡞๏͕Θ͔Βͳ͍
Slide 87
Slide 87 text
ௐͯݟ͖͑ͯͨಛ • ExpressɺϧʔςΟϯάͱϛυϧΣΞ͕ جຊతͳ֓೦Β͍͠
Slide 88
Slide 88 text
جຊํ • Swagger Ͱ API ఆٛ • ίϯτϩʔϥʔʹϝιουΛ࣮ • swagger-node ͰϧʔςΟϯάɺϦΫΤετͷόϦσʔγϣϯΛ͠ ͯ͘ΕΔ • DB ·ΘΓͷॲཧϞσϧͰߦ͏ • ෳࡶͳॲཧϞδϡʔϧʹΓग़͢ • ೝূɺΤϥʔϋϯυϦϯάͳͲ middleware Ͱߦ͏
Slide 89
Slide 89 text
ࣗಈςετ • ϑϩϯτΤϯυͱಉ͘͡ Jest • Jest σϑΥϧτͰฒߦͰςετ͕ΔͷͰૣ͍͕… • CI ༻ͷϓϩδΣΫτΛ࡞͍ͬͯΔ͕ɺFirestore Ұͭ • ςετಉ͕࢜ׯবͯ͠ɺͨ·ʹམͪΔ => ྑ͘ͳ͍ • ରԠࡦݕ౼த • কདྷతʹ E2E ςετ͋ΔఔࣗಈԽ͍ͨ͠
Slide 90
Slide 90 text
·ͱΊ
Slide 91
Slide 91 text
·ͱΊ • ͦͷࣄۀʹ͓͍ͯɺԿ͕ٻΊΒΕ͍ͯΔ͔ߟ ͑Δ • ٕज़తʹ͍͚͑ͯͳ͍ҰઢकΔ • ΑΓྑ͍બΛ͢ΔͨΊʹɺࠒͷ࿉Λܽ ͔͞ͳ͍
Slide 92
Slide 92 text
ΤϯδχΞืूʂʂ • Sansan ͰɺੈքΛม͑Δʮग़ձ͍ʯΛ ੜΈग़͢ΤϯδχΞΛืू͍ͯ͠·͢ɻ • Twitter ͷ DM ͳͲͰߏ͍·ͤΜͷͰɺؾܰ ʹ͝࿈བྷ͍ͩ͘͞ɻΧδϡΞϧʹ͓͠·͠ΐ ͏ʂʂ