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
2k
アーキテクチャと反省と改善
Forefront JavaScript ! 急成長中のサービスの技術達!
@YutamaKotaro
February 26, 2018
Tweet
Share
More Decks by @YutamaKotaro
See All by @YutamaKotaro
0->1 現場におけるReactNative
yutamakotaro
0
130
ライブラリはしご酒
yutamakotaro
0
130
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.2k
React Native Game Engine in React Native Tech Blog Event
yutamakotaro
1
1.4k
React Native Book
yutamakotaro
0
54
AWS Summit2019 airCloset section
yutamakotaro
1
200
フルJSアーキテクトで作るエアークローゼット
yutamakotaro
2
490
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
Infographics Made Easy
chrislema
238
18k
Optimizing for Happiness
mojombo
370
69k
For a Future-Friendly Web
brad_frost
171
8.9k
Documentation Writing (for coders)
carmenintech
59
3.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
647
58k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Why Our Code Smells
bkeepers
PRO
331
56k
Unsuck your backbone
ammeep
662
57k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
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όʔδϣϯݻఆ͓͍ͯͯ͠ɺཁॴཁॴͰόʔδϣϯ
͋͛ͨํ͕͍͍ɻ
͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ
͍͋ͭΤϯδχΞΛ ͬͯΔͥʂ