Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2018-07-31-angular-tips
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Araya
July 31, 2018
140
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2018-07-31-angular-tips
合同会社ヘマタイトの社内LT会で話した、Angularでアプリケーションを開発するときに個人的に意識しているTipsです
Araya
July 31, 2018
More Decks by Araya
See All by Araya
Performance and cache strategy at NIKKEI
arayaryoma
0
2.9k
JavaScript Promise API in 2019
arayaryoma
1
880
gotandajs-11-nodejs-recursive-readdir
arayaryoma
2
530
What about Temporal in JavaScript
arayaryoma
5
1.7k
var, let, const and immutable of JavaScript
arayaryoma
0
300
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.2k
The SEO identity crisis: Don't let AI make you average
varn
0
560
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
260
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
30 Presentation Tips
portentint
PRO
1
400
Rails Girls Zürich Keynote
gr2m
96
14k
Unsuck your backbone
ammeep
672
58k
How to Ace a Technical Interview
jacobian
281
24k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
GraphQLとの向き合い方2022年版
quramy
50
15k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
Transcript
͍͔͖ͭͬͱʹཱͭ Angular։ൃTips @arayaryoma 2018-07-31 ヘマタイト社内LT
ର ͜Ε͔Β"OHVMBSͰΞϓϦέʔγϣϯ։ൃΛ࢝ΊΑ͏ͱ͍ͯ͠Δਓ "OHVMBSͰΞϓϦέʔγϣϯΛগ͠ॻ͍ͨ͜ͱ͕͋Δਓ ͢ͰʹΰϦΰϦॻ͍ͯΔਓʹͭ·Βͳ͍͔͠Εͳ͍Ͱ͢
͢͜ͱ ։ൃڥΛߏங͠Α͏ "OHVMBS$-*Λ͍ͦ͏ ڥ͝ͱʹϏϧυεΫϦϓτΛ͚Α͏ $PEFGPSNBUUFSΛࣗಈͰ͔͚ΔΑ͏ʹ͠Α͏ ࠷৽൛Λ͓͏ !OHSYTUPSFͰঢ়ଶΛཧ͠Α͏ !BOHVMBSNBUFSJBM !BOHVMBSDELͰָʑDPNQPOFOU։ൃ 1SPNJTFͱ0CTFSWBCMFΛ͍͚Α͏
ࠔͬͨΒެࣜυΩϡϝϯτ ͞ΒʹࠔͬͨΒ(PPHMF
։ൃڥΛߏங͠Α͏
ඞཁͳͷ /PEFKT /PEFKTQBDLBHFNBOBHFS ZBSO OQN QOQNͳͲ
/PEFKT IUUQTOPEFKTPSHFO͔ΒΠϯετʔϧͰ͖Δ ෳͷ/PEFKTͷόʔδϣϯΛΓସ͑Ͱ͖ΔπʔϧΛ͏ͷ͕͓͢͢Ί IUUQTHJUIVCDPNDSFBUJPOJYOWN IUUQTHJUIVCDPNOPEFOWOPEFOW IUUQTHJUIVCDPNUKO
1BDLBHFNBOBHFS OQN/PEFKTΛΠϯετʔϧ͢Δͱଐͯ͘͠Δ ࠷৽൛ศརػೳ͕૿͑ͯͨΓηΩϡϦςΟύον͕ೖ͍ͬͯͨΓ͢Δͷ ͰɺͱΓ͋͑ͣnpm install -g npmͰ࠷৽൛Λ͏Α͏ʹ͢Δͷ͕ ͓͢͢Ί ଞͷ༗໊ॴͩͱZBSO IUUQTZBSOQLHDPNFO
OQNMPDLpMFʹ͕͋ΔͷͰݸਓతʹ࠷ۙZBSOΛਪ͍ͯ͠Δ
"OHVMBS$-*Λ׆༻͠Α͏
"OHVMBS$-*ͱ "OHVMBS։ൃͷͨΊͷ$-*πʔϧ ng [subcommand] [arguments] ϓϩδΣΫτͷॳظ࡞ɺίϯϙʔωϯτͳͲͷ࡞ɺϏϧυϩʔΧϧ αʔόʔͷىಈͳͲΛ؆୯ʹͰ͖Δ WΑΓɺNBKPS NJOPSVQEBUF"OHVMBSͷόʔδϣϯ൪߸ͱἧ͑ͯϦ Ϧʔε͞ΕΔΑ͏ʹͳͬͨ
"OHVMBS$-*Λ༻͍ͳͯ͘։ൃՄೳ͕ͩɺݱ࣮తʹΘͳ͍खͳ͍
Πϯετʔϧ npm install -g @angular/cli yarn global add @angular/cli
ϓϩδΣΫτͷ৽ن࡞ ng new [application-name] componentͳͲͷprefix͕σϑΥϧτͰ app ͱͳΔ͕ɺ--prefix [prefix] ΦϓγϣϯͰมߋ͕ՄೳͳͷͰɺ৽ن࡞࣌ʹprefixΛࢦఆ͓ͯ͘͠ ͱ͋ͱͰݕࡧɾஔ͠ͳ͍͍ͯ͘ͷͰָ
--style ΦϓγϣϯͰstylesheetͷϑΝΠϧܗࣜΛࢦఆͰ͖Δɻ e.g. ng new sample --style scss ͜Ε͋ͱͰมߋ͠ͳ͍͍ͯ͘ͷͰ࠷ॳʹࢦఆ͓ͯ͘͠ͱָ
ng generate ΞϓϦέʔγϣϯʹDPNQPOFOU TFSWJDF QJQF EJSFDUJWFͳͲΛ࡞Ͱ ͖Δ e.g. ng generate
component directory/component-name componentserviceͳͲΛ࡞Δͱ͖جຊ͜ΕΛ͏ WebStormͰGUIͰݺͼग़͕͠Մೳ [demo]
ng update ϥΠϒϥϦΛΞοϓσʔτ͢ΔͨΊͷίϚϯυW ϥΠϒϥϦͷschematicsʹΑΓɺbreaking-changesͳͲ͕͋ͬͨͱ͖ʹ ࣗಈͰஔͯ͘͠ΕΔ e.g. ng update @angular/core =>
rxjsTypeScriptɺAngular frameworkͷpackageΛͯ͢update͢Δ
ng add ϓϩδΣΫτʹϥΠϒϥϦΛՃ͢ΔͨΊͷίϚϯυW IUUQTCMPHBOHVMBSJPWFSTJPOPGBOHVMBSOPXBWBJMBCMFDDCFGBB υΩϡϝϯτΛݟͯଟԿΘ͔Βͳ͍IUUQTHJUIVCDPNBOHVMBSBOHVMBSDMJXJLJBEE QBDLBHFΛΠϯετʔϧ͢Δ͚ͩͰͳ͘ɺNPEVMFͷJNQPSU TUZMFTIFFUͷಡΈࠐΈQPMZpMMΛ উखʹՃͰ͖ΔΑ͏ʹͳΔ ϥΠϒϥϦͷTDIFNBUJDTͷTDSJQUʹΑΔͷ
υΩϡϝϯτϥΠϒϥϦͷTDIFNBUJDTΛݟΔͱ͍͍ FHIUUQTHJUIVCDPNBOHVMBSNBUFSJBMCMPCNBTUFSTSDMJCTDIFNBUJDT DPMMFDUJPOKTPO
ϓϩδΣΫτϩʔΧϧͷBOHVMBSDMJΛݺͼग़͢ OHOFXͰϓϩδΣΫτΛ࡞ͬͨޙɺHMPCBMͰͳ͘ϓϩδΣΫτϩʔΧϧͷBOHVMBSDMJΛݺͼग़ͨ͠ ΄͏͕͍͍ HMPCBMͱϓϩδΣΫτϩʔΧϧͰBOHVMBSDMJͷόʔδϣϯ͕ҧͬͯյΕΔ͜ͱΛ͙ ܯࠂ͕ͰΔ:PVSHMPCBM"OHVMBS$-*WFSTJPO JTHSFBUFSUIBOZPVSMPDBMWFSTJPO 5IF MPDBM"OHVMBS$-*WFSTJPOJTVTFE
ར༻ํ๏ ./node_modules/.bin/ng yarn run ng npx ng
ڥ͝ͱʹϏϧυεΫϦϓτΛ͚Α͏
"OHVMBSϓϩδΣΫτͷCVJME ng buildͰϓϩδΣΫτΛCVJME͠ɺՌ IUNM DTT KT BTTFUT EJTU σΟϨΫτϦʹు͖ग़͞ΕΔ EFGBVMU
ng build —prodͷΑ͏ʹΦϓγϣϯΛ͚ͭΔͱϏϧυڥΛΓସ͑ΒΕ Δ ϏϧυڥΛΓସ͑Δͱimport * from ‘path/to/environment’Ͱ ࢀর͢ΔFOWJSPONFOUIPHFUTϑΝΠϧΛมߋͰ͖Δ npx ng build —prodͱ͔ຖଧͭͷ໘ͳͷͰɺOQNTDSJQUʹ͢Δͱศར
None
$PEFGPSNBUUFSΛࣗಈͰ࣮ߦ
DPEFGPSNBUUFSΛࣗಈͰ࣮ߦ͠Α͏ $PEFGPSNBUUFSͷQSFUUJFS IUUQTQSFUUJFSJP ΛɺHJUDPNNJUͨ͠ͱ ͖ʹࣗಈͰ࣮ߦ͞ΕΔΑ͏ʹ͢Δ खॱ ZBSOBEEEFWQSFUUJFSIVTLZMJOUTUBHFE QBDLBHFKTPOʹޙड़ͷTDSJQUΛهࡌ
None
࠷৽൛Λ͓͏
࠷৽൛ͷ"OHVMBSΛ͓͏ "OHVMBSόʔδϣϯΞοϓʹΑΓ։ൃऀ͕خ͘͠ͳΔػೳCVHpY͕ೖΔ ຖ݄ͷNJOPSSFMFBTFɺʹҰճͷNBKPSVQEBUF "OHVMBS$-*5ZQF4DSJQUͷΞοϓσʔτʹΑΓɺඇৗʹศརͳػೳ͕ೖΔ ͜ͱଟʑ͋ΔͷͰɺ৽ن࡞࣌໎Θͣ࠷৽൛ɺطଘͷϓϩδΣΫτՄ ೳͳݶΓ࠷৽൛ʹै͍ͨ͠ 6QEBUFHVJEF͕͋ΔͷͰɺ͜ͷ௨ΓʹΔͱ SEQBSUZMJCSBSZ͕յΕΔ Ҏ֎ ΄΅ࠔΒͳ͍IUUQTVQEBUFBOHVMBSJP
!OHSYTUPSFʹΑΔঢ়ଶཧ
"OHVMBSͷঢ়ଶ TUBUF ཧ "OHVMBS։ൃʹඞཁͳͷҰ௨Γೖ͍ͬͯΔϑϨʔϜϫʔΫ͕ͩɺΞϓ ϦέʔγϣϯDPNQPOFOUͷTUBUFཧ࣋ͨͳ͍ 3YKTΛۦͯࣗ͠Ͱؤுͬͯॻ͔͘ɺϥΠϒϥϦΛ͏
!OHSY3FBDUJWF&YUFOTJPOTGPS"OHVMBS "OHVMBSΞϓϦέʔγϣϯͷͨΊͷSFBDUJWFQSPHSBNNJOHϥΠϒϥϦ܊ 4UPSF3YKTΛ༻͍ͨTUBUFཧϥΠϒϥϦ &⒎FDUT4UPSFͷ෭࡞༻Λѻ͏ϥΠϒϥϦ %#3YKTΛ༻͍ͨɺ*OEFYFE%#Λѻ͏ͨΊͷϥΠϒϥϦ /PUJGZ3YKTΛ༻͍ͨɺ8FCOPUJpDBUJPOΛѻ͏ͨΊͷϥΠϒϥϦ 4UPSF%FW5PPMT4UPSFͷͨΊͷ։ൃπʔϧ ͳͲ
!OHSYTUPSF "OHVMBSͷTUBUFཧϥΠϒϥϦͰ͓ͦΒ͘Ұ൪ਓؾ TUPSF͕TUBUFΛอ͍࣋ͯͯ͠BDUJPOΛEJTQBUDI͢Δ͜ͱʹΑͬͯSFEVDFS͕TUBUFΛߋ৽͢Δ ΄΅3FEVYͳͷͰ3FEVYॻ͍ͨ͜ͱ͋ΕࠔΔ͜ͱͳ͍ ͣ TUBUFͷऔಘ͕0CTFSWBCMFͰฦ٫͞ΕΔͷ͚ͩҙ ࠷ڧͷυΩϡϝϯτIUUQTHJUIVCDPNOHSYQMBUGPSNUSFFNBTUFSFYBNQMFBQQ !OHSYTUPSFEFWUPPMTΛ͏ͱɺTUBUFͷมߋ͕͋ͬͨͱ͖ϒϥβͷίϯιʔϧʹදࣔ ͯ͘͠ΕͨΓ͢ΔͷͰศར
!BOHVMBSNBUFSJBMɺ!BOHVMBSDELͰ DPNQPOFOU։ൃΛָʹ͢Δ
!BOHVMBSNBUFSJBM ͦͷ໊ͷ௨Γ"OHVMBSͷͨΊͷNBUFSJBMEFTJHODPNQPOFOUTMJCBSZ IUUQTNBUFSJBMBOHVMBSJP GPSNɺNPEBMɺUBCMFͳͲɺࣗͰ࣮͢Δͱ࣮ͦͦ͜͜ίετͷ͔͔ΔDPNQPOFOU ͕ɺ!BOHVMBSNBUFSJBMΛ͏͜ͱͰָʹͦΕͬΆ͘ݟ͑ΔͷΛ࡞ΕΔ ϓϩτλΠϓͳͲͰઈର͍͍ͨ "OHVMBSWʹ͓͍ͯ4DIFNBUJDTʹΑΓ/BWJHBUJPOCBS%BTICPBSEͱ͍ͬ ͨ$PNQPOFOUΛҰॠͰ࡞Δ͜ͱՄೳʹ IUUQTNBUFSJBMBOHVMBSJPHVJEFTDIFNBUJDT
!BOHVMBSDEL "OHVMBSͷͨΊͷDPNQPOFOUEFWFMPQNFOULJU "DDFTTJCJMJUZ0WFSMBZͳͲɺDPNQPOFOU։ൃʹ༗༻ͳNPEVMFΛଟ࣋ͬ͘ ͍ͯΔ IUUQTNBUFSJBMBOHVMBSJPDELDBUFHPSJFT
1SPNJTFͱ0CTFSWBCMFΛ͍͚Α͏
1SPNJTFͱ0CTFSWBCMF 1SPNJTF&4ͰೖͬͨඇಉظॲཧΛؚΉ࣮ߦΛ؆ܿʹॻͨ͘Ίͷͷ &4ͰೖͬͨBTZODBXBJUʹΑΓඇৗʹ͍͘͢ͳͬͨ 0CTFSWBCMF3FBDUJWF9ͷ֓೦ɻPCTFSWBCMF0CKFDUΛTVCTDSJCF͢Δ͜ ͱͰɺඇಉظॲཧͳͲʹΑΔσʔλͷߋ৽Λݕ͢Δɻ "OHVMBSʹ3YKT͕แ͞Ε͍ͯͯɺ"OHVMBSͷCVJMUJOTFSWJDFͷඇಉ ظॲཧͷ݁Ռ0CTFSWBCMFͰฦͬͯ͘Δ͜ͱ͕ଟ͍ !BOHVMBS DPNNPOIUUQͳͲ
ͲͪΒΛ͏͖͔ ΈͷͰยٞ͘ ݸਓͷݟղ ͯ͢Λ1SPNJTF0CTFSWBCMFʹدͤΔͱଉۤ͘͠ͳΔ σʔλͷߋ৽͕Ұ͖Γ 9)3ͰϦΫΤετΛඈͯ͠ϨεϙϯεΛऔಘ͢ΔͳͲ ͳ߹ɺ3YKTͷ PQFSBUPSΛΘͳ͍߹1SPNJTFͰฦͨ͠΄͏͕BXBJUͰݺͼग़ͤΔͷͰ͍উख ͕͍͍ ٯʹTUSFBNʹEBUBΛྲྀͯ͠ɺมߋΛݕͯ͠PQFSBUPSͰσʔλܗͯ͠"OHVMBSͷ
DPNQPOFOUʹ͢ͱ͍ͬͨॲཧΛॻ͘ͳΒ0CTFSWBCMF͕ศར
։ൃதࠔͬͨΒ
BOHVMBSJPΛݟΑ͏ʂ ެࣜυΩϡϝϯτͰ͋ΔIUUQTBOHVMBSJPEPDTඇৗʹใྔ͕๛ ͰಡΈ͘͢ɺ"1*CVJMUJOͷEJSFDUJWF TFSWJDF QJQFͳͲ͜ΕΛࢀর ͢Εؒҧ͍ͳ͍ɻ ೖ͢Δͱ͖ͷνϡʔτϦΞϧॆ࣮IUUQTBOHVMBSJPUVUPSJBM ຊޠείγμέΞϧIUUQTBOHVMBSKQ ࣮ྫ·Ͱ·͔ͳ͑ͳ͍
࣮ྫɺ৽ػೳͷৄ͍͠ใΛݟ͍ͨ (PPHMFݕࡧ ະͩʹ"OHVMBSͷશͰ͋Δ"OHVMBS+4ͷهࣄTUBDLPWFSqPX͕େྔʹग़ͯ͘ΔͷͰɺظؒࢦఆͰߜΓࠐΈΛ ͔͚ͨΓɺBOHVMBSKT͢Δͷ͕CFUUFSɻ<ݕࡧϫʔυ BOHVMBS>Ξϯνύλʔϯ ͓͢͢Ίϒϩά ӳޠ IUUQTCMPHBOHVMBSJP IUUQTCMPHBOHVMBSJOEFQUIDPN
͓͢͢Ίϒϩά ຊޠ IUUQTNFEJVNDPNBOHVMBSKBQBOVTFSHSPVQ IUUQTMBDPMBDPIBUFOBCMPHDPN