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
大規模は開発環境保守が大変なので改善する / ng-kyoto Angular Meetup 8
Search
OKUNOKENTARO
October 06, 2018
Technology
760
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模は開発環境保守が大変なので改善する / ng-kyoto Angular Meetup 8
ng-kyoto Angular Meetup 8にて発表した資料です。
OKUNOKENTARO
October 06, 2018
More Decks by OKUNOKENTARO
See All by OKUNOKENTARO
トレタO/X アーキテクチャ移行記 Next.js App Router化への道のり / TORETA TECH UPDATE 1
okunokentaro
5
12k
Podcastを継続する技術 / refactoradio-240119
okunokentaro
1
220
Webアプリケーション設計の第一歩は ディレクトリの整理から / Encraft 1
okunokentaro
33
10k
JSONとJSON Schemaを改めて理解する / tokyo_study
okunokentaro
9
2.5k
それでもどうしてRecoilを使うのか / Harajuku.ts Meetup Recoil
okunokentaro
19
5.7k
TypeScriptは10年でこんなに進化しました / TechFeed Experts Night 11
okunokentaro
6
1.8k
Hasura.io RDBをサクサク作る方法はARやO/RMだけじゃなくなりました/hasura-io
okunokentaro
5
730
コードには型アノテーションよりも要件アノテーションを増やせ!/harajukuts2
okunokentaro
14
6.6k
10年と3ヶ月でWebサービスを作った話 / Piyogrammer Conference 2021
okunokentaro
2
1.1k
Other Decks in Technology
See All in Technology
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
130
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
640
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
100
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.3k
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
1.6k
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
360
iOSDC Japan 2026 day1 TrackC 10:50
feedtailor
0
120
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
650
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
130
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
300
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.2k
omasushiというライブラリを作った
polidog
PRO
0
220
Featured
See All Featured
Scaling GitHub
holman
464
140k
The browser strikes back
jonoalderson
0
1.7k
Design in an AI World
tapps
1
310
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Exploring anti-patterns in Rails
aemeredith
3
500
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Transcript
େن։ൃڥอक͕ େมͳͷͰվળ͢Δ 0DU OHLZPUP"OHVMBS.FFUVQ !PLVOPLFOUBSP
୭ w Ԟݡଠ!PLVOPLFOUBSP w ΫϨεΣΞද w "OHVMBSຊϢʔβʔձ OHLZPUP
ԿΛ͢Δਓ w େنܥҊ݅ͷ։ൃ ʢສʙສߦͷΞϓϦέʔγϣϯઃܭ͔Β࣮ʣ w ίʔ υ ϨϏϡʔઃܭͷίϯαϧλϯ τ
w ΧϯϑΝϨϯεͰͷొஃɺ ߨԋ w ٕज़ຊΦϯϥΠϯϚΨδϯͰͷࣥච w 8FC.VTJDٕज़Λ༻͍ͨ։ൃ
ϓϩδΣΫ τ͕େنʹͳΔͱ ͲΜͳ͕ى͜Δ͔
εέʔϧͤ͞Δ w খنˠதنˠେن w ϓϩδΣΫ τ͕େ͖ ͘ ͳͬͯɺ ҆ఆͯ͠։ൃνʔϜӡӦ͕Ͱ͖Δ͜ͱ
εέʔϧ͢ΔΞϓϦέʔγϣϯ։ൃ w ΞϓϦέʔγϣϯ ɾ ίʔ υΛεέʔϧͤ͞ΔΑ ͘ग़ͯ͘ Δ w ΞʔΩςΫνϟ͕ʜ
w Ϧ ϑΝΫλ Ϧ ϯά͕ʜ w ίʔ υ ϨϏϡʔ͕ʜ
͜Ε·Ͱͷొஃ
։ൃڥͷεέʔϧޙखʹͳΓ͕ͪ w ςε τϑ ϨʔϜϫʔΫͦͷͷͷۛຯ w ϓϩδΣΫ τॳظͷςε τϑ ϨʔϜϫʔΫΛ
େنʹͳ͔ͬͯΒ͍ଓ͚ΔͷຊʹΑ͍͜ͱͳͷ͔ ʁ w -JOU 'PSNBUUFSͳͲͷࣗಈॲཧͷੋඇ w ͦΕΒ͍࣮ͭߦ͖͔͢ ʁ w ඞཁͳϥΠ ϒϥ Ϧͷੋඇ w ͦͦpackage.jsonʹແବ͕ͳ͍͔ɺ ݟ͍ͯ͠Δ͔
"OHVMBS$-*͔Β֎ΕΔ͜ͱͷڪΕ w "OHVMBS$-*Λ͍ͬͯΔͱ "OHVMBS$-*͕͍͔ͳΔͱ ͖ਖ਼ղͩͱ৴ͯ͠͠· ͏ w ಋೖ࣌ͷํ๏ͱͯ͠"OHVMBS$-*Λ࠾༻͢Δͷద w "OHVMBS$-*ͷग़ྗ࠷େެత
w ͦͷߏ͕ͯ͢ͷϢʔβɺ ͯ͢ͷϓϩδΣΫ τʹৗʹద͔ ࠶ߟͷ༨͕͋Δ
"OHVMBS$-*ͷߏ
"OHVMBS$-*ͷߏ w "OHVMBS$-* w 5ZQF4DSJQU w 54-JOU w ,BSNB +BTNJOF
w 1SPUSBDUPS
࠷৽൛ w ݄࣌ w 5ZQF4DSJQU w 54-JOU w ,BSNB +BTNJOF
w 1SPUSBDUPS
ৗʹ࠷৽ͱ͍͏Θ͚Ͱͳ͍ w "OHVMBS$-*ʹΑͬͯΠϯε τʔϧ͞ΕΔύοέʔδ ৗʹ࠷৽൛ͱ͍͏Θ͚Ͱͳ͍ w 5ZQF4DSJQU"OHVMBSຊମͷґଘ͢Δόʔδϣϯͱͷ߹ੑ͋Γ Πϯε τʔϧ͞ΕΔͷͱ࠷৽ͷόʔδϣϯ͕Ε͍ͯΔ͜ͱ͕ଟ͍
OHVQEBUF w IUUQTHJUIVCDPNBOHVMBSBOHVMBSDMJXJLJVQEBUF w "OHVMBS$-*ʹґଘύοέʔδͷόʔδϣϯΛ্͛ΔͨΊͷίϚϯ υ͕͋Δ • ng update w
͜ΕΛϲ݄ʙͱ์ஔͨ͠Βɺ όʔδϣϯ͕ࠩେ͖ ͘ෆ۩߹ͷՄೳੑ͕ߴ·Δ w ։ൃʹ ʮఆظతͳόʔδϣϯͷ֬ೝͱΞοϓσʔ τ࡞ۀʯ ΛؚΉ͖
ඞͣՃΠϯε τʔϧͨ͠ํ͕Α͍ͷ w 1SFUUJFS w ਓ͕ؒίʔσΟ ϯάελΠϧΛؾʹ͢Δ࣌ऴΘͬͨ w 1SFUUJFSͷࣗಈܗ݁Ռʹৗʹै͏ w
࠷ॳ ʮࣗͷίʔσΟ ϯάελΠϧͱҧ͏ʯ ͱؾʹೖΒͳ͘ ͯ͏ w ϲ݄͢Ε׳Εͯ1SFUUJFSͳ͠ͷڥ͕͍ʹͳΔ
Πϯε τʔϧͯ͠Αͦ͞͏ͳͷ w MJOUTUBHFE IVTLZ w IUUQTQSFUUJFSJPEPDTFOQSFDPNNJUIUNM w ίϛ ο
τ࣌ͷ-JOU 'PSNBUͷڧ੍ w ࢍ൱྆͋Γ
ςε τͷ࠷దԽ
"OHVMBS$-*ͷςε τߏ w IUUQTBOHVMBSKQHVJEFUFTUJOH w ,BSNB +BTNJOF w 5FTU#FE w
ϞοΫͷࢦఆΠϯελϯεͷड͚औΓ w ґଘੑೖ %FQFOEFODZ*OKFDUJPO Λ׆༻ͨ͠ςε τʹ͔ܽͤͳ͍
ςε τϑΝΠϧͷࣗಈੜ w "OHVMBS$-*ςε τϑΝΠϧࣗಈੜ͢Δ wʮςε τΛॻ͔ͳ͘ ͪΌʯ ͱ͍͏ؾ࣋ͪʹͤ͞ΒΕΔ w
ςε τ߲ͷՃ࣌ʹ࠷ॳ͔ΒϑΝΠϧ͕༻ҙ͞Ε͍ͯΕ໘͕͞ݮΔ
ͦͷςε τຊʹඞཁ͔ w ͦͷςε τຊʹඞཁ͔ۛຯ͢͠ w ͦͷDMBTT 4FSWJDF ʹςε τຊʹඞཁ͔
ʁ w 'BDBEFύλʔϯͳͲͰઃܭͨ͠ࡍ ཱͪͱͳΔ4FSWJDFʹ೦ೖΓͳςε τΛॻ͖͔͘ ʁ w calls.count()ͷճݕূʹऴ͍࢝ͯ͠ͳ͍͔ ʁ w ϞοΫͷอक͚ͩͰΉΈʹർฐ͍ͯ͠ͳ͍͔ ʁ
ςε τΛࣺͯΔ༐ؾ wʮςε τΛࣺͯΔʯ ͱ͍͏ ͱෆԺʹฉ͑͜Δ͔͠Εͳ͍ w ۛຯͨ݁͠Ռ w ଞͷՕॴͷ୯ମςε
τͰॲཧ͕ेʹकΒΕ͍ͯΔ w ͜ͷՕॴͷςε τΛΧόϨοδͷͨΊ͚ͩʹ࣮ࢪ͢Δͷෆໟͩ w ςε τ͍߲͕͔ͨ͠Βͳ͍··ɺ ݟΑ ͏ݟ·ͶͰॻ͍͍͍ͯͯͭසൟʹյΕΔ w ͜͏͍ͬͨঢ়͕ى͍ͬͯ͜Δ߹ Ή͠Ζͦͷςε τࣺͯͨ΄͏͕։ൃޮ্͕͕Δ
୯ମςε τͷॲཧ࣌ؒ w ୯ମςε τͷ݅ w ݅ʙे݅Ͱ͋ΕؾʹͳΒͳ͍͔͠Εͳ͍ w ઍ݅Φʔμʔʹͳͬͯ͘ Δͱ
ʮςε τ࣮ߦ࣌ͷແବΛল͍ͯߴԽ͢Δʯ ͱ͍͏؍͕ඞཁ w ςε τ͕೦ೖΓͳͷɺ ͔ͨ͠ʹΑ͍͜ͱͩ wʮͦͷςε τ͋ͳͨͷͲΜͳෆ҆Λղফͤ͞ΔͨΊͷςε τͰ͔͢ ʁ ʯ w ແବͳςε τɺ ͍ͬͦແ͘ ͢͜ͱͰߴԽͤ͞Δ
+FTUͷಋೖ w +FTU w 'BDFCPPLͷςε τϑ ϨʔϜϫʔΫ w IUUQTKFTUKTJPKB w
ߴͳ࣮ߦͱɺ ߴͳ࠶࣮ߦ w ϚϧνίΞΛ׆༻ͨ͠ฒྻ࣮ߦ w εφοϓγϣ ο τςε τ
+BTNJOF͔Β+FTUͷҠߦ w ͱͱ+BTNJOFͰಈ͍͍ͯΔςε τΛ+FTUͰಈ͔͢ʹ w 5FTU#FEΛ͍ͬͯΔՕॴɺ Ұ୴+BTNJOFͷ··ͷํ͕Α͍ ʢ"OHVMBS+BTNJOFΛެࣜʹαϙʔ τ͍ͯ͠ΔͨΊʣ
w ؔͷςε τɺ ґଘੑೖΛΘͳ͍4FSWJDFͷςε τʹ+FTU͕༗༻ w +FTUͷ"1*+BTNJOFͷ"1*ͱ΄΅ޓ͕͋Δ w ϫʔΫΞϥϯ υͱ ͯ͠ .spec.ts+BTNJOF .test.ts+FTUͰಈ͘ Α ͏ʹͨ͠
UTDPOpHKTPOͷվ w "OHVMBS$-*ͷੜ͢Δtsconfig.spec.json͚ͩͰɺ +BTNJOFͱ+FTUͷಉډ͕ࠔ w +BTNJOFͷܕఆٛϑΝΠϧͱ+FTUͷܕఆٛϑΝΠϧ͕ ಉҰείʔϓ্ͰҰ෦ڝ߹͢ΔͨΊ w tsconfig.test.jsonΛෳͯ͠࡞ w
includecompilerOptions.typesͷϓϩύςΟ Λॻ͖͑ͯ +FTUͰར༻Մೳʹ͢Δ w angular.jsonͷMJOUͷઃఆซͤͯमਖ਼͠ͳ͍ͱɺ +FTUଆ͚ͩ-JOU͕ແࢹ͞ΕΔͷͰҙ
"OHVMBS +FTUͷαϯϓϧ w IUUQTHJUIVCDPNMBDPMBDPBOHVMBSKFTUNJOJNBM w "OHVMBSຊϢʔβʔձදͷMBDPʹΑΔαϯϓϧ w 5FTU#FEΛ͍ͬͯͯɺ +FTU্Ͱಈ͘ Α
͏ʹௐ͞Ε͍ͯΔ w ϓϩδΣΫ τ్தͰͳ͚Εɺ ྫΛࢀߟʹ࠷ॳ͔Β+FTUલఏͰߟ͑Δͷख
ςε τ࣮ࢪ͕ඇޮͳͱ͖ w ςε τ͕ઍ݅ʹͳͬͨͱ͖ ʮςε τࣦഊ࣌ͷ࠶࣮ߦʯ ͕ ૾Ҏ্ʹε τ
ϨεͱͳΔ w ςε τΛ࠶࣮ߦ͢Δͨͼʹ8FCQBDLͷϏϧ υͰ΄Ͳͨ͞ΕΔ w ઌʹམͪΔςε τΛॻ͍͔ͯΒಈ࣮͘Λॻ͘ɺ ͱ͍ͬͨΞϓϩʔνΛऔΔ͜ͱ͕ ࠔʹͳΔ w ͦͦςε τΛॻ͘ؾྗ͕ࣦΘΕΔ
+FTUͷ໌Β͔ͳϝ Ϧ ο τ w +FTUΥ ονͱ࠶࣮ߦʹؔ͢Δૢ࡞ੑ͕ͱͯΑ͍ w མͪͨςε τͷΈͷ࠶࣮ߦɺ
ςε τϑΝΠϧͷϑΝΠϧ໊ͰߜΓࠐΜͰͷ ࣮ߦͳͲίϚϯ υ͕๛ w ࠶࣮ߦ͕ඵʙඵͳͷͰςε τϑΝʔε τͳ։ൃࣗࡏ w ͍͜͠ॲཧৗʹςε τΛॻ͖ͳ͕Β࣮Ͱ͖Δͱ͍͏҆৺ײ͕͋Δ
&&ςε τͷੋඇ
&&ςε τ w &OEUPFOE5FTU w ࣮ࡍͷΞϓϦέʔγϣϯΛىಈ͠ ෳͷϢʔεέʔε ʢཁ݅ʣ ΛΈ߹ΘͤͨγφϦΦʹԊͬͯࣗಈૢ࡞ w
ͦͷ݁Ռ͕ਖ਼͍͜͠ͱΛݕূ͢Δ
&&ςε τߴ֬Ͱෛ࠴Խ w ͠&&ςε τͷੋඇΛཧղ͠ͳ͍··ɺ ΔؾΛग़ͯ͠೦ೖΓʹॻ͍ͨ߹ w ͦͷ&&ςε τ͔ͳΓߴ͍֬Ͱෛ࠴Խ͢Δ w
࣮ͷͱ͜Ζɺ εϚʔ τͰ༗ӹͳ&&ςε τΛॻ͍ͯอक͢Δʹ͔ͳΓ εΩϧ͕ٻΊΒΕΔ w มߋʹڧ͍͔Ͳ͏͔ w ػೳҰͭҰͭͷཻͩͱมߋগͳ͍ w ը໘શମͷ ʮͲΕ͔ʯ ͕มߋ͞ΕΔසߴ͍ w $44Ϋϥε໊ͷվ໊ɺ σβΠϯͷมߋͱཁૉͷ࠶ஔɺ ಋઢݟ͠
ෛ࠴Խͨ͠ςε τͲ͏ͳΔ͔ w ৗʹϨο υ w Ϩο υ୭ݟͨ͘ ͳ͍ w
$*ͷఆظ࣮ߦ͔Β֎͞ΕΔ w ϩʔΧϧͰ୭࣮ߦ͠ͳ͘ ͳΔ w ࣮ߦ͞Εͳ͍͔Βϝϯςφϯε͞Εͳ͘ ͳΔ
୭࣮ߦ͠ͳ͍ίʔ υͲ͏ͳΔ͔ w ෛ࠴Խ w ຊମଆͷίʔ υͷมߋͰɺ &&ͷςε τίʔ υ͕Λى͜͢͜ͱ͋Δ
w ୭࣮ߦ͠ͳ͍ίʔ υͷίϯύΠϧΤϥʔΛʑ ͱ͢ w ͦͷίϯύΠϧΤϥʔΛͯ͠୭ͤʹͳΒͳ͍ w ϓϩδΣΫ τશମݕࡧͰ&&ϑΝΠϧ͕Ҿֻ͔ͬΓݕࡧ݁ՌͷϊΠζͱͳΔ w ࠜຊతʹআڈ͢Δଞͳ͘ ͳΔ
ͦͦԿΛςε τ͍ͨ͠ͷ͔ w ͦͷγφϦΦຊʹ&&ςε τͱ ͯ͠ςε τ͖͢ͳͷ͔ w ϑϩϯ τΤϯ
υͷ୯ମςε τͰΑ͍ͷͰ ʁ w αʔόʔଆͷςε τʹ͖͢Ͱ ʁ w εφοϓγϣ ο τςε τΛ׆༻͖͢Ͱ ʁ w ۛຯ͢Ε͢Δ΄Ͳɺ &&ςε τ ʮͦΜͳʹແ͘ ͍͍ͯʯ ͱͳΔ
୯ମςε τͰͰ͖ͳ͍͜ͱΛΔ w ͋Δը໘Λ։͍ͨͱ͖ʹɺ ͦͷը໘ཁૉ ɾ ॲཧͷ ʮͲ͔͜ʯ Ͱ ϥϯλΠϜΤϥʔ͕ग़͍ͯͳ͍͔
wʮ͜ͷը໘Λ։͍ͨΒਅͬനͰͨ͠ ʂ ʯ Λແ͘ ͢ w Τϥʔ͕ग़ͳ͍߹ɺ ଟ͘ͷέʔεͰ ʮόάى͍ͬͯ͜ͳ͍ʯ ͱݟͳͤΔ w ͪΖΜݸʑͷ୯ମςε τɺ Өڹൣғಛఆɺ खಈςε τซ༻͖͢
1SPUSBDUPS w "OHVMBS$-*͕ಉ࣌ʹΠϯε τʔϧͯ͘͠ΕΔ&&͚ςε τϑ ϨʔϜϫʔΫ w ࠷৽൛ϲ݄Ҏ ʢ࣌ʣ ʹϦ
Ϧʔε͞Ε͍ͯΔͷͰ ։ൃ͕ࢭ·͍ͬͯΔΘ͚Ͱͳ͍
1SPUSBDUPSͷੋඇ w 1SPUSBDUPS4FMFOJVN 8FC%SJWFSΛϕʔεʹ͍ͯ͠Δ w ฮͷٕज़ w ͜Ε͕ѱ͍ͱݴ͍͍ͨΘ͚Ͱͳ͍ w $*Ͱಈ͔͍͔͢͠Ͳ͏͔͕ॏཁ
w ͪΐͬͱ͍͠
1VQQFUFFS w 1VQQFUFFS ʢύϖςΟ Ξʣ ΛͬͯΈΔ w 1VQQFUFFS)FBEMFTT$ISPNFΛૢ࡞Ͱ͖Δ w BTZODBXBJUߏจʹΑͬͯ୯७ͳεΫ
Ϧ ϓτΛॻ͘ Α ͏ʹهड़Մೳ w ্͔Βॱʹߦ͝ͱʹಡΊͯಡΈ͍͢
1VQQFUFFSͰͷ&SSPS%FUFDUJOH w 1VQQFUFFS +FTUΛΈ߹ΘͤΔ w 1VQQFUFFSͰ$ISPNFͷΤϥʔΛϋϯ υ Ϧ ϯάͰ͖Δ w
page.on('console', callback)ͱ͍͏"1* w ͜ΕΛ+FTUͰ࣮ߦ͠ ʮΤϥʔ͕ແ͚ΕάϦʔϯʯ ͱ͍͏ ςε τ͕ॻ͚Δ
1VQQFUFFSͱ$*ͷ૬ੑ w )FBEMFTT$ISPNFΛ͏ͷͰ$*Ͱͷڥߏங ɾ ىಈΛอূ͍͢͠ w 4FMFOJVNΑ ΓϋϚΓ͕গͳ͍
Πϯε τʔϧॲཧͱ$*࠷దԽ
OQNQPTUJOTUBMM w package.jsonʹpostinstallΛॻ͍͓͚ͯ npm installͨ͠ͱ͖ʹҰॹʹ४උ࡞ۀͬͯ͘Εָͯ w ຊʹָͳͷ͔ w npm installΛ͢Δͷਓ͚ؒͩͩͱࢥ͍ͬͯͳ͍͔
w $*͕ඞཁͱ͢Δ४උॲཧͱɺ ਓ͕ؒඞཁͱ͢Δ४උॲཧຊʹಉ͔͡
$*Ͱແବͳ͜ͱΛ͍ͯ͠ͳ͍͔ w ϓϩδΣΫ τ͕େ͖ ͘ ͳΓ$*ͷ࣮ߦ͕࣌ؒʙͳͲʹΕ্͕Δͱ ࿐ࠎʹ։ൃޮ͕Լ͕Γ࢝ΊΔ w 13ϨϏϡʔौɺ ܰඍͳमਖ਼Λͯ͠ຖճͨ͞ΕΔ
w $*ͷߴԽΛ͢Δඞཁ͕͋Δ
ܭଌͤΑ w ύϑΥʔϚϯεվળʹ͓͍ͯɺ ԿࣄਪଌΑ Γܭଌ w Ͳͷॲཧ͕͍ͷ͔పఈతʹચ͍ग़͢ w npm installͰແବͳͷΛΠϯε
τʔϧ͍ͯ͠ͳ͍͔ w ͍ͭͰʹ࣮ߦ͞ΕΔpostinstall$*࣮ߦʹඞཁͳॲཧͳͷ͔ w ਓ͕ؒԣண͢ΔͨΊͷॲཧ͕$*ʹͱͬͯෛ୲ʹͳ͍ͬͯͳ͍͔
ࡉԽͤΑ w ͨͱ͑postinstallΛΊΔ w ਓ͕ؒԣண͢ΔͨΊ͚ͩͷࣗಈԽ͠ͳ͍ w ࣮npm install && npm
run setupͳͲͷίϚϯ υͷΈ߹ΘͤΛ εχϖο τʹ࣮ͯ͠ߦ͢Ε͍͍͚ͩͩͬͨ w npm installͰͷॲཧΛݶΓͳ͘ݶఆతʹ͢Δ w 5FTUJOH -JOUJOH 1SFWJFX%FQSPZͷΑ ͏ͳෳ߹తͳॲཧΛॻ͔ͳ͍
ͳΔ͘ฒྻ࣮ߦ w ςε τͯ͠ɺ -JOUπʔϧճͯ͠ɺ ϓϩμΫγϣϯϏϧ υ࣌Τϥʔ͕ແ͍͔֬ೝͯ͠ʜ w ͦͷॲཧຊʹྻ࣮ߦ͠ͳ͍ͱ͍͚ͳ͍ͷ͔ ʁ
w ςε τͭͭ͠ɺ -JOUπʔϧճͭͭ͠ɺ Ϗϧ υ͢ΕΑ͍ w ฒྻ࣮ߦ͢Δ w 5SBWJT$*ʹ$JSDMF$*ʹฒྻ࣮ߦͷͨΊͷ"1*͕༻ҙ͞Ε͍ͯΔ w ࠷ऴతʹ$*ϓϩόΠμʹࡳଋϏϯλͯ͠εϖοΫΛ্͛Δ
ݡ͍։ൃڥอक
͍͔ͳΔͷΔ w ϓϩμΫ τίʔ υ͍ͬͯ͘ w ಉ࣌ʹςε τίʔ υΔ w
$*ͷઃఆϑΝΠϧΔ w package.jsonͷεΫ Ϧ ϓτΔ
ఆظతͳࢹͷ w ͕ى͖ͯ ʮ͍͔͍͍ͭͤʯ ͩͱɺ Ӭԕʹ͢ͱ ͖དྷͳ͍ w ͷੵɺ ͕ͯऔΓฦ͠ͷ͔ͭͳ͍͜ͱʹܨ͕Δ
w ։ൃ͕શʹε τοϓ͢Δʜ w म෮ʹਓ݄͔͔ΔʜͳͲ w ݱঢ়Ͱͳ͍͔ɺ ఆظతʹٙΛ࣋ͭ͜ͱ͕ॏཁ w ҆શͷͨΊͷ׆ಈ
҆શͳ։ൃɺ ҆શͳڥ͔Β 5IBOLZPV