ã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ãçè§£ã»æ¹åããJavaScriptã®ãã«ãããã»ã¹ãæé©åããŸããäŸåé¢ä¿è§£æ±ºã®é床ãåæãã广çãªæé©åæŠç¥ãå®è£ ããæ¹æ³ãåŠã³ãŸãããã
JavaScriptã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ïŒäŸåé¢ä¿è§£æã®é床æé©å
çŸä»£ã®JavaScriptéçºãç¹ã«ReactãAngularãVue.jsã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã§æ§ç¯ãããŸããããã¯ãå€§èŠæš¡ãªã³ãŒãããŒã¹ãã¢ãžã¥ãŒã«ãšåŒã°ããåå©çšå¯èœãªå°ããªåäœã«åå²ããããšãæå³ããŸãããããã®ã¢ãžã¥ãŒã«ã¯äºãã«äŸåããã¢ãžã¥ãŒã«ã°ã©ããšããŠç¥ãããè€éãªãããã¯ãŒã¯ã圢æããŸãããã«ãããã»ã¹ã®ããã©ãŒãã³ã¹ããããŠæçµçã«ã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã¯ããã®ã°ã©ãã®å¹ççãªæ§ç¯ãšåæã«å€§ããäŸåããŠããŸãã
ã¢ãžã¥ãŒã«ã°ã©ããé ããšããã«ãæéãå€§å¹ ã«é·ããªããéçºè ã®çç£æ§ã«åœ±é¿ãäžãããããã€ãµã€ã¯ã«ãé ãããå¯èœæ§ããããŸããããã©ãŒãã³ã¹ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ãæäŸããããã«ã¯ãã¢ãžã¥ãŒã«ã°ã©ãã®æé©åæ¹æ³ãçè§£ããããšãäžå¯æ¬ ã§ãããã®èšäºã§ã¯ãã¢ãžã¥ãŒã«ã°ã©ãæ§ç¯ã®éèŠãªåŽé¢ã§ããäŸåé¢ä¿è§£æ±ºã®é床ãåæããæ¹åããããã®ãã¯ããã¯ãæ¢ããŸãã
JavaScriptã¢ãžã¥ãŒã«ã°ã©ããçè§£ãã
ã¢ãžã¥ãŒã«ã°ã©ãã¯ãã¢ããªã±ãŒã·ã§ã³å ã®ã¢ãžã¥ãŒã«éã®é¢ä¿ã衚ããŸããã°ã©ãã®åããŒãã¯ã¢ãžã¥ãŒã«ïŒJavaScriptãã¡ã€ã«ïŒã衚ãããšããžã¯ãããã®ã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã衚ããŸããWebpackãRollupãParcelã®ãããªãã³ãã©ãŒãã³ãŒããåŠçãããšãããã®ã°ã©ãããã©ããå¿ èŠãªãã¹ãŠã®ã¢ãžã¥ãŒã«ãæé©åãããåºåãã¡ã€ã«ã«ãã³ãã«ããŸãã
äž»èŠãªæŠå¿µ
- ã¢ãžã¥ãŒã«: ç¹å®ã®æ©èœãæã€èªå·±å®çµåã®ã³ãŒãåäœãç¹å®ã®æ©èœïŒãšã¯ã¹ããŒãïŒãå ¬éããä»ã®ã¢ãžã¥ãŒã«ããæ©èœïŒã€ã³ããŒãïŒãæ¶è²»ããŸãã
- äŸåé¢ä¿: ã¢ãžã¥ãŒã«éã®é¢ä¿ã§ãããã¢ãžã¥ãŒã«ãå¥ã®ã¢ãžã¥ãŒã«ã®ãšã¯ã¹ããŒãã«äŸåããŠããŸãã
- ã¢ãžã¥ãŒã«è§£æ±º: ã€ã³ããŒãæãæ€åºããããšãã«ãæ£ããã¢ãžã¥ãŒã«ãã¹ãèŠã€ããããã»ã¹ãããã«ã¯ãèšå®ããããã£ã¬ã¯ããªãæ€çŽ¢ãã解決ã«ãŒã«ãé©çšããããšãå«ãŸããŸãã
- ãã³ãã«: è€æ°ã®ã¢ãžã¥ãŒã«ãšãã®äŸåé¢ä¿ã1ã€ä»¥äžã®åºåãã¡ã€ã«ã«çµåããããã»ã¹ã
- ããªãŒã·ã§ã€ãã³ã°: ãã³ãã«ããã»ã¹äžã«ãããã³ãŒãïŒæªäœ¿çšã®ãšã¯ã¹ããŒãïŒãåé€ããæçµçãªãã³ãã«ãµã€ãºãåæžããããã»ã¹ã
- ã³ãŒãåå²: ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããè€æ°ã®å°ããªãã³ãã«ã«åå²ãããªã³ããã³ãã§èªã¿èŸŒãããšã§ãåæèªã¿èŸŒã¿æéãæ¹åããŸãã
ã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããèŠå
ããã€ãã®èŠå ããã¢ãžã¥ãŒã«ã°ã©ãã®æ§ç¯ãšåæã®é å»¶ã«å¯äžããå¯èœæ§ããããŸãããããã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ã¢ãžã¥ãŒã«ã®æ°: ã¢ãžã¥ãŒã«ãå€ãå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã¯ãåœç¶ãªãããã倧ããè€éãªã¢ãžã¥ãŒã«ã°ã©ãã«ãªããŸãã
- äŸåé¢ä¿ã®æ·±ã: æ·±ããã¹ããããäŸåé¢ä¿ãã§ãŒã³ã¯ãã°ã©ãããã©ãã®ã«å¿ èŠãªæéãå€§å¹ ã«å¢å ãããå¯èœæ§ããããŸãã
- ã¢ãžã¥ãŒã«è§£æ±ºã®è€éã: ã«ã¹ã¿ã ãšã€ãªã¢ã¹ãè€æ°ã®æ€çŽ¢ãã¹ãªã©ãè€éãªã¢ãžã¥ãŒã«è§£æ±ºèšå®ã¯ããã»ã¹ãé ãããå¯èœæ§ããããŸãã
- 埪ç°äŸå: 埪ç°äŸåïŒã¢ãžã¥ãŒã«Aãã¢ãžã¥ãŒã«Bã«äŸåããã¢ãžã¥ãŒã«Bãã¢ãžã¥ãŒã«Aã«äŸåããïŒã¯ãç¡éã«ãŒããããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
- éå¹çãªããŒã«èšå®: ãã³ãã©ãŒãé¢é£ããŒã«ã®æé©ã§ãªãèšå®ã¯ãéå¹çãªã¢ãžã¥ãŒã«ã°ã©ãæ§ç¯ã«ã€ãªããå¯èœæ§ããããŸãã
- ãã¡ã€ã«ã·ã¹ãã ã®ããã©ãŒãã³ã¹: ãã¡ã€ã«ã·ã¹ãã ã®èªã¿åãé床ãé ããšãã¢ãžã¥ãŒã«ãã¡ã€ã«ã®ç¹å®ãšèªã¿åãã«ãããæéã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
ã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ãåæãã
ã¢ãžã¥ãŒã«ã°ã©ããæé©åããåã«ãã©ãã«ããã«ããã¯ãããããçè§£ããããšãéèŠã§ãããã«ãããã»ã¹ã®ããã©ãŒãã³ã¹ãåæããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ãšãã¯ããã¯ããããŸãïŒ
1. ãã«ãæéåæããŒã«
ã»ãšãã©ã®ãã³ãã©ãŒã¯ããã«ãæéãåæããããã®çµã¿èŸŒã¿ããŒã«ãŸãã¯ãã©ã°ã€ã³ãæäŸããŠããŸãïŒ
- Webpack:
--profileãã©ã°ã䜿çšããwebpack-bundle-analyzerãspeed-measure-webpack-pluginã®ãããªããŒã«ã§åºåãåæããŸããwebpack-bundle-analyzerã¯ãã³ãã«ãµã€ãºã®èŠèŠçãªè¡šçŸãæäŸããspeed-measure-webpack-pluginã¯ãã«ãããã»ã¹ã®åãã§ãŒãºã§è²»ããããæéã瀺ããŸãã - Rollup:
--perfãã©ã°ã䜿çšããŠããã©ãŒãã³ã¹ã¬ããŒããçæããŸãããã®ã¬ããŒãã¯ãã¢ãžã¥ãŒã«è§£æ±ºã倿ãå«ããã³ãã«ããã»ã¹ã®å段éã§è²»ããããæéã«é¢ããè©³çŽ°ãªæ å ±ãæäŸããŸãã - Parcel: Parcelã¯ã³ã³ãœãŒã«ã«ãã«ãæéãèªåçã«è¡šç€ºããŸãããã詳现ãªåæã®ããã«ã¯
--detailed-reportãã©ã°ã䜿çšããããšãã§ããŸãã
ãããã®ããŒã«ã¯ãã©ã®ã¢ãžã¥ãŒã«ãããã»ã¹ãæãæéãèŠããŠãããã«ã€ããŠã®è²ŽéãªæŽå¯ãæäŸããæé©åã®åãçµã¿ã广çã«éäžãããããšãã§ããŸãã
2. ãããã¡ã€ãªã³ã°ããŒã«
ãã©ãŠã¶ã®éçºè ããŒã«ãNode.jsã®ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠããã«ãããã»ã¹ã®ããã©ãŒãã³ã¹ãåæããŸããããã«ãããCPUè² è·ã®é«ãæäœãã¡ã¢ãªãªãŒã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- Node.js Profiler: çµã¿èŸŒã¿ã®Node.jsãããã¡ã€ã©ã
Clinic.jsã®ãããªããŒã«ã䜿çšããŠããã«ãããã»ã¹äžã®CPU䜿çšçãšã¡ã¢ãªå²ãåœãŠãåæããŸããããã«ããããã«ãã¹ã¯ãªããããã³ãã©ãŒèšå®ã®ããã«ããã¯ãç¹å®ã§ããŸãã - ãã©ãŠã¶éçºè ããŒã«: ãã©ãŠã¶ã®éçºè ããŒã«ã®ããã©ãŒãã³ã¹ã¿ãã䜿çšããŠããã«ãããã»ã¹ã®ãããã¡ã€ã«ãèšé²ããŸããããã«ãããå®è¡æéã®é·ã颿°ãéå¹çãªæäœãç¹å®ã§ããŸãã
3. ã«ã¹ã¿ã ãã®ã³ã°ãšã¡ããªã¯ã¹
ãã«ãããã»ã¹ã«ã«ã¹ã¿ã ãã®ã³ã°ãšã¡ããªã¯ã¹ã远å ããŠãã¢ãžã¥ãŒã«è§£æ±ºãã³ãŒã倿ãªã©ã®ç¹å®ã®ã¿ã¹ã¯ã§è²»ããããæéã远跡ããŸããããã«ãããã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ã«é¢ããããè©³çŽ°ãªæŽå¯ãåŸãããšãã§ããŸãã
äŸãã°ãã«ã¹ã¿ã ã®Webpackãã©ã°ã€ã³ã§ã¢ãžã¥ãŒã«è§£æ±ºããã»ã¹ã®åšãã«ç°¡åãªã¿ã€ããŒã远å ããŠãåã¢ãžã¥ãŒã«ã®è§£æ±ºã«ãããæéãæž¬å®ã§ããŸãããã®ããŒã¿ã¯éèšã»åæãããé ãã¢ãžã¥ãŒã«è§£æ±ºãã¹ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
æé©åæŠç¥
ã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ããã«ããã¯ãç¹å®ããããäŸåé¢ä¿è§£æ±ºã®é床ãšå šäœçãªãã«ãããã©ãŒãã³ã¹ãåäžãããããã«ãããŸããŸãªæé©åæŠç¥ãé©çšã§ããŸãã
1. ã¢ãžã¥ãŒã«è§£æ±ºã®æé©å
ã¢ãžã¥ãŒã«è§£æ±ºã¯ãã€ã³ããŒãæãæ€åºããããšãã«æ£ããã¢ãžã¥ãŒã«ãã¹ãèŠã€ããããã»ã¹ã§ãããã®ããã»ã¹ãæé©åããããšã§ããã«ãæéãå€§å¹ ã«æ¹åã§ããŸãã
- ç¹å®ã®ã€ã³ããŒããã¹ã䜿çšãã:
../../moduleã®ãããªçžå¯Ÿçãªã€ã³ããŒããã¹ã®äœ¿çšãé¿ããŸãã代ããã«ã絶察ãã¹ã䜿çšããããã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ãèšå®ããŠã€ã³ããŒãããã»ã¹ãç°¡çŽ åããŸããäŸãã°ã../../../components/Buttonã®ä»£ããã«@components/Buttonã䜿çšããæ¹ãã¯ããã«å¹ççã§ãã - ã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ã®èšå®: ãã³ãã©ãŒèšå®ã§ã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ã䜿çšããŠãããçãèªã¿ãããã€ã³ããŒããã¹ãäœæããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³å
šäœã®ã€ã³ããŒããã¹ãæŽæ°ããããšãªããã³ãŒããç°¡åã«ãªãã¡ã¯ã¿ãªã³ã°ã§ããŸããWebpackã§ã¯ãããã¯
resolve.aliasãªãã·ã§ã³ã䜿çšããŠè¡ãããŸããRollupã§ã¯ã@rollup/plugin-aliasãã©ã°ã€ã³ã䜿çšã§ããŸãã resolve.modulesã®æé©å: Webpackã§ã¯ãresolve.modulesãªãã·ã§ã³ã¯ã¢ãžã¥ãŒã«ãæ€çŽ¢ãããã£ã¬ã¯ããªãæå®ããŸãããã®ãªãã·ã§ã³ãæ£ããèšå®ãããå¿ èŠãªãã£ã¬ã¯ããªã®ã¿ãå«ãŸããŠããããšã確èªããŠãã ãããäžèŠãªãã£ã¬ã¯ããªãå«ãããšãã¢ãžã¥ãŒã«è§£æ±ºããã»ã¹ãé ããªãå¯èœæ§ããããããé¿ããŠãã ãããresolve.extensionsã®æé©å:resolve.extensionsãªãã·ã§ã³ã¯ãã¢ãžã¥ãŒã«ã解決ããéã«è©Šè¡ãããã¡ã€ã«æ¡åŒµåãæå®ããŸããæãäžè¬çãªæ¡åŒµåãæåã«ãªã¹ããããŠããããšã確èªããŠãã ãããããã«ãããã¢ãžã¥ãŒã«è§£æ±ºã®é床ãåäžããŸããresolve.symlinks: falseã®äœ¿çšïŒæ³šææ·±ãïŒ: ã·ã³ããªãã¯ãªã³ã¯ã解決ããå¿ èŠããªãå Žåããã®ãªãã·ã§ã³ãç¡å¹ã«ãããšããã©ãŒãã³ã¹ãåäžããããšããããŸãããã ããã·ã³ããªãã¯ãªã³ã¯ã«äŸåããç¹å®ã®ã¢ãžã¥ãŒã«ãå£ããå¯èœæ§ãããããšã«æ³šæããŠãã ããããããæå¹ã«ããåã«ããããžã§ã¯ããžã®åœ±é¿ãçè§£ããŠãã ããã- ãã£ãã·ã¥ã®æŽ»çš: ãã³ãã©ãŒã®ãã£ãã·ã¥ã¡ã«ããºã ãé©åã«èšå®ãããŠããããšã確èªããŠãã ãããWebpackãRollupãParcelã¯ãã¹ãŠçµã¿èŸŒã¿ã®ãã£ãã·ã¥æ©èœãåããŠããŸããäŸãã°ãWebpackã¯ããã©ã«ãã§ãã¡ã€ã«ã·ã¹ãã ãã£ãã·ã¥ã䜿çšããããŸããŸãªç°å¢ã«åãããŠããã«ã«ã¹ã¿ãã€ãºã§ããŸãã
2. 埪ç°äŸåã®æé€
埪ç°äŸåã¯ãããã©ãŒãã³ã¹ã®åé¡ãäºæããªãåäœã«ã€ãªããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³å ã®åŸªç°äŸåãç¹å®ããæé€ããŸãã
- äŸåé¢ä¿åæããŒã«ã®äœ¿çš:
madgeã®ãããªããŒã«ã¯ãã³ãŒãããŒã¹å ã®åŸªç°äŸåãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã - ã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°: 埪ç°äŸåãè§£æ¶ããããã«ã³ãŒããåæ§ç¯ããŸããããã«ã¯ãå ±ææ©èœãå¥ã®ã¢ãžã¥ãŒã«ã«ç§»åããããäŸåæ§ã®æ³šå ¥ã䜿çšãããããããšãå«ãŸããå ŽåããããŸãã
- é å»¶èªã¿èŸŒã¿ã®æ€èš: å Žåã«ãã£ãŠã¯ãé å»¶èªã¿èŸŒã¿ã䜿çšããŠåŸªç°äŸåãè§£æ¶ã§ããŸããããã¯ãã¢ãžã¥ãŒã«ãå¿ èŠã«ãªã£ããšãã«ã®ã¿èªã¿èŸŒãããšã§ãåæãã«ãããã»ã¹äžã«åŸªç°äŸåã解決ãããã®ãé²ããŸãã
3. äŸåé¢ä¿ã®æé©å
äŸåé¢ä¿ã®æ°ãšãµã€ãºã¯ãã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªè€éããæžããããã«ãäŸåé¢ä¿ãæé©åããŸãã
- æªäœ¿çšã®äŸåé¢ä¿ã®åé€: ã¢ããªã±ãŒã·ã§ã³ã§äœ¿ãããªããªã£ãäŸåé¢ä¿ãç¹å®ããŠåé€ããŸãã
- 軜éãªä»£æ¿ææ®µã®äœ¿çš: ãã倧ããªäŸåé¢ä¿ã®ä»£ããã«ã軜éãªä»£æ¿ææ®µã®äœ¿çšãæ€èšããŸããäŸãã°ãå€§èŠæš¡ãªãŠãŒãã£ãªãã£ã©ã€ãã©ãªããããå°ãããç¹å®ã®æ©èœã«çŠç¹ãåœãŠãã©ã€ãã©ãªã«çœ®ãæããããšãã§ãããããããŸããã
- äŸåé¢ä¿ã®ããŒãžã§ã³ã®æé©å: ã¯ã€ã«ãã«ãŒãã®ããŒãžã§ã³ç¯å²ã«é Œãã®ã§ã¯ãªããäŸåé¢ä¿ã®ç¹å®ã®ããŒãžã§ã³ã䜿çšããŸããããã«ãããäºæããªãç Žå£ç倿Žãé²ããç°ãªãç°å¢éã§äžè²«ããåäœãä¿èšŒã§ããŸãããã®ããã«ã¯ãããã¯ãã¡ã€ã«ïŒpackage-lock.jsonãyarn.lockïŒã®äœ¿çšã*äžå¯æ¬ *ã§ãã
- äŸåé¢ä¿ã®ç£æ»: ã»ãã¥ãªãã£è匱æ§ãå€ãããã±ãŒãžããªããã宿çã«äŸåé¢ä¿ãç£æ»ããŸããããã«ãããã»ãã¥ãªãã£ãªã¹ã¯ãé²ããäŸåé¢ä¿ã®ææ°ããŒãžã§ã³ã䜿çšããŠããããšã確èªã§ããŸãã
npm auditãyarn auditã®ãããªããŒã«ã圹ç«ã¡ãŸãã
4. ã³ãŒãåå²
ã³ãŒãåå²ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããè€æ°ã®å°ããªãã³ãã«ã«åå²ãããªã³ããã³ãã§èªã¿èŸŒãããšãã§ããŸããããã«ãããåæèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åãããã¢ãžã¥ãŒã«ã°ã©ãã®å šäœçãªè€éãã軜æžãããŸãã
- ã«ãŒãããŒã¹ã®åå²: ã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã«ãŒãã«åºã¥ããŠã³ãŒããåå²ããŸããããã«ããããŠãŒã¶ãŒã¯çŸåšã®ã«ãŒãã«å¿ èŠãªã³ãŒãã®ã¿ãããŠã³ããŒãã§ããŸãã
- ã³ã³ããŒãã³ãããŒã¹ã®åå²: ã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã³ã³ããŒãã³ãã«åºã¥ããŠã³ãŒããåå²ããŸããããã«ãããã³ã³ããŒãã³ãããªã³ããã³ãã§èªã¿èŸŒã¿ãåæèªã¿èŸŒã¿æéãççž®ã§ããŸãã
- ãã³ããŒåå²: ãã³ããŒã³ãŒãïŒãµãŒãããŒãã£ã©ã€ãã©ãªïŒãå¥ã®ãã³ãã«ã«åå²ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã³ãŒãããã倿Žãããå¯èœæ§ãäœãããããã³ããŒã³ãŒããåå¥ã«ãã£ãã·ã¥ã§ããŸãã
- åçã€ã³ããŒã: åçã€ã³ããŒãïŒ
import()ïŒã䜿çšããŠãã¢ãžã¥ãŒã«ããªã³ããã³ãã§èªã¿èŸŒã¿ãŸããããã«ãããå¿ èŠãªãšãã«ã®ã¿ã¢ãžã¥ãŒã«ãèªã¿èŸŒã¿ãåæèªã¿èŸŒã¿æéãççž®ããã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
5. ããªãŒã·ã§ã€ãã³ã°
ããªãŒã·ã§ã€ãã³ã°ã¯ããã³ãã«ããã»ã¹äžã«ãããã³ãŒãïŒæªäœ¿çšã®ãšã¯ã¹ããŒãïŒãæé€ããŸããããã«ãããæçµçãªãã³ãã«ãµã€ãºãåæžãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžããŸãã
- ESã¢ãžã¥ãŒã«ã®äœ¿çš: CommonJSã¢ãžã¥ãŒã«ïŒ
requireãšmodule.exportsïŒã®ä»£ããã«ESã¢ãžã¥ãŒã«ïŒimportãšexportïŒã䜿çšããŸããESã¢ãžã¥ãŒã«ã¯éçã«åæå¯èœã§ããããããã³ãã©ãŒã¯å¹æçã«ããªãŒã·ã§ã€ãã³ã°ãå®è¡ã§ããŸãã - å¯äœçšãé¿ãã: ã¢ãžã¥ãŒã«å ã®å¯äœçšãé¿ããŸããå¯äœçšãšã¯ãã°ããŒãã«ãªç¶æ ã倿Žãããããã®ä»ã®æå³ããªãçµæãããããæäœã®ããšã§ããå¯äœçšã®ããã¢ãžã¥ãŒã«ã¯å¹æçã«ããªãŒã·ã§ã€ãã³ã°ã§ããŸããã
- ã¢ãžã¥ãŒã«ãå¯äœçšãªããšããŠããŒã¯ãã: å¯äœçšã®ãªãã¢ãžã¥ãŒã«ãããå Žåã
package.jsonãã¡ã€ã«ã§ãã®ããã«ããŒã¯ã§ããŸããããã«ããããã³ãã©ãŒã¯ãã广çã«ããªãŒã·ã§ã€ãã³ã°ãå®è¡ã§ããŸããããã±ãŒãžå ã®ãã¹ãŠã®ãã¡ã€ã«ãå¯äœçšãªãã§ããããšã瀺ãã«ã¯ãpackage.jsonã«"sideEffects": falseã远å ããŸããäžéšã®ãã¡ã€ã«ã®ã¿ã«å¯äœçšãããå Žåã¯ãå¯äœçšããããã¡ã€ã«ã®é åãæäŸã§ããŸããäŸïŒ"sideEffects": ["./src/hasSideEffects.js"]ã
6. ããŒã«èšå®ã®æé©å
ãã³ãã©ãŒãé¢é£ããŒã«ã®èšå®ã¯ãã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãããã«ãããã»ã¹ã®å¹çãåäžãããããã«ãããŒã«èšå®ãæé©åããŸãã
- ææ°ããŒãžã§ã³ã®äœ¿çš: ãã³ãã©ãŒãé¢é£ããŒã«ã®ææ°ããŒãžã§ã³ã䜿çšããŸããæ°ããããŒãžã§ã³ã«ã¯ãããã©ãŒãã³ã¹ã®æ¹åããã°ä¿®æ£ãå«ãŸããŠããããšããããããŸãã
- 䞊ååŠçã®èšå®: ãã³ãã©ãŒãè€æ°ã®ã¹ã¬ããã䜿çšããŠãã«ãããã»ã¹ã䞊ååããããã«èšå®ããŸããããã«ãããç¹ã«ãã«ãã³ã¢ãã·ã³ã§ã¯ãã«ãæéã倧å¹
ã«ççž®ãããŸããäŸãã°ãWebpackã§ã¯ãã®ç®çã®ããã«
thread-loaderã䜿çšã§ããŸãã - 倿ãæå°éã«æãã: ãã«ãããã»ã¹äžã«ã³ãŒãã«é©çšãããå€æã®æ°ãæå°éã«æããŸãã倿ã¯èšç®ã³ã¹ããé«ãããã«ãããã»ã¹ãé ãããå¯èœæ§ããããŸããäŸãã°ãBabelã䜿çšããŠããå Žåããã©ã³ã¹ãã€ã«ãå¿ èŠãªã³ãŒãã®ã¿ããã©ã³ã¹ãã€ã«ããŸãã
- é«éãªãããã¡ã€ã¢ã®äœ¿çš:
terserãesbuildã®ãããªé«éãªãããã¡ã€ã¢ã䜿çšããŠã³ãŒããæå°åããŸããæå°åã«ããã³ãŒãã®ãµã€ãºãåæžãããã¢ããªã±ãŒã·ã§ã³ã®èªã¿èŸŒã¿æéãæ¹åãããŸãã - ãã«ãããã»ã¹ã®ãããã¡ã€ãªã³ã°: 宿çã«ãã«ãããã»ã¹ããããã¡ã€ãªã³ã°ããŠããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããŒã«èšå®ãæé©åããŸãã
7. ãã¡ã€ã«ã·ã¹ãã ã®æé©å
ãã¡ã€ã«ã·ã¹ãã ã®é床ã¯ãã¢ãžã¥ãŒã«ãã¡ã€ã«ã®ç¹å®ãšèªã¿åãã«ãããæéã«åœ±é¿ãäžããå¯èœæ§ããããŸããã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ãåäžãããããã«ããã¡ã€ã«ã·ã¹ãã ãæé©åããŸãã
- é«éãªã¹ãã¬ãŒãžããã€ã¹ã®äœ¿çš: ãããžã§ã¯ããã¡ã€ã«ãä¿åããããã«SSDã®ãããªé«éãªã¹ãã¬ãŒãžããã€ã¹ã䜿çšããŸããããã«ããããã¡ã€ã«ã·ã¹ãã æäœã®é床ãå€§å¹ ã«åäžããŸãã
- ãããã¯ãŒã¯ãã©ã€ããé¿ãã: ãããžã§ã¯ããã¡ã€ã«ã«ãããã¯ãŒã¯ãã©ã€ãã䜿çšããªãã§ãã ããããããã¯ãŒã¯ãã©ã€ãã¯ããŒã«ã«ã¹ãã¬ãŒãžãããå€§å¹ ã«é ããªãå¯èœæ§ããããŸãã
- ãã¡ã€ã«ã·ã¹ãã ãŠã©ããã£ãŒã®æé©å: ãã¡ã€ã«ã·ã¹ãã ãŠã©ããã£ãŒã䜿çšããŠããå Žåãå¿ èŠãªãã¡ã€ã«ãšãã£ã¬ã¯ããªã®ã¿ãç£èŠããããã«èšå®ããŸããç£èŠãããã¡ã€ã«ãå€ããããšããã«ãããã»ã¹ãé ããªãå¯èœæ§ããããŸãã
- RAMãã£ã¹ã¯ã®æ€èš: éåžžã«å€§èŠæš¡ãªãããžã§ã¯ãã§é »ç¹ã«ãã«ããè¡ãå Žåã
node_modulesãã©ã«ããRAMãã£ã¹ã¯ã«é 眮ããããšãæ€èšããŠãã ãããããã«ããããã¡ã€ã«ã¢ã¯ã»ã¹é床ãåçã«åäžããŸãããååãªRAMãå¿ èŠã§ãã
å®äžçã§ã®äŸ
ãããã®æé©åæŠç¥ãã©ã®ããã«é©çšãããããããã€ãã®å®äžçã®äŸãèŠãŠã¿ãŸãããïŒ
äŸ1: Webpackã䜿çšããReactã¢ããªã±ãŒã·ã§ã³ã®æé©å
ReactãšWebpackã§æ§ç¯ãããå€§èŠæš¡ãªeã³ããŒã¹ã¢ããªã±ãŒã·ã§ã³ããé ããã«ãæéã«æ©ãŸãããŠããŸããããã«ãããã»ã¹ãåæããçµæãã¢ãžã¥ãŒã«è§£æ±ºãäž»èŠãªããã«ããã¯ã§ããããšã倿ããŸããã
解決ç:
webpack.config.jsã§ã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ãèšå®ããã€ã³ããŒããã¹ãç°¡çŽ åããŸãããresolve.modulesãšresolve.extensionsãªãã·ã§ã³ãæé©åããŸããã- Webpackã§ãã£ãã·ã¥ãæå¹ã«ããŸããã
çµæ: ãã«ãæéã30%åæžãããŸããã
äŸ2: Angularã¢ããªã±ãŒã·ã§ã³ã§ã®åŸªç°äŸåã®æé€
ããAngularã¢ããªã±ãŒã·ã§ã³ã§ãäºæããªãåäœãšããã©ãŒãã³ã¹ã®åé¡ãçºçããŠããŸãããmadgeã䜿çšãããšãããã³ãŒãããŒã¹ã«ããã€ãã®åŸªç°äŸåãããããšã倿ããŸããã
解決ç:
- 埪ç°äŸåãè§£æ¶ããããã«ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŸããã
- å ±ææ©èœãå¥ã®ã¢ãžã¥ãŒã«ã«ç§»åããŸããã
çµæ: ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããäºæããªãåäœãè§£æ¶ãããŸããã
äŸ3: Vue.jsã¢ããªã±ãŒã·ã§ã³ã§ã®ã³ãŒãåå²ã®å®è£
ããVue.jsã¢ããªã±ãŒã·ã§ã³ã¯åæãã³ãã«ãµã€ãºã倧ãããèªã¿èŸŒã¿æéãé ããªã£ãŠããŸãããåæèªã¿èŸŒã¿æéãæ¹åããããã«ãã³ãŒãåå²ãå®è£ ãããŸããã
解決ç:
çµæ: åæèªã¿èŸŒã¿æéã50%åæžãããŸããã
çµè«
JavaScriptã¢ãžã¥ãŒã«ã°ã©ãã®æé©åã¯ãããã©ãŒãã³ã¹ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ãæäŸããããã«äžå¯æ¬ ã§ããã¢ãžã¥ãŒã«ã°ã©ãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããèŠå ãçè§£ãããã«ãããã»ã¹ãåæãã广çãªæé©åæŠç¥ãé©çšããããšã§ãäŸåé¢ä¿è§£æ±ºã®é床ãšå šäœçãªãã«ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããããã¯ãéçºãµã€ã¯ã«ã®ççž®ãéçºè ã®çç£æ§åäžããããŠããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸãã
ãã«ãããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããã¢ããªã±ãŒã·ã§ã³ã®é²åã«åãããŠæé©åæŠç¥ãé©å¿ãããããšãå¿ããªãã§ãã ãããã¢ãžã¥ãŒã«ã°ã©ãã®æé©åã«æè³ããããšã§ãJavaScriptã¢ããªã±ãŒã·ã§ã³ãé«éã§å¹ççããã€ã¹ã±ãŒã©ãã«ã§ããããšãä¿èšŒã§ããŸãã