Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アーキテクチャと反省と改善
Search
@YutamaKotaro
February 26, 2018
3
2.1k
アーキテクチャと反省と改善
Forefront JavaScript ! 急成長中のサービスの技術達!
@YutamaKotaro
February 26, 2018
Tweet
Share
More Decks by @YutamaKotaro
See All by @YutamaKotaro
0->1 現場におけるReactNative
yutamakotaro
0
170
ライブラリはしご酒
yutamakotaro
0
140
React + Valtio
yutamakotaro
0
110
My experience for 3 years with React Native
yutamakotaro
0
43
React Nativeと共に歩んだ3年間【TECH STAND #3】
yutamakotaro
1
1.3k
React Native Game Engine in React Native Tech Blog Event
yutamakotaro
1
1.6k
React Native Book
yutamakotaro
0
54
AWS Summit2019 airCloset section
yutamakotaro
1
200
フルJSアーキテクトで作るエアークローゼット
yutamakotaro
2
520
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
93
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Side Projects
sachag
452
42k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
Designing for Performance
lara
604
68k
Gamification - CAS2011
davidbonilla
80
5k
Become a Pro
speakerdeck
PRO
25
5k
Raft: Consensus for Rubyists
vanstee
136
6.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
αʔϏε֓ཁͱઃܭํ ϢʔλϚͨ͜Ζ͏BLB+JNNZ גࣜձࣾΤΞʔΫϩʔθοτ
ࣗݾհ ϢʔλϚͨ͜Ζ͏BLB+JNNZ ɹࣾձਓ̐ʢݩ4JFSʣ ɹϑϧελοΫΤϯδχΞ Ծ ձࣾ ɹגࣜձࣾΤΞʔΫϩʔθοτ ɹϓϩμΫτά ϧʔϓ
ίϛϡχςΟ ɹ3FBDU/BUJWF+BQBO ɹӡӦϝϯόʔ
ձࣾհ גࣜձࣾΤΞʔΫϩʔθοτ ɹදࢀಓʹ͋Δ ɹBJS$MPTFUΛӡӦ͍ͯ͠Δձࣾ ɹ৽͍͋ͨ͠Γ·͑Λ࡞Δʂ ɹΤϯδχΞઈࢍืूதʂ ɹΠϯλʔϯʂ BJS$MPTFU ɹ੍ֹ݄ͰελΠϦετ͕બΜͩ ɹɹίʔσΟωʔτ͕ಧ͘αʔϏε
ɹීஈணͳ͍༸ͱग़ձ͏͜ͱ͕ ɹɹͰ͖Δʂ
ίϛϡχςΟհ 3FBDU/BUJWFίϛϡχςΟ ษڧձͷओ࠵ɺॻ੶ग़൛ߨ࠲ͳͲͳͲྗతͳ ɹίϛϡχςΟ ӡӦ͕̏ਓ͙Β͍ͳͷͰͬͯ͘ΕΔํืूதʂ ϋϯζΦϯఆظతʹ͍ͬͯΔͷͰڵຯͨΕͨํ ੋඇʂ
༨ஊ ͦͯ͠
༨ஊ ຊग़ͨ͠Αʔʂʂ
༨ஊ 3FBDU/BUJWFBTB4FSWJDF 3/BB4 3FBDU/BUJWFͷࣄྫຊ ɾͳΜͰ͔ͭͬͯΔ͔ʁ ɾԿ͕Α͔͔ͬͨʁ ɾͲΜͳϥΠϒϥϦͬͯΔ͔ʁ ͳͲͳͲɺϓϩμΫτಋೖΛߟ͑ ͍ͯΔਓඞݟʂ
͡ΊΔ͟·͢ʂ ͊͞ʂɹ͡·ΔΑʔʔʂʂ
͡Ίʹ զʑQJDLTTΛ࡞ͬͨɻ
QJDLTTΛͬͯ͘ΕΑɾɾɾ ͋Εɺ͍͍ͩɾɾʂʂ
αʔϏε֓ཁͱઃܭํ
QJDLTT
QJDLTT QJDLTT ɹɾελΠϦϯάྉۚ ԁ ɹɾ̎ίʔσʴ̍ΞΠςϜಧ͘ ɹɾؾʹೖͬͨͷߪೖʂ ɹɾޙฦ͚ͩ͢ʂ ɹɾࠓޙ৭ʑͱ֦େ͠·͢ʂ
αʔϏε֓ཁ
αʔϏε֓ཁ "OESPJE J04 8FC ΛϦϦʔεʂ όον Πϯϑϥˍ"1* ͬͨʂ
͡Ίʹ ݄̎ϦϦʔεʂ
ઓہ όον Πϯϑϥˍ"1* ༷ ϓ Ϩογ ϟʔ ήʔϜ͍ͨ͠ؾ࣋ͪ Զʢ̎ࡀʣ ৽ࢀʢࡀʣ
ઌഐXX ͪͬ͢XX ೲظ 74 தཱ
͡Ίʹ ͜ΕΛͳΜͱ͔͢ΔͨΊʹ
QJDLTTͷઃܭํ ɾֶशίετΛ͛͞Δ ɾૣ͘։ൃͰ͖Δ ɾ͔Γ͍͢ ɾ҆શ
ֶशίετΛԼ͛Δ
ओཁϑϨʔϜϫʔΫɺϥΠϒϥϦ ɾJ04ΞϓϦɿ3FBDU/BUJWF SFEVY ɾ"OESPJEΞϓϦ3FBDU/BUJWF SFEVY ɾXFCαΠτ3FBDU SFEVY ɾXFC"QJOPEFKT FYQSFTT ɾόονɿOPEFKT
OPEFDSPOɹɹ ੈ·͞ʹେ3FBDU࣌ʂʂʂ 3FEVYSFEVYTBHBซ༻
ֶशίετΛ͛͞Δ ɾ3FBDU ɾ3FBDU/BUJWF ɾ/PEFKT /PEFKTͱ3FBDU֮͑ΕԿͱ ͔ͳΔΑ͏ʹͨ͠ɻ
ૣ͘։ൃͰ͖Δ
ૣ͘։ൃͰ͖Δ %PNBJO 8FC /BUJWF جຊॲཧΛ%PNBJO ͱͯ͠ɻ KTͳͷͰɺ XFC OBUJWF Ͱಈ࡞͢Δɻ
ૣ͘։ൃͰ͖Δ 8FC /BUJWF ೖྗˍνΣοΫ ೖྗˍνΣοΫ αʔόͷϦΫΤετ ϨεϙϯεͷॲཧFUDʜ ྃʂ ը໘ભҠͳͲΛߦ͏ ྃʂ
ը໘ભҠͳͲΛߦ͏ ͜͜Λ%PNBJOͱͯ͠XFC OBUJWF ͔Βʂ ͦͯ͠ɺڞ༗ʂ
ίʔυͷڞ௨Խʂ
ͭ·Γ EPNBJOͷ։ൃ XFC J04 "OESPJEʹد༩͢Δ
ैདྷͱҧ͏ͷͩΑɺ ैདྷͱʂ
۩ମతʹ
ɾ݁Ռɺʮ͜ΕΊͬͪΌ͍͍Θʂʂʯͱتͷଟʂʂʂ ɾෳͷϦϙδτϦΛଋͶͯҰͭͷϦϙδτϦͱͯ͠ѻ͏ͨΊͷπʔϧ ɾγϯϘϦοΫϦϯΫ͕షΒΕͯɺͦΕΛOQNNPEVMFͱಉ͡Α͏ʹಡ ΈࠐΉ͚ͩ ɾOQNͱएׯ૬ੑ͕ѱ͍ͱ͜Ζ͕ܽɾɾɾɾɾɻ -FSOB -FSOB ɾNPOPSFQPΛ࣮ݱ͢ΔͨΊͷπʔϧ ɾ࠷ॳϝϯόʔ͔Β ɹʮҙຯΘ͔ΒΜʯɺʮΔඞཁ͋Δͷʁʯ
ɹʮTVCNPEVMFͰΑ͘ͳ͍ʁʯ ͳͲඇ͕Ͱ͕ͨɾɾɾɾɻ
-FSOB QBDLBHFTϑΥϧμʹ ϦϙδτϦΛಥͬࠐ Ή ֤ϦϙδτϦͷQBDLBHFKTPOʹϞδϡʔϧ໊Λهࡌ ͯ͠ɺ ಡΈࠐ·͍ͤͨϦϙδτϦͷQBDLBHFKTPOʹϞ δϡʔϧ໊Λॻ͘ɻ ͋ͱMFSOBCPPUTUSBQ
XFCͱOBUJWFͰॲཧΛڞ௨Խͤ͞Δ 8FC /BUJWF ɾHVFTU4FSWJDFMPHJOʹϦΫΤετϨεϙϯε͔ΒϞσϧੜ ͱ͍͏ϏδωεϩδοΫ͕ڽॖ͞Ε͍ͯΔ ɾ֤ϓϥοτϑΥʔϜ͜ΕΛ͏͚ͩɻ ɾॲཧྃޙ֤ϓϥοτϑΥʔϜʹΑͬͯݻ༗ͷಈ࡞Λ͢Δ ɹɹϞʔμϧด͡Δͱ͔ɺը໘ભҠ͢Δͱ͔ɾɾɾɻ EPNBJOͷಡΈࠐΈ
XFCͱOBUJWFͰॲཧΛڞ௨Խͤ͞Δ ɾ͜ΕΔͱTUPSF͕៉ྷʹͳΔɻ ɾϏδωεϩδοΫʹؔͷ͋ΔΑ͏ͳσʔλϞσϧͰ ཧɻ ɾͦͷଞ6*ݻ༗ͷͷ֤3FEVDFSͰཧ
Θ͔Γ͍͢ɾ҆શ
͔Γ͍͢ɺ҆શ ɾ'MPX ɾ%%%ϥΠΫͳઃܭ 'MPX੩తܕνΣοΧʔ ܕਪΛͯ͘͠ΕΔ Ϟσϧͱ૬ੑ͕͍͍
ܕਪͱʁ ྫ͑͜ͷίʔυ Կ͕ͳͷͩΖ͏͔ʁ
ܕਪͱʁ ྫ͑͜ͷίʔυ GVODͰͷฦΓOVMMͰ͋ ΔՄೳੑ͕͋Δɻ ΑͬͯɺOVMMͱͳͬͨͱ͖ GVODͰ͋΅ʔΜͯ͠͠· ͏ɻ ΑͬͯOVMMॲཧΛڬΉ͖ʂ
ܕਪͱʁ OVMMΛߟྀͨ͠ΒqPX͕௨ͬͨʂ ͜Μͳײ͡ͰFTMJOUΈͨ͘ίʔυ Λ੩తʹਫ਼ࠪͯ͘͠ΕΔͷ͕qPX ͳ͔ͳ͔Τϥʔͷग़͠ํ͕ෆ ͳͱ͖͋Δ͚Ͳ׳Εɻ ίʔυ্ͷόάʹؾͮ͘͜ͱ͕Ͱ͖Δ
ɹɹɹɹɹɹɹɹɹɹɹϞσϧͷఆٛ 8FC /BUJWFͰද͍ࣔͤͨ͞ใج ຊతʹಉ͡ɻ ɹͦΕͧΕผͷؔΛఆٛ͠ͳ͍ ϞσϧͷதͷϝιουΛͬͯՃ ͢Δ σʔλߋ৽ͷࡍʹجຊతʹϞσϧΛ ੜͯͦ͠ΕΛฦ͢Α͏ͳઃܭʹɻ ͢ΔͱࣗવͳܗʢVTFS%BUBOBNFͱ͔
VTFS%BUBSFHJTUFS%BUF5FYUʣͰϑϩϯ τଆͰग़͢͜ͱ͕Ͱ͖Δɻ ͦͯ͠ɺ'MPXͰͬͯ͘Δͷͷܕ ͔͚Δ
'MPXͱͷ૬ੑ ͜͏ͳ͍ͬͯΔͱҰൃͰ ɾҾʹԿΛཁٻ͍ͯ͠Δͷ͔ʁ ɹ0SEFSʂ.FNCFS ɾฦΓͳΜͳͷ͔ʁ ɹ6J0CKFDU ͱ͍͏͜ͱ͕Θ͔Γ·͢ʂ σʔλΛͪΌΜͱఆٛ͢Δͱίʔυ ͕ݟ͘͢ͳΔɻ ɾ'MPXςετϑϩʔʹؚΊΔ
ɾ͢ΔͱඞͣकΒΕΔɻ
Θ͔Γ͍͢ʂ
͔͜͜Β͕ຊ൪ʂ͝ΊΜͳ͍͞ Α͍ΞʔΩςΫνϟΛ ࡞Δ͜ͱ͕Ͱ͖ͨɻ
͔͜͜Β͕ຊ൪ʂ͝ΊΜͳ͍͞ ͔͠͠
None
ͪΐͬͱলͨ͠ͱ͜Ζ
'MPXࣗମྲྀߦͬͯΔ͠ ͱ͍͍ͯͷ
͚ͩͲ
'MPXͷҾ͖ىࠞ͜͢ཚ ɾ'MPXΛܦݧͨ͜͠ͱͳ͍ਓʹύχοΫ ɾDPOpHಾઆ ɾʢ׳Εͳ͍ͱʣΘ͔Γʹ͍͘Τϥʔϩά ɾόʔδϣϯΞοϓͰ͙͢Τϥʔ ɾTUSJQΛೖΕΔͨΊʹEPNBJOʹόϕΔ ɹɾMFSOB3FBDU/BUJWFQBDLBHFSͷ ɹɹΠϯελϯεʹ໘
ɾ'MPXΛܦݧͨ͜͠ͱͳ͍ਓʹύχοΫ ɾDPOpHಾઆ ɾʢ׳Εͳ͍ͱʣΘ͔Γʹ͍͘Τϥʔϩά
'MPXͷҾ͖ىࠞ͜͢ཚ ɾ'MPXΛܦݧͨ͜͠ͱͳ͍ਓʹύχοΫ ɾDPOpHಾઆ ɾʢ׳Εͳ͍ͱʣΘ͔Γʹ͍͘Τϥʔϩά ͜Εํͳ͍ɾɾɾɻ ࠷ॳಋೖͨ͠ͱ͖Τϥʔى͜Γ·ͬͯ͘ ɹɹʮ͜Εҙຯ͋ΔΜ͔͢ʂʁʯͬͯ͜ͱ ࣌ؒͱܦݧ͕ղܾͯ͘͠ΕΔ
όʔδϣϯΞοϓͰ͙͢Τϥʔ
'MPXͷҾ͖ىࠞ͜͢ཚ ɾόʔδϣϯΞοϓͰ͙͢Τϥʔ 'MPXೖΕͯͨͷϦϙδτϦ͕ՐΛਧ͍ͯ ʮ͜ΕΤϥʔग़ͯΜͶΜ͚Ͳɺ ɹɹɹͯ͘͠ΕΜʁ ˌʈТʈ űƄŝűƄŝʯ 1BDLBHFKTPOͰͷόʔδϣϯݻఆΛ͖͢Ͱͨ͠ɻ ɾࢥͬͨΑΓසൟʹόʔδϣϯΞοϓͨ͠ɻ
ɾTUSJQΛೖΕΔͨΊʹEPNBJOʹόϕΔ ɹɾMFSOB3FBDU/BUJWFQBDLBHFSͷ ɹɹΠϯελϯεʹ໘
'MPXͷҾ͖ىࠞ͜͢ཚ ɾTUSJQΛೖΕΔͨΊʹEPNBJOΛόϕΔ ɹɾMFSOB3FBDU/BUJWFQBDLBHFSͷ ɹɹΠϯελϯεʹ໘ 3/TUSJQෆཁ͚ͩͲXFCʹඞཁͩͬͨͷͰTUSJQΛ ೖΕͯͨɻ ͍༨ͬͯଞʹͪΐͪ͘ΐ͘ೖͬͯͨɻ ɹɹɹɹΘɾɾɾɾ
'MPXͷҾ͖ىࠞ͜͢ཚ 3FBDU/BUJWF QBDLBHFS͕ղܾͰ͖ͳ͍ 3/Λ࣮ߦ͢Δͱ͖CBCFMSDΛফ͢ͱ͍͏ ɹɹɹɹɹɹɹɹɹɹಾͷحࡇ͕ੜ·ΕΔɾɾɾɻ ίϝϯτͰ'MPXΛॻ͖͘ʂɹ OPNPSFCBCFMʂʂ
ରࡦʂ
লΛ׆͔͢ ɾQBDLBHFKTPOͷόʔδϣϯݻఆ ɾ3/ͷΞοϓάϨʔυ͙Β͍ͷසͰ͋͛Δ ɾڞ༗ϦϙδτϦͰJNQPSUېࢭˍ'MPX$PNNFOU
͓·͚ʂ
'PSNJL ૉૣ͍։ൃʹॿྗͨͭ͠ΑͭΑϥΠϒϥϦ ɾGPSNཧϥΠϒϥϦʢฐࣾΤϯδχΞTBN͕Έ͚͖ͭͯͨʣ ɾόϦσʔγϣϯͷػೳ͋Γʢ݁ߏࣗ༝ʣ ɾSFEVYʹґଘ͠ͳ͍ʢ͔͢͠ΔͱSFEVYΊΔͱ͖ʹඋ͑ͯʣ ɾXFC OBUJWFͰͲͪΒͰ͑Δ ɹʔʼɹόϦσʔγϣϯɺೖྗͷѻ͍ɹΛڞ௨ԽՄೳʂ
'PSNJL XFCͷ࣮ OBUJWFͷ࣮ ɾSFHJTUSBUJPOͱ͍͏ڞ௨όϦσʔγϣϯʢผϦϙδτϦ͔Β͖ͬͯͨʣ ɾೖྗ WBMVFT Λͦͷ··TJHOVQʹ͢ͱ͍͏γϯϓϧઃܭ ͦͷޙͦ ͷ··EPNBJOͰॲཧ
'PSNJL XFCͷը໘ OBUJWFͷը໘ ɾSFHJTUSBUJPOͱ͍͏ڞ௨όϦσʔγϣϯ ɾೖྗ WBMVFT Λͦͷ··TJHOVQʹ͢ͱ͍͏γϯϓϧઃܭ ͦͷޙͦ ͷ··EPNBJOͰॲཧ
࠷ۙόʔδϣϯΞοϓʂ ͍͍͗ͯ͢͢ɻ
·ͱΊ
·ͱΊ ɾશ෦Ͱ͖Δ+4͍͢͝ɾɾɾɾɾɻ ɾڞ༗͢ΔͱΊͪΌͪ͘Όૣ͘ਐΊΔɻ ɾNPOPSFQPڧ͍ɻ ɾCBCFM͍ͨ͘ͳ͍γʔϯͰ'MPX$PNNFOUΛͬͨํ͕ ͍͍ɻ NPOPSFQP CBCFMͷཚཱ 3/ಾͷحࡇʂ ɾ'MPXόʔδϣϯݻఆ͓͍ͯͯ͠ɺཁॴཁॴͰόʔδϣϯ
͋͛ͨํ͕͍͍ɻ
͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ
͍͋ͭΤϯδχΞΛ ͬͯΔͥʂ