新規事業開発を支える技術 / Technology for new business
by
mokuo
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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 ͳͲͰߏ͍·ͤΜͷͰɺؾܰ ʹ͝࿈བྷ͍ͩ͘͞ɻΧδϡΞϧʹ͓͠·͠ΐ ͏ʂʂ