JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ããŒããã¹ããšã¹ãã¬ã¹ãã¹ãã®éèŠãªéããè§£æããã¹ã±ãŒã©ãã«ã§å埩åã®ããã·ã¹ãã ãã°ããŒãã«ã«æ§ç¯ããããã®æ¹æ³è«ãããŒã«ããã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
JavaScript ããã©ãŒãã³ã¹ ãã¹ã: ããŒã ãã¹ã vs. ã¹ãã¬ã¹ãã¹ã
仿¥ã®çžäºæ¥ç¶ãããããžã¿ã«ç°å¢ã«ãããŠãWeb ã¢ããªã±ãŒã·ã§ã³ã®é床ãšå¿çæ§ã¯åãªãæ©èœã§ã¯ãªããåºæ¬çãªæåŸ ã§ããäžçäžã®ãŠãŒã¶ãŒã¯ã·ãŒã ã¬ã¹ãªãšã¯ã¹ããªãšã³ã¹ãæ±ããŠãããèªã¿èŸŒã¿ã®é ãããŸãã¯å¿çããªãã¢ããªã±ãŒã·ã§ã³ã¯ãåçã®æå€±ããã©ã³ãè©äŸ¡ã®äœäžããŠãŒã¶ãŒã®äžæºã«ã€ãªããå¯èœæ§ããããŸããããã³ããšã³ããšãNode.js ã䜿çšããŠããã¯ãšã³ãã§ããŸããŸãæ¯é çã«ãªã£ãŠãã JavaScript ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠãããŸããŸãªæ¡ä»¶äžã§ã®å ç¢ãªããã©ãŒãã³ã¹ã®ç¢ºä¿ã¯æéèŠã§ããããã§ãç¹æ®ãªããã©ãŒãã³ã¹ ãã¹ãæ¹æ³è«ãç¹ã«ããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ããç»å ŽããŸãã
ãã°ãã°å矩èªãšããŠäœ¿çšããããã䌌ããã®ãšããŠèŠããããããŸãããããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ãã¯ããããç°ãªãç®çãæãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ç¹æ§ã®ç°ãªãåŽé¢ãæããã«ããŸãããã®ãã¥ã¢ã³ã¹ãçè§£ããããšã¯ã髿§èœã§ã¹ã±ãŒã©ãã«ããã€å埩åã®ãã JavaScript ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«åªããããããã°ããŒãã«éçºããŒã ã«ãšã£ãŠäžå¯æ¬ ã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ãåæ¹æ³è«ãæ·±ãæãäžãããã®ç®çãææ³ãããŒã«ãããã³å®çšçãªã¢ããªã±ãŒã·ã§ã³ãæ¯èŒããJavaScript ãšã³ã·ã¹ãã ã«å¹æçã«å®è£ ããæ¹æ³ã«ã€ããŠã®ã°ããŒãã«ãªèŠç¹ãæäŸããŸãã
JavaScript ããã©ãŒãã³ã¹ ãã¹ãã®äžå¯æ¬ ãªããªãã
詳现ãæãäžããåã«ãææ°ã® JavaScript ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠããã©ãŒãã³ã¹ ãã¹ããè²ããªãçç±ã確ç«ããŸãããã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšç¶æçã®åäž: æ°ããªç§ã®éãããŠãŒã¶ãŒã®èªèã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã調æ»ã«ãããšããŠãŒã¶ãŒã¯é ã Web ãµã€ããã¢ããªã±ãŒã·ã§ã³ãæŸæ£ããããšãäžè²«ããŠç€ºãããŠããŸããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠã倿§ãªãããã¯ãŒã¯æ¡ä»¶ã¯ããã©ãŒãã³ã¹ãããã«éèŠã«ããŸããé«éã§å¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®ãšã³ã²ãŒãžã¡ã³ããç¶æããå蚪åãä¿ããŸãã
- ããžãã¹ãžã®åœ±é¿ãšåçä¿è·: ããã©ãŒãã³ã¹ã®äœäžã¯ãã³ã³ããŒãžã§ã³ã®æžå°ã売äžã®äœäžãåºååçã®äœäžã«çŽæ¥ã€ãªãããŸããããšãã°ãe ã³ããŒã¹ã®å·šå€§äŒæ¥ã¯ãããŒãžã®èªã¿èŸŒã¿æéã®ããããªå¢å ã§ãããæ°çŸäžãã«ã®æå€±ãå ±åããŠããŸããããã©ãŒãã³ã¹ ãã¹ãã¯ããããã®éèŠãªããžãã¹ ã¡ããªãã¯ãä¿è·ããŸãã
- ã¹ã±ãŒã©ããªãã£ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã®æé©å: ãŠãŒã¶ãŒ ããŒã¹ãã°ããŒãã«ã«æ¡å€§ããã«ã€ããŠãã¢ããªã±ãŒã·ã§ã³ã¯å¹ççã«ã¹ã±ãŒãªã³ã°ããå¿ èŠããããŸããããã©ãŒãã³ã¹ ãã¹ãã¯ãéå°ãŸãã¯éå°ãªããããžã§ãã³ã°ãåé¿ããªãããäºæ³ããããã©ãã£ãã¯ã®æ¥å¢ãåŠçããããã«å¿ èŠãªæé©ãªã€ã³ãã©ã¹ãã©ã¯ãã£ãç¹å®ããã®ã«åœ¹ç«ã¡ãå€§å¹ ãªéçšã³ã¹ããç¯çŽã§ããŸãã
- ãªã¹ã¯è»œæžãšä¿¡é Œæ§: äºæããªããã©ãã£ãã¯ã®æ¥å¢ãããŒã±ãã£ã³ã° ãã£ã³ããŒã³ãããã«ã¯ã»ãã¥ãªã㣠ã€ã³ã·ãã³ãããããã©ãŒãã³ã¹ã®è匱æ§ãé²åããå¯èœæ§ããããŸããããã¢ã¯ãã£ããªãã¹ãã¯ãæ¬çªç°å¢ã«åœ±é¿ãäžããåã«ãããã®ãªã¹ã¯ãç¹å®ãã軜æžããã®ã«åœ¹ç«ã¡ããã¬ãã·ã£ãŒäžã§ãã¢ããªã±ãŒã·ã§ã³ãä¿¡é Œæ§ãç¶æããããšãä¿èšŒããŸãã
- ç«¶äºåªäœæ§: æ··éããåžå Žã§ã¯ãåªããããã©ãŒãã³ã¹ãéèŠãªå·®å¥åèŠå ãšãªãå¯èœæ§ããããŸããé«éã§ä¿¡é Œæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãäžè²«ããŠæäŸããã¢ããªã±ãŒã·ã§ã³ã¯ãç«¶åä»ç€Ÿãããåªäœã«ç«ã€ããšããããããŸãã
- ããã©ãŒãã³ã¹ ããã«ããã¯ã®ç¹å®: JavaScript ã¢ããªã±ãŒã·ã§ã³ãç¹ã«è€éãªãã¬ãŒã ã¯ãŒã¯ã Node.js ãã€ã¯ããµãŒãã¹ã掻çšããŠãããã®ã¯ã埮åŠãªããã©ãŒãã³ã¹ã®åé¡ãæ±ããŠããå¯èœæ§ããããŸãããããã«ã¯ãéå¹ççãªã¢ã«ãŽãªãºã ãæé©åãããŠããªãããŒã¿ããŒã¹ ã¯ãšãªãé ã API çµ±åããŸãã¯éå°ãªã¯ã©ã€ã¢ã³ããµã€ã ã¬ã³ããªã³ã°ãå«ãŸããå ŽåããããŸããããã©ãŒãã³ã¹ ãã¹ãã¯ããããã®ããã«ããã¯ãç¹å®ããŠè§£æ±ºããããã«å¿ èŠãªããŒã¿ãæäŸããŸãã
ããã©ãŒãã³ã¹ ãã¹ãã®åºæ¬ãçè§£ãã
ãã®æ¬è³ªã«ãããŠãããã©ãŒãã³ã¹ ãã¹ãã¯ãç¹å®ã®ã¯ãŒã¯ããŒãäžã§ã®ã·ã¹ãã ã®å¿çæ§ãšå®å®æ§ãšããç¹ã§ããã©ãŒãã³ã¹ãã©ã®ããã«æ©èœãããã倿ããããšãç®çãšããéæ©èœãã¹ãã®å®è·µã§ããããã¯ããŠãŒã¶ãŒã®èŠæ±ãåŠçããäžã§ã®ã·ã¹ãã ã®ã¢ãŒããã¯ãã£ãã€ã³ãã©ã¹ãã©ã¯ãã£ãããã³ã³ãŒãã®å¹æã枬å®ããããšã§ãã
äž»èŠãªããã©ãŒãã³ã¹ ã¡ããªãã¯
ç¹å®ã®ãã¹ãã®çš®é¡ã«é¢ä¿ãªããããã€ãã®ã¡ããªãã¯ãæ®éçã«èгå¯ãããŸãã
- å¿çæé: èŠæ±ãéä¿¡ãããŠããå¿çãåä¿¡ããããŸã§ã®åèšæéãããã«ã¯ããããã¯ãŒã¯é å»¶ããµãŒããŒåŠçæéãããŒã¿ããŒã¹ã®ããåããå«ãŸããŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ååžãçè§£ããããã«ãå¹³åãäžå€®å€ã90 ããŒã»ã³ã¿ã€ã« (P90)ã95 ããŒã»ã³ã¿ã€ã« (P95)ãããã³ 99 ããŒã»ã³ã¿ã€ã« (P99) ã«çްååãããããšããããããŸãã
- ã¹ã«ãŒããã: åäœæéãããã«ã·ã¹ãã ã«ãã£ãŠåŠçãããèŠæ±ããã©ã³ã¶ã¯ã·ã§ã³ããŸãã¯æäœã®æ° (äŸ: 1 ç§ãããã®èŠæ±æ°ã1 åãããã®ãã©ã³ã¶ã¯ã·ã§ã³æ°)ã
- ãšã©ãŒç: ãšã©ãŒãçºçãããèŠæ±ã®å²åãè² è·äžã§ã®é«ããšã©ãŒçã¯ãé倧ãªåé¡ã瀺ããŸãã
- ãªãœãŒã¹äœ¿çšç: CPU 䜿çšçãã¡ã¢ãªæ¶è²»éããã£ã¹ã¯ I/Oããããã¯ãŒã¯ I/O ãªã©ã®ãµãŒããŒãµã€ã ãªãœãŒã¹ã®ç£èŠãããã³ããšã³ã JavaScript ã¢ããªã±ãŒã·ã§ã³ã®å Žåããã©ãŠã¶ã§ã® CPU 䜿çšçãã¡ã¢ãªããããã¯ãŒã¯ ã¢ã¯ãã£ããã£ãªã©ã®ã¯ã©ã€ã¢ã³ããµã€ã ã¡ããªãã¯ãéèŠã§ãã
- é å»¶: ã·ã¹ãã ã«ãããåå ãšçµæã®éã®æéé å»¶ãå€ãã®å Žåããããã¯ãŒã¯é å»¶ãæããŸãã
- åæå®è¡æ§: ã·ã¹ãã ãäžåºŠã«åŠçã§ããåæãŠãŒã¶ãŒãŸãã¯èŠæ±ã®æ°ã
ãããã®åºæ¬ã確ç«ããäžã§ãããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ãã®å¥ã ã®äžçãæ¢ã£ãŠã¿ãŸãããã
詳现: ããŒã ãã¹ã
ããŒã ãã¹ãã¯ãäºæ³ããããŸãã¯äºæž¬ããããŠãŒã¶ãŒè² è·äžã§ã®ã·ã¹ãã ã®åäœã倿ããããšãç®çãšããããã©ãŒãã³ã¹ ãã¹ãã®äžçš®ã§ãããã®äž»ãªç®æšã¯ãã¢ããªã±ãŒã·ã§ã³ãããã©ãŒãã³ã¹ãå®å®æ§ã®å€§å¹ ãªäœäžãªãã«ãäºæž¬ãããåæãŠãŒã¶ãŒæ°ãšãã©ã³ã¶ã¯ã·ã§ã³æ°ãåŠçã§ããããšãæ€èšŒããããšã§ããã¢ããªã±ãŒã·ã§ã³ã®æãå¿ããæ¥ããããã¯å¹³åçãªæ¥ããããã¯ãã®äž¡æ¥ã®æºåãæŽããæé©ãªããã©ãŒãã³ã¹ãçºæ®ããããšãä¿èšŒããããšã ãšèããŠãã ããã
ããŒã ãã¹ãã®ç®ç
- äºæž¬ãããè² è·äžã§ã®ã·ã¹ãã å®å®æ§ã®æ€èšŒ: æãåºæ¬çãªç®çã¯ã JavaScript ã¢ããªã±ãŒã·ã§ã³ããçŸå®çãªæ°ã®ãŠãŒã¶ãŒãåæã«ããåãããŠãããšãã«ãå®å®ããŠæ©èœãç¶ããããšã確èªããããšã§ãã
- ããã©ãŒãã³ã¹ ããã«ããã¯ã®ç¹å®: éåžžããé«è² è·ã®ã¯ãŒã¯ããŒãäžã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äžéšã®éšå (äŸ: ç¹å®ã® API ãšã³ããã€ã³ããããŒã¿ããŒã¹ ã¯ãšãªãè€éãªã¯ã©ã€ã¢ã³ããµã€ã ã¹ã¯ãªãã) ãé ããªãå¯èœæ§ããããŸããããŒã ãã¹ãã¯ãå®éã®ãŠãŒã¶ãŒã«åœ±é¿ãäžããåã«ããããã®åŒ±ããªã³ã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ã€ã³ãã©ã¹ãã©ã¯ãã£å®¹éã®æ€èšŒ: çŸåšã®ãµãŒããŒæ§æãããŒã¿ããŒã¹ããããã¯ãŒã¯ãããã³ãã®ä»ã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ã³ã³ããŒãã³ãããäºæ³ããããã©ãã£ãã¯ãåŠçããã®ã«é©åã«ãµã€ãžã³ã°ãããŠããããšã確èªããã®ã«åœ¹ç«ã¡ãŸããããã«ããããªãœãŒã¹ã®éå°ãŸãã¯éå°ãªããããžã§ãã³ã°ãé²ããŸãã
- ãµãŒãã¹ ã¬ãã« ã¢ã°ãªãŒã¡ã³ã (SLA) ã³ã³ãã©ã€ã¢ã³ã¹ã®ä¿èšŒ: å€ãã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãå¿çæéã皌åæéãããã³ãšã©ãŒçã«é¢ãã峿 Œãª SLA ããããŸããããŒã ãã¹ãã¯ãã¢ããªã±ãŒã·ã§ã³ãè² è·äžã§ãããã®å¥çŽäžã®çŸ©åãäžè²«ããŠæºãããŠããããšãæ€èšŒããŸãã
- ããŒã¹ã©ã€ã³ ããã©ãŒãã³ã¹: ããã©ãŒãã³ã¹ ããŒã¹ã©ã€ã³ã確ç«ããããšã§ãå°æ¥ã®å€æŽãã¢ããã°ã¬ãŒããçŸåšã®ããã©ãŒãã³ã¹ãšæ¯èŒããæ°ããæ©èœãæé©åããªã°ã¬ãã·ã§ã³ãå°å ¥ããªãããšã確èªã§ããŸãã
- ãµãŒãããŒã㣠API ããã©ãŒãã³ã¹ã®è©äŸ¡: å€ãã® JavaScript ã¢ããªã±ãŒã·ã§ã³ã¯ãå€éš API ã«å€§ããäŸåããŠããŸããããŒã ãã¹ãã¯ããããã®çµ±åãã¹ãã¬ã¹äžã§ã©ã®ããã«æ©èœããããã«ããã¯ã«ãªããã©ãããæããã«ã§ããŸãã
ããŒã ãã¹ãã§æž¬å®ãããäž»èŠãªã¡ããªãã¯
äžè¬çãªããã©ãŒãã³ã¹ ã¡ããªãã¯ãé©çšãããŸãããããŒã ãã¹ãã§ã¯ç¹ã«ä»¥äžã«éç¹ã眮ãããŸãã
- å¹³åå¿çæé (ART): ã¢ããªã±ãŒã·ã§ã³ãèŠæ±ã«å¿çããã®ã«ãããå¹³åæéãããã¯ãå šäœçãªããã©ãŒãã³ã¹ã®äžè¬çãªææšã§ãã
- ããŒã»ã³ã¿ã€ã«å¿çæé (P90ãP95ãP99): ãããã®ã¡ããªãã¯ã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãçè§£ããããã«éèŠã§ããP90 ã¯ãèŠæ±ã® 90% ããã®æéå ã«å®äºããããšãæå³ããå€ãå€ã«ãã£ãŠå¹³åãæªãå¯èœæ§ãããå¹³åã®ã¿ãããçŸå®çãªãã¥ãŒãæäŸããŸããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠã倿§ãªãããã¯ãŒã¯æ¡ä»¶ãèæ ®ãããšããããã®ããŒã»ã³ã¿ã€ã«ã¯ããã«èª¬åŸåããããŸãã
- ã¹ã«ãŒããã (1 ç§ãããã®èŠæ±æ°/ãã©ã³ã¶ã¯ã·ã§ã³æ° - RPS/TPS): ã·ã¹ãã ãåŠçã§ããäœæ¥éãæž¬å®ããŸããè² è·ãå¢å ããã«ã€ããŠã¹ã«ãŒããããã©ã®ããã«å€åããããç£èŠããããšã¯äžå¯æ¬ ã§ãã
- ãšã©ãŒç: äºæ³ãããè² è·äžã§ã®äœããšã©ãŒç (çæ³çã«ã¯ 0%) ã¯ãå®å®æ§ã瀺ããŸããé¡èãªå¢å ã¯åé¡ã瀺åããŸãã
- ãµãŒã㌠ãªãœãŒã¹äœ¿çšç (CPUãã¡ã¢ãªããã£ã¹ã¯ I/Oããããã¯ãŒã¯ I/O): Node.js ãµãŒããŒãããŒã¿ããŒã¹ ãµãŒããŒãããã³ãã®ä»ã®ããã¯ãšã³ã ã³ã³ããŒãã³ãã§ããããç£èŠãããšããªãœãŒã¹ã®ç«¶åã飜åç¶æ ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ããŒã¿ããŒã¹ ããã©ãŒãã³ã¹: ã¯ãšãªå®è¡æéãæ¥ç¶ããŒã«ã®äœ¿çšç¶æ³ãããã¯ç«¶åãªã©ã®ã¡ããªãã¯ã¯ãããŒã¿ããŒã¹ã«å€§ããäŸåããããã¯ãšã³ã JavaScript ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãã
- ã¯ã©ã€ã¢ã³ããµã€ã ã¡ããªã㯠(ããã³ããšã³ã JS ã¢ããªã±ãŒã·ã§ã³ã®å Žå): ãã«ã¹ã¿ãã¯ããšã³ãããŒãšã³ãã®ã·ããªãªããã¹ãããå Žåãååã³ã³ãã³ããã«ãã€ã³ã (FCP)ãæå€§ã³ã³ãã³ããã«ãã€ã³ã (LCP)ãã€ã³ã¿ã©ã¯ãã£ãã«ãªããŸã§ã®æé (TTI)ãããã³åèšãããã¯æé (TBT) ãªã©ã®ã¡ããªãã¯ãéèŠã«ãªããŸãããããã¯ããŠãŒã¶ãŒã JavaScript ã§ã¬ã³ããªã³ã°ãããã³ã³ãã³ããã©ãã ãæ©ã衚瀺ããŠæäœã§ãããã瀺ããŸãã
JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ããŒã ãã¹ãã®ã·ããªãªãšãŠãŒã¹ ã±ãŒã¹
- æ¯æ¥ã®ããŒã¯ãã©ãã£ãã¯ã·ãã¥ã¬ãŒã·ã§ã³: éåžžã®çšŒåæéäžã«äºæ³ãããæãé«ããŠãŒã¶ãŒåæå®è¡æ§ãã·ãã¥ã¬ãŒãããŠãã¹ã ãŒãºãªããã©ãŒãã³ã¹ã確ä¿ããŸãã
- èšç»ãããã€ãã³ããšããã¢ãŒã·ã§ã³: äž»èŠãªããŒã±ãã£ã³ã° ãã£ã³ããŒã³ã補åçºå£²ããã©ãã·ã¥ ã»ãŒã«ããŸãã¯å€§å¹ ãªãã©ãã£ãã¯ã®æ¥å¢ãäºæ³ãããã°ããŒãã«ãªå£ç¯ã€ãã³ã (äŸ: ãã©ãã¯ãã©ã€ããŒããµã€ããŒãã³ããŒãæ§æ£æã»ãŒã«) ã®åã«ãã¹ãããŸãã
- ã·ã¹ãã ã¢ããã°ã¬ãŒããšç§»è¡: æ°ãããœãããŠã§ã¢ ããŒãžã§ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€æŽããŸãã¯ã¯ã©ãŠãç§»è¡ãããã©ãŒãã³ã¹ãäœäžãããªãããšãæ€èšŒããŸãã
- æ°æ©èœã®ããŒã«ã¢ãŠã: ç¹ã«è€é㪠JavaScript ããžãã¯ãŸãã¯æ°ãã API ãšã³ããã€ã³ãã䌎ãæè¿è¿œå ãããæ©èœããæ¢åã®æ©èœã«åœ±é¿ãäžããããšãªããäºæ³ãããè² è·ãåŠçã§ããããšãä¿èšŒããŸãã
- ãã³ãããŒãã³ã°: çŸåšã®ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã以åã®ããŒãžã§ã³ããããã¯ç«¶åä»ç€Ÿãšæ¯èŒããŠãé²æç¶æ³ã远跡ããæ¹åã®äœå°ãããé åãç¹å®ããŸãã
广çãªããŒã ãã¹ãã®æ¹æ³è«ãšæé
äœç³»çãªã¢ãããŒãã«ããã培åºçã§æå³ã®ããçµæãåŸãããŸãã
- ã¹ã³ãŒããšç®çã®å®çŸ©: ãã¹ããããã¢ããªã±ãŒã·ã§ã³ã®éšåãäºæ³ããããŠãŒã¶ãŒè² è·ãããã³ç®çã®ããã©ãŒãã³ã¹ç®æš (äŸ: ã1000 人ã®åæãŠãŒã¶ãŒã«å¯ŸããŠãAPI èŠæ±ã® 95% ã 500 ããªç§ä»¥å ã«å¿çããããšã) ãæç¢ºã«æŠèª¬ããŸãã
- éèŠãªãŠãŒã¶ãŒ ãžã£ãŒããŒã®ç¹å®: ãŠãŒã¶ãŒããã©ãæãé »ç¹ãŸãã¯ããžãã¹äžéèŠãªãã¹ (äŸ: ãã°ã€ã³ãè£œåæ€çŽ¢ãã«ãŒããžã®è¿œå ããã§ãã¯ã¢ãŠããããã·ã¥ããŒã衚瀺) ã«çŠç¹ãåœãŠãŸãã
- ããŒã ãããã¡ã€ã«ã®éçº: ä»®æ³ãŠãŒã¶ãŒæ°ãã©ã³ãã¢ããæé (ãŠãŒã¶ãŒãã©ãã ãéãåå ããã)ãå®åžžç¶æ æé (ããŒã¯è² è·ãç¶æãããæé)ãããã³ 1 ç§ãããã®ãã©ã³ã¶ã¯ã·ã§ã³æ°ã決å®ããŸããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ãèæ ®ããŠãããŸããŸãªãŠãŒã¶ãŒè¡åãå°ççååžãèæ ®ããŸãã
- ãŠãŒã¶ãŒ ã·ããªãªã®ã¹ã¯ãªããäœæ: ããã§ JavaScript ã¢ããªã±ãŒã·ã§ã³ã®è€éããéèŠã«ãªããŸããã¹ã¯ãªããã¯ããŠãŒã¶ãŒ ã¢ã¯ã·ã§ã³ãæ£ç¢ºã«ã·ãã¥ã¬ãŒãããå¿
èŠããããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã
- åçããŒã¿ (äŸ: ã»ãã·ã§ã³ IDãCSRF ããŒã¯ã³) ã®åŠçã
- ãŠãŒã¶ãŒ ã¢ã¯ã·ã§ã³éã®çŸå®çãªé å»¶ (æèæé) ã®ã·ãã¥ã¬ãŒã·ã§ã³ã
- éåæ JavaScript èŠæ± (AJAXãFetch API åŒã³åºã) ã®ç®¡çã
- ãã©ãŠã¶ã®èгç¹ããã®ãã¹ãã®å ŽåãDOM æäœã®ã·ãã¥ã¬ãŒã·ã§ã³ã
- ãã¹ã ããŒã¿ã®æºå: ããŒã¿é¢é£ã®ããã«ããã¯ãå®éã®äœ¿çšç¶æ³ãåæ ããªããã£ãã·ã¥ãããå¿çãåé¿ããããã«ãçŸå®çã§å€æ§ã§ååãªãã¹ã ããŒã¿ã䜿çšããŸãã
- ãã¹ãã®æ§æãšå®è¡: éžæããããŒã ãã¹ã ããŒã«ã«å®çŸ©ãããããŒã ãããã¡ã€ã«ãšã¹ã¯ãªãããæ§æããŸããã©ã€ã ãµãŒãã¹ãžã®å¹²æžãé¿ããããã«ãå°çšã®æ¬çªç°å¢ã«äŒŒãç°å¢ã§ãã¹ããå®è¡ããŸããã°ããŒãã« ãã¹ãã®å Žåãè² è·ãžã§ãã¬ãŒã¿ãå°ççã«åæ£ããããšãæ€èšããŠãã ããã
- çµæã®ç£èŠãšåæ: éåžžã«éèŠã§ãããã¹ãäžããã³ãã¹ãåŸã«ãã¯ã©ã€ã¢ã³ããµã€ã (ããŒã«ã®ã¡ããªãã¯) ãšãµãŒããŒãµã€ã (ã·ã¹ãã ãªãœãŒã¹ãã¢ããªã±ãŒã·ã§ã³ ãã°ãããŒã¿ããŒã¹ ããã©ãŒãã³ã¹) ã®äž¡æ¹ãç£èŠããŸããåŸåãç°åžžãããã³ç¹å®ã®ããã«ããã¯ãæ¢ããŸããã°ã©ããããã·ã¥ããŒããªã©ã®èŠèŠåã¯éåžžã«åœ¹ç«ã¡ãŸãã
- ã¬ããŒããšã€ãã¬ãŒã·ã§ã³: 調æ»çµæãææžåããæ¹åã®æ©äŒãç¹å®ããé¢ä¿è ã«çµæãäŒããŸããä¿®æ£ãå®è£ ããæ¹åãæ€èšŒããããã«åãã¹ãããŸãã
JavaScript ããŒã ãã¹ãã®ããŒã«
ããŒã«ã®éžæã¯ãAPIããã«ãã©ãŠã¶ã®ããåãããŸãã¯ããã¯ãšã³ã Node.js ãµãŒãã¹ããã¹ãããŠãããã©ããã«ããããããç¹å®ã®ããŒãºã«ãã£ãŠç°ãªããŸãã
- Apache JMeter: åºç¯ãªãããã³ã«ããã¹ãã§ãããæçãããªãŒãã³ãœãŒã¹ ããŒã«ã匷åã§ãããäž»ã«ãããã³ã« ã¬ãã«ã§åäœãããããè€éãªã¯ã©ã€ã¢ã³ããµã€ã JavaScript ã€ã³ã¿ã©ã¯ã·ã§ã³ã®ã¹ã¯ãªããäœæã¯å°é£ãªå ŽåããããŸããNode.js API ãã¹ãã«æé©ã§ãã
- k6: Grafana Labs ã«ãã£ãŠéçºããããææ°ã®ãªãŒãã³ãœãŒã¹ ããŒã ãã¹ã ããŒã«ãã¹ã¯ãªããäœæã« JavaScript (ES6) ã䜿çšãããããJavaScript éçºè ã«ãšã£ãŠéåžžã«ã¢ã¯ã»ã¹ããããã§ããk6 㯠API ããŒã ãã¹ãããã€ã¯ããµãŒãã¹ãããã³äžéšã®ãã©ãŠã¶ã©ã€ã¯ãªã·ãã¥ã¬ãŒã·ã§ã³ (ãã«ãã©ãŠã¶ ãšã³ãžã³ã§ã¯ãããŸããã) ã«åªããŠããŸããããã©ãŒãã³ã¹ã®ããã«èšèšãããŠãããCI/CD ãã€ãã©ã€ã³ã«ããçµ±åãããŸãã
- Artillery.io: å¥ã®ãªãŒãã³ãœãŒã¹ãNode.js ããŒã¹ã®ããŒã ãã¹ã ããŒã«ãHTTPãWebSocketsãSocket.IO ãµãŒãã¹ããã¹ãããã®ã«åªããŠããããªã¢ã«ã¿ã€ã ããã·ã¥ããŒãããã£ãã ã¢ããªã±ãŒã·ã§ã³ãªã©ãå€ãã®ææ° JavaScript ã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ããYAML ããŒã¹ã®æ§æã«ãããéå§ã容æã§ãã
- Gatling: Scala ã§èšè¿°ãããŠããŸãããGatling ã¯éåžžã«æèœã§äººæ°ã®ããããã©ãŒãã³ã¹ ãã¹ã ããŒã«ã§ããæç¢ºã§æŽå¯åã®ããã¬ããŒããçæããHTTP API ãã¹ãã«åªããŠãããããNode.js ããã¯ãšã³ãã«é©ããŠããŸãã
- Playwright/Puppeteer: ãããã¯ãã©ãŠã¶èªååã©ã€ãã©ãª (Node.js ããŒã¹) ã§ãããªãœãŒã¹æ¶è²»ãå€ããã (åä»®æ³ãŠãŒã¶ãŒããã©ãŠã¶ ã€ã³ã¹ã¿ã³ã¹ãèµ·åãããã)ãåŸæ¥ã®ããŒã ãã¹ã ããŒã«ã§ã¯ãããŸããããçã®ãã©ãŠã¶ã¬ãã«ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãå¿ èŠãšããã·ãã¥ã¬ãŒããããè² è·äžã§ã®ã¯ã©ã€ã¢ã³ããµã€ã ã¡ããªã㯠(Web Vitals ãªã©) ãæž¬å®ããç¹å®ã®ã·ããªãªã«äžå¯æ¬ ã§ã (åæç£èŠ)ããããã¯ãé«ããªã¥ãŒã ã®ããŒã ãã¹ãããããäœåæå®è¡æ§ã詳现ãªããã©ãŒãã³ã¹ ãããã¡ã€ãªã³ã°ã«é©ããŠããŸãã
- ã¯ã©ãŠãããŒã¹ã®ããŒã ãã¹ã ãã©ãããã©ãŒã (äŸ: BlazeMeterãLoadViewãAWS Load TestingãAzure Load Testing): ãããã®ãã©ãããã©ãŒã ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çãæœè±¡åããå°ççã«åæ£ãããå Žæããå€§èŠæš¡ãªè² è·ãçæã§ãããããã°ããŒãã« ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãããããã¯å€ãã®å ŽåããªãŒãã³ãœãŒã¹ ããŒã«ãšçµ±åãããããç¬èªã®ã¹ã¯ãªãã ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸãããããŸãã
JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ããŒã ãã¹ãã®ãã¹ã ãã©ã¯ãã£ã¹
- çŸå®çãªããŒã¿: çµæã®æªã¿ãé¿ããããã«ããã¹ã ããŒã¿ããéãçš®é¡ãããã³ååžã«ãããŠæ¬çªããŒã¿ã«å¯æ¥ã«äŒŒãŠããããšã確èªããŠãã ããã
- ãããã¯ãŒã¯ ãšãã¥ã¬ãŒã·ã§ã³: ããŸããŸãªãããã¯ãŒã¯æ¡ä»¶ (äŸ: 3Gã4Gãå ãã¡ã€ããŒ) ãã·ãã¥ã¬ãŒãããŠãã¢ããªã±ãŒã·ã§ã³ãäžçäžã®ããŸããŸãªæ¥ç¶é床ãæã€ãŠãŒã¶ãŒã«å¯ŸããŠã©ã®ããã«æ©èœããããçè§£ããŸãã
- ç°å¢ã®åé¢: ã©ã€ã ãµãŒãã¹ãžã®åœ±é¿ãé²ãããã«ãåžžã«æ¬çªç°å¢ã«å¯èœãªéãè¿ããå°çšã®ç°å¢ã§ããŒã ãã¹ããå®è¡ããŠãã ããã
- 忣ãã¹ã: ã°ããŒãã« ã¢ããªã±ãŒã·ã§ã³ã®å Žåããããã¯ãŒã¯é å»¶ãšå°åã€ã³ãã©ã¹ãã©ã¯ãã£ã®éããèæ ®ããããã«ãè€æ°ã®å°ççãªå Žæããè² è·ãçæããŸãã
- ãã¹ãŠãç£èŠ: ã¯ã©ã€ã¢ã³ã (è² è·ãžã§ãã¬ãŒã¿) ãšãµãŒã㌠(ã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ããããã¯ãŒã¯) ã®äž¡æ¹ã§å æ¬çãªç£èŠãå®è£ ããŸãã
- èªååãšçµ±å: CI/CD ãã€ãã©ã€ã³ã«ããŒã ãã¹ããçµ±åããŠãããã©ãŒãã³ã¹ ãªã°ã¬ãã·ã§ã³ãæ©æãã€é »ç¹ã«æ€åºããŸãã
- 段éçãªè² è·å¢å : äœè² è·ããéå§ããåŸã ã«è² è·ãå¢ãããŠãããã«ããã¯ãäœç³»çã«ç¹å®ããŸãã
詳现: ã¹ãã¬ã¹ãã¹ã (ã¹ãã¬ã¹åæ)
ããŒã ãã¹ããäºæ³ãããæ¡ä»¶äžã§ã®ããã©ãŒãã³ã¹ã確èªããã®ã«å¯Ÿããã¹ãã¬ã¹ãã¹ãã¯ã·ã¹ãã ãéåžžã®åäœç¯å²ãè¶ ããŠããã®éçç¹ãŸã§ããã·ã¥ããŸãããã®äž»ãªç®æšã¯ãã¢ããªã±ãŒã·ã§ã³ã®æå€§å®¹éãæ¥µç«¯ãªæ¡ä»¶äžã§ã®åäœãããã³é害ããã®å埩ã®åºŠåãã倿ããããšã§ããããã¯ãããïœã ã£ããããšããã·ããªãªãèŠã€ããããšã§ãããããŠã€ã«ã¹ã®ã€ãã³ãã§äºæ³ããããã©ãã£ãã¯ã 3 åã«ãªã£ããããŸãã¯éèŠãªäŸåé¢ä¿ã倱æãããã©ããªãã§ãããã?
ã¹ãã¬ã¹ãã¹ãã®ç®ç
- æå€§å®¹éã®æ±ºå®: JavaScript ã¢ããªã±ãŒã·ã§ã³ã倱æãå§ããåããŸãã¯ããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããåã«åŠçã§ããåæãŠãŒã¶ãŒæ°ãŸãã¯ãã©ã³ã¶ã¯ã·ã§ã³æ°ã®çµ¶å¯Ÿçãªæå€§å€ãç¹å®ããŸããããã¯ã容éèšç»ãšå¶éã®çè§£ã«åœ¹ç«ã¡ãŸãã
- ãã¬ãŒã¯ãã€ã³ããšé害ã¢ãŒãã®ç¹å®: 極端ãªè² è·äžã§ã·ã¹ãã ãã©ãã§ã©ã®ããã«å€±æããããçºèŠããŸããæ£åžžã«ã¯ã©ãã·ã¥ããŸããããããšãå¿çããªããªããããŒã¿ãç Žæããããã»ãã¥ãªãã£è匱æ§ãå°å ¥ãããããŸãã?
- æ¥µç«¯ãªæ¡ä»¶äžã§ã®ã·ã¹ãã å®å®æ§ãšãšã©ãŒåŠçã®è©äŸ¡: ãªãœãŒã¹ãæ·±å»ã«éŒè¿«ããŠãããšãã«ãã¢ããªã±ãŒã·ã§ã³ã¯ãšã©ãŒãã©ã®ããã«ç®¡çããŸãã?ãšã©ãŒã广çã«ãã°ã«èšé²ããŸãã?æåä»å ¥ãªãã§å埩ããŸãã?
- å埩ã¡ã«ããºã ã®è©äŸ¡: ã³ã³ããŒãã³ããéè² è·ã«ãªã£ãã倱æããããããšãã«ãã·ã¹ãã ã®å埩ããã»ã¹ (äŸ: èªåã¹ã±ãŒãªã³ã°ããã§ã€ã«ãªãŒããŒãããŒã ãã©ã³ã·ã³ã°ããµãŒããã ãã¬ãŒã«ãŒ) ãæ£ããæ©èœããããšãæ€èšŒããŸãã
- ãªãœãŒã¹ ãªãŒã¯ã®æ€åº: æç¶çã§æ¥µç«¯ãªè² è·ã¯ãéåžžã®è² è·ã§ã¯æããã«ãªããªãå¯èœæ§ã®ããã¡ã¢ãª ãªãŒã¯ããã®ä»ã®ãªãœãŒã¹ç®¡çã®åé¡ãé²åºãããå¯èœæ§ããããŸãã
- ã»ãã¥ãªãã£è匱æ§ã®ç¹å®: å Žåã«ãã£ãŠã¯ãã¹ãã¬ã¹äžã®ã·ã¹ãã ããäžé©åãªãšã©ãŒåŠçããªãœãŒã¹ã®æ¯æžã«ãããäžæ£ã¢ã¯ã»ã¹ãããŒã¿æäœãèš±å¯ããã»ãã¥ãªãã£äžã®æ¬ é¥ãé²åºãããããšããããŸãã
ã¹ãã¬ã¹ãã¹ãã§æž¬å®ãããäž»èŠãªã¡ããªãã¯
å€ãã®ã¡ããªãã¯ã¯ããŒã ãã¹ããšéè€ããŸãããã¹ãã¬ã¹ãã¹ãã§ã¯çŠç¹ãã·ããããŸãã
- ãšã©ãŒç (ç¹ã«ãšã©ãŒã®çš®é¡): åãªãå²åã§ã¯ãªããç¹å®ã®ãšã©ãŒ (äŸ: 500 Internal Server ErrorsãããŒã¿ããŒã¹æ¥ç¶ãšã©ãŒãã¿ã€ã ã¢ãŠã) ãšãã®å ŽæãéèŠã§ããç¹å®ã®è² è·ã¬ãã«ã§ç¹å®ã®ãšã©ãŒãæ¥å¢ãããšããã¬ãŒã¯ãã€ã³ãã瀺ãããŸãã
- ãªãœãŒã¹é£œåãã€ã³ã: CPU ãåžžã« 100% ã«éããã®ã¯ãã€ã§ãããã¡ã¢ãªãæ¯æžããã®ã¯ãã€ã§ããããŸãã¯ãããã¯ãŒã¯ ãã¥ãŒããªãŒããŒãããŒããã®ã¯ãã€ã§ãã?ãããã®ãããå€ãç¹å®ããããšãéµã§ãã
- ã·ã¹ãã å¿çæ§ã®äœäž: ã·ã¹ãã ããã¬ãŒã¯ãã€ã³ãã«è¿ã¥ãã«ã€ããŠãå¿çæéã¯ã©ããããéãå¢å ããŸãã?ã·ã¹ãã ãå®å šã«å¿çããªããªãã®ã¯ãã€ã§ãã?
- ããŒã¿æŽåæ§: ã·ã¹ãã ã¯ã極端ãªã¹ãã¬ã¹äžã§ãããŒã¿ã®äžè²«æ§ãšæŽåæ§ãç¶æããŸãã? (ããã¯ããã¹ãåŸã®åæã«åºã¥ãã宿§çãªãã§ãã¯ã§ã)ã
- å埩æéãšåäœ: ã¹ãã¬ã¹ãè§£æ¶ãããåŸãã·ã¹ãã ãéåžžã®ããã©ãŒãã³ã¹ã«æ»ãã®ã«ã©ããããæéãããããŸãã?æåä»å ¥ãå¿ èŠã§ãã?èªåã¹ã±ãŒãªã³ã°ã¯æåŸ ã©ããã«æ©èœããŸãã?
- é害ãã€ã³ã: æåã«å€±æããæ£ç¢ºãªã³ã³ããŒãã³ããŸãã¯ãªãœãŒã¹ (äŸ: ããŒã¿ããŒã¹ãç¹å®ã®ãã€ã¯ããµãŒãã¹ãã¡ãã»ãŒãž ãã¥ãŒ) ãç¹å®ããŸãã
ã¹ãã¬ã¹ãã¹ãã®ã·ããªãªãšãŠãŒã¹ ã±ãŒã¹
- äºæããªããã©ãã£ãã¯ã®æ¥å¢ãžã®æºå: ããã€ã©ã«ãã€ãã³ãããµãŒãã¹æåŠ (DoS) æ»æããŸãã¯åäŸã®ãªããã©ãã£ãã¯ã«ã€ãªããå¯èœæ§ã®ããäž»èŠãªå ±éãã·ãã¥ã¬ãŒãããŸãã
- ãããŒããå¶éã®ç¹å®: éå®³ãæ·±å»ãªçµæãããããã¢ããªã±ãŒã·ã§ã³ (äŸ: éèååŒãã©ãããã©ãŒã ãéèŠãªã€ã³ãã©ã¹ãã©ã¯ãã£ç£èŠ) ã®å Žåã絶察çãªãã¬ãŒã¯ãã€ã³ããçè§£ããããšã¯äžå¯æ¬ ã§ãã
- å埩åãšãã§ã€ã«ãªãŒããŒã®ãã¹ã: ãã©ã€ã㪠ã·ã¹ãã ãéè² è·ã«ãªã£ããšãã«ããã§ã€ã«ãªãŒããŒã¡ã«ããºã ãçœå®³åŸ©æ§èšç»ãããã³èªåã¹ã±ãŒãªã³ã° ããªã·ãŒãæåŸ ã©ããã«æ©èœããããšã確èªããŸãã
- ãªãœãŒã¹æ¯æžã·ããªãª: ãªãœãŒã¹ (CPUãã¡ã¢ãªããã£ã¹ã¯å®¹éããããã¯ãŒã¯åž¯åå¹ ) ãæå³çã«æ¯æžãããŠãã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«åå¿ãããã芳å¯ããŸãã
- é«å¯çšæ§ã·ã¹ãã åãã®ã³ã³ãã©ã€ã¢ã³ã¹: 極端ãªå ç¢æ§ãšèé害æ§ãèŠæ±ãããã·ã¹ãã ã«å¯ŸããèŠå¶ãŸãã¯å¥çŽäžã®çŸ©åãæºãããŸãã
广çãªã¹ãã¬ã¹ãã¹ãã®æ¹æ³è«ãšæé
ã¹ãã¬ã¹ãã¹ãã¯ãã·ã¹ãã ãç Žå£ããããã®ããç©æ¥µçã§æå³çãªè©Šã¿ã§ããããšããããããŸãã
- ãæ¥µç«¯ãªãæ¡ä»¶ã®å®çŸ©: ãæ¥µç«¯ãªãè² è·ãæ§æãããã®ã確ç«ããŸããããã¯ãäºæ³ãããããŒã¯è² è·ã® 2 åã5 åããŸã㯠10 åããããã¯çªç¶ã®ãå€§èŠæš¡ãªãŠãŒã¶ãŒæµå ¥ã®ãããªç¹å®ã®ã·ããªãªã§ããããšããããããŸãã
- ã¹ãã¬ã¹ããããäž»èŠã³ã³ããŒãã³ãã®ç¹å®: ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã©ã®éšåãæãéèŠãŸãã¯è匱ã§ãããã倿ããŸã (äŸ: ç¹å®ã®ããŒã¿ããŒã¹ãèªèšŒãµãŒãã¹ãNode.js ã®è€éãªèšç®ã¢ãžã¥ãŒã«)ã
- äºæ³ãããå¶éãè¶ ããŠè² è·ã段éçã«å¢å ããã: é«è² è· (äŸ: ããŒã¯è² è·) ããéå§ããã·ã¹ãã ãæããã«é害ãŸãã¯æ·±å»ãªäœäžã瀺ããŸã§ãè² è·ãäœç³»çã«å¢å ãããŸããããã«ã¯ã極端ãªåæå®è¡æ§ãžã®ã©ã³ãã¢ããããŸãã¯æç¶çãªæ¥µç«¯ãªã¹ã«ãŒããããå«ãŸããå ŽåããããŸãã
- ã¯ã©ãã·ã¥ãããªãŒãºãããã³ããŒã¿ç Žæã®ç£èŠ: äžå®å®æ§ãã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ãã·ã¥ãå¿çããªããµãŒãã¹ããŸãã¯æãªãããããŒã¿æŽåæ§ã®å åã«æ³šææ·±ã芳å¯ããŸãã
- éå®³ã®æ ¹æ¬åå ã®åæ: ã·ã¹ãã ãç Žæããå Žåããã°ãã¹ã¿ã㯠ãã¬ãŒã¹ãããã³ãªãœãŒã¹ ã°ã©ããç¶¿å¯ã«åæããŠããªã倱æããã®ããçè§£ããŸããããŒã¿ããŒã¹ã®ããã«ããã¯ãNode.js ã®ã¡ã¢ãª ãªãŒã¯ãæªåŠçã®äŸå€ããŸãã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å¶éã§ãã?
- å埩æé ã®æ€èšŒ: ã·ã¹ãã ãéçãŸã§ããã·ã¥ãããåŸãè² è·ãéåžžã®ã¬ãã«ã«äžããã·ã¹ãã ãã©ãã ãè¿ éãã€å¹æçã«å埩ãããã芳å¯ããŸããèªåçã«å埩ããŸãã?é·åŒãåé¡ã¯ãããŸãã?
- ææžåãšã¬ããŒã: ãã¬ãŒã¯ãã€ã³ãã芳å¯ãããé害ã¢ãŒããæ ¹æ¬åå ãããã³å埩åäœãæç¢ºã«ææžåããŸããã·ã¹ãã ã匷åããããã®æšå¥šäºé ãæäŸããŸãã
JavaScript ã¹ãã¬ã¹ãã¹ãã®ããŒã«
ããŒã ãã¹ãã«äœ¿çšãããã®ãšåãããŒã«ãã¹ãã¬ã¹ãã¹ãã«ããã䜿çšãããŸãããæ§æãšç®çãç°ãªããŸãã
- JMeterãk6ãArtillery.ioãGatling: ãããã®ããŒã«ã¯ãã¹ãã¬ã¹ãã¹ãã«å¿ èŠãªæ¥µç«¯ãªè² è·ãçæããã®ã«å®å šã«é©ããŠããŸããéãã¯ãã¹ãã·ããªãªã®ãã¶ã€ã³ã«ãããäºæ³ãããè² è·ãã·ãã¥ã¬ãŒãããã®ã§ã¯ãªããç¶ç¶çã«å¢å ãŸãã¯æç¶çãªããŒã¯ä»¥äžã®è² è·ãã·ãã¥ã¬ãŒãããããã«æ§æããŸãã
- ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ããŒã« (äŸ: Chaos MonkeyãLitmusChaos): å³å¯ã«ã¯åŸæ¥ã®ã¹ãã¬ã¹ãã¹ãããŒã«ã§ã¯ãããŸããããã«ãªã¹ãšã³ãžãã¢ãªã³ã°ããŒã«ã¯ãã·ã¹ãã ã®å埩åããã¹ãããããã«æå³çã«é害 (äŸ: ããã»ã¹ã®åæ¢ããããã¯ãŒã¯é å»¶ããªãœãŒã¹æ¯æž) ãã·ã¹ãã ã«æ³šå ¥ããŸããããã¯ãã·ã¹ãã ãã¹ãã¬ã¹äžã§ã³ã³ããŒãã³ãé害ã«ã©ã®ããã«å¯ŸåŠããããæããã«ããããšã§ãã¹ãã¬ã¹ãã¹ããè£å®ããŸãã
- ã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã« (äŸ: KubernetesãDocker Swarm): ã³ã³ãããã©ã®ããã«ã¹ã±ãŒãªã³ã°ããããªãŒã±ã¹ãã¬ãŒã·ã§ã³ç°å¢å ã§ã©ã®ããã«æ©èœããããã·ãã¥ã¬ãŒãããããã«äœ¿çšã§ããŸããã³ã³ããã«èšå®ããããªãœãŒã¹å¶éã¯ãè² è·äžã§ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããç¹ã«ã¹ãã¬ã¹ãã¹ããéèŠã«ãªããŸãã
JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ã¹ãã¬ã¹ãã¹ãã®ãã¹ã ãã©ã¯ãã£ã¹
- 管çãããç°å¢: å¿ ãå°çšã®åé¢ãããç°å¢ã§ã¹ãã¬ã¹ãã¹ããå®è¡ããŠãã ãããæ¬çªã·ã¹ãã ãã¹ãã¬ã¹ãã¹ãããªãã§ãã ããããã ããå ç¢ãªä¿è·æªçœ®ãè¬ããããæ éã«èšç»ããã³æ¿èªãããã«ãªã¹ãšã³ãžãã¢ãªã³ã°å®éšãé€ããŸãã
- ããã¬ãŒã¯ãã€ã³ããã®æç¢ºãªå®çŸ©: äºåã«ãé害ããŸãã¯ããã¬ãŒã¯ãã€ã³ãããæ§æãããã®ãå®çŸ©ããŸã (äŸ: 5% ã®ãšã©ãŒçã2 ç§ã®å¿çæéãããå€ãå®å šãªã·ã¹ãã ã¯ã©ãã·ã¥)ã
- é害ã¢ãŒãã«çŠç¹ãåœãŠã: ã·ã¹ãã ããã€å€±æãããã ãã§ãªããã©ã®ããã«å€±æãããã«ã现å¿ã®æ³šæãæããŸããããŒã ã¯ã©ãã·ã¥ã§ãããã¹ããŒãªäœäžã§ããããããšãäžæ£ç¢ºãªããŒã¿ãè¿ããŸãã?
- ã³ã³ããŒãã³ãã®åé¢: JavaScript ã¢ããªã±ãŒã·ã§ã³ã§äžè¬çãªè€éãªãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã®å Žåãåã ã®ãµãŒãã¹ãŸãã¯ãµãŒãã¹ã®å°èŠæš¡ãªã¯ã©ã¹ã¿ãŒãåå¥ã«ã¹ãã¬ã¹ãã¹ãããŠãç¹å®ã®ããã«ããã¯ããã广çã«ç¹å®ããããšãæ€èšããŠãã ããã
- Ops/DevOps ãšã®é£æº: ã¹ãã¬ã¹ãã¹ãã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã¬ãã«ã®åé¡ãæããã«ããããšããããããŸããã»ããã¢ãããç£èŠãããã³è§£æ±ºã«ã¯ãéçšããã³ DevOps ããŒã ãšã®ç·å¯ãªé£æºãäžå¯æ¬ ã§ãã
- ãã¹ãåŸã®åæ: ã·ã¹ãã ãç Žæãããšãã«åæ¢ããªãã§ãã ããããã°ãã¹ã¿ã㯠ãã¬ãŒã¹ãããã³ãªãœãŒã¹ ã°ã©ããåæããŠãéå®³ã®æ ¹æ¬åå ãçè§£ããããã«ããªãã®æéãè²»ãããŸãã
- å埩ãã¹ã: ã¹ãã¬ã¹ãã¹ãã®éèŠãªéšåã¯ã極端ãªè² è·ãåé€ããããšãã«ã·ã¹ãã ãå®å®ããç¶æ ã«å埩ã§ããããšãæ€èšŒããããšã§ããããã«ã¯ãèªåã¹ã±ãŒãªã³ã°ããã§ã€ã«ãªãŒããŒãããã³ããŒã¿æŽåæ§ã®ç¢ºèªãå«ãŸããŸãã
ããŒã ãã¹ã vs. ã¹ãã¬ã¹ãã¹ã: æ¯èŒæŠèŠ
éããæç¢ºã«ããããã«ãçŽæ¥æ¯èŒãèŠãŠã¿ãŸãããã
ç®ç:
- ããŒã ãã¹ã: ã·ã¹ãã ãäºæ³ããããŠãŒã¶ãŒå®¹éãåŠçã§ããããšãæ€èšŒããäºæž¬ããããã©ãã£ãã¯æ¡ä»¶äžã§é©åã«æ©èœããããšã確èªããŸãã
- ã¹ãã¬ã¹ãã¹ã: ã·ã¹ãã ã®æå€§å®¹éãæ±ºå®ããæ¥µç«¯ã§äºæããªãè² è·äžã§ã®å®å®æ§ããšã©ãŒåŠçãããã³å埩ã¡ã«ããºã ãè©äŸ¡ããŸãã
è² è·ã¬ãã«:
- ããŒã ãã¹ã: çŸå®çã§ãäºæž¬ãããããŸãã¯ããŒã¯æããããã«äžåãè² è·ã䜿çšããŸãã
- ã¹ãã¬ã¹ãã¹ã: ãªãœãŒã¹ãæ¯æžãããããã«ãäºæ³ãããããŒã¯ãå€§å¹ ã«è¶ ããæ¥µç«¯ãªè² è·ããŸãã¯æç¶çãªé«è² è·ã䜿çšããŸãã
åçããã質å:
- ããŒã ãã¹ã: ãç§ãã¡ã® JavaScript ã¢ããªã±ãŒã·ã§ã³ã¯ã500 ããªç§ã®å¹³åå¿çæéã§ 10,000 人ã®åæãŠãŒã¶ãŒãåŠçã§ããŸããïŒã ãããã©ãŒãã³ã¹ SLA ãæºãããŠããŸããïŒã
- ã¹ãã¬ã¹ãã¹ã: ãç§ãã¡ã®ã·ã¹ãã ã¯ãã¯ã©ãã·ã¥ããã䜿çšäžèœã«ãªã£ããããåã«ãäœäººã®åæãŠãŒã¶ãŒãåŠçã§ããŸããïŒã ãCPU ã 100% ã§ã¡ã¢ãªãæ¯æžããŠããå ŽåãNode.js ããã¯ãšã³ãã¯ã©ã®ããã«åäœããŸããïŒã ãããŒã¯è² è·äžã§ã®ãµãŒããŒé害ããã©ãã ãéãå埩ããŸããïŒã
äž»ãªææ:
- ããŒã ãã¹ã: éåžžããé«è² è·ã§ã®ããã©ãŒãã³ã¹ãšå®å®æ§ã®ä¿èšŒãäºæ³ãããè² è·äžã§ã®ããã«ããã¯ã®ç¹å®ã容éã®æ€èšŒã
- ã¹ãã¬ã¹ãã¹ã: ãã¬ãŒã¯ãã€ã³ããé害ã¢ãŒããæå€§ã·ã¹ãã 容éããªãœãŒã¹æ¯æžãã¿ãŒã³ãããã³å埩ã¡ã«ããºã ã®æ€èšŒã®ç¹å®ã
ãã€äœ¿çšããã:
- ããŒã ãã¹ã: éçºã©ã€ããµã€ã¯ã«å šäœãéããŠãã¡ãžã£ãŒ ãªãªãŒã¹åããŸãã¯äºæž¬ããããã©ãã£ãã¯ã®å¢å ãäºæ³ãããšãã«å®æçã«å®è¡ããŸãã
- ã¹ãã¬ã¹ãã¹ã: ã·ã¹ãã å¶éã確ç«ãããšããå ç¢æ§ãè©äŸ¡ãããšããäºæž¬äžå¯èœãªé«åœ±é¿ã€ãã³ãã®æºåããããšãããŸãã¯çœå®³åŸ©æ§æŠç¥ãè©äŸ¡ãããšãã«äœ¿çšããŸãã
ãããã® 2 ã€ã®æ¹æ³è«ãè£å®çã§ããããšãçè§£ããããšãéèŠã§ããããŒã ãã¹ãã¯æ¥åžžæ¥åãã¹ã ãŒãºã§ããããšãä¿èšŒããã¹ãã¬ã¹ãã¹ãã¯ææªã®ã·ããªãªã«åããçã«å埩åã®ããã·ã¹ãã ãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸãã
JavaScript ã¢ããªã±ãŒã·ã§ã³ã®å®çšçãªèæ ®äºé
JavaScript ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã¯ãããã³ããšã³ããšããã¯ãšã³ããšããäºéã®æ§è³ªãšéåæçãªç¹æ§ã«ãããç¹æã®èª²é¡ããããããŸãã
ããã³ããšã³ã vs. ããã¯ãšã³ã (Node.js) ããã©ãŒãã³ã¹ ãã¹ã
- ããã³ããšã³ã JavaScript ããã©ãŒãã³ã¹ (ãã©ãŠã¶ãµã€ã):
- çŠç¹: ãŠãŒã¶ãŒãèªèããããã©ãŒãã³ã¹ãã³ã¢ Web Vitals (Largest Contentful PaintãFirst Input DelayãCumulative Layout Shift)ãJavaScript å®è¡æéããã³ãã« ãµã€ãºããããã¯ãŒã¯èŠæ± (æ°ãšãµã€ãº)ãã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ã
- ããŒã«: Lighthouse (ç£æ»çš)ãWebPageTestããã©ãŠã¶éçºè ããŒã« (ããã©ãŒãã³ã¹ ã¿ã)ããªã¢ã«ãŠãŒã¶ãŒç£èŠ (RUM) ãœãªã¥ãŒã·ã§ã³ (äŸ: New RelicãDatadogãSentry)ãåæç£èŠ (äŸ: Google Cloud OperationsãPingdom)ãçŽæ¥çãªããŒã/ã¹ãã¬ã¹ãã¹ãã§ã¯ãããŸãããããããã¯ããã¯ãšã³ãããµããŒãããå¿ èŠã®ãããããã©ãŒãã³ã¹ããå®çŸ©ããã®ã«åœ¹ç«ã¡ãŸãã
- 課é¡: ããŒã ãã¹ãã®ããã«æ°çŸãŸãã¯æ°åã®å®éã®ãã©ãŠã¶ãã·ãã¥ã¬ãŒãããããšã¯ããªãœãŒã¹ã倧éã«æ¶è²»ããŸããã»ãšãã©ã®ããŒã ãã¹ã ããŒã«ã¯ HTTP èŠæ±ãã·ãã¥ã¬ãŒãããŸãããå®å šãªãã©ãŠã¶ ã¬ã³ããªã³ã°ã¯ã·ãã¥ã¬ãŒãããŸãããPlaywright/Puppeteer ã¯ãã©ãŠã¶ã¬ãã«ã®å¶åŸ¡ãæäŸããŸãããåæç£èŠãå°èŠæš¡ãªãšã³ãããŒãšã³ã ãã¹ãã«é©ããŠããŸãã
- ããã¯ãšã³ã Node.js ããã©ãŒãã³ã¹ (ãµãŒããŒãµã€ã):
- çŠç¹: API å¿çæéãã¹ã«ãŒããããã€ãã³ãã«ãŒãã®ããããã³ã°ãããŒã¿ããŒã¹ ã¯ãšãª ããã©ãŒãã³ã¹ãã¡ã¢ãª ãªãŒã¯ãCPU 䜿çšçãI/O æäœããã€ã¯ããµãŒãã¹éä¿¡é å»¶ã
- ããŒã«: JMeterãk6ãArtilleryãGatling ã¯ããã§éåžžã«å¹æçã§ããNode.js åºæã®ãããã¡ã€ã© (äŸ: clinic.jsãNode.js ã®çµã¿èŸŒã¿ãããã¡ã€ã©)ãAPM ããŒã« (äŸ: DynatraceãAppDynamics) ã¯ããã¹ãäžããã³ãã¹ãåŸã®è©³çްãªåæã«äžå¯æ¬ ã§ãã
- 課é¡: Node.js ã®ã·ã³ã°ã«ã¹ã¬ãããã€ãã³ãé§ååã¢ãŒããã¯ãã£ã¯ãããã©ãŒãã³ã¹ã«åçãªåœ±é¿ãäžããå¯èœæ§ã®ããã€ãã³ãã«ãŒãã®ããããã³ã°ãæ³šææ·±ãç£èŠããå¿ èŠããããŸããããŒã¿ããŒã¹æ¥ç¶ããŒãªã³ã°ãå¹çç㪠async/await ã®äœ¿çšãã¹ããªãŒã åŠçã¯äžå¯æ¬ ã§ãã
ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ (SPA) ãšãã€ã¯ããµãŒãã¹
- SPA: åæããŒãžèªã¿èŸŒã¿ããã©ãŒãã³ã¹ (ååãã€ãããã€ãã¬ãŒã·ã§ã³) ãéèŠã§ãããã®åŸã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ API åŒã³åºãã§ããããšããããããŸããããŒã ãã¹ã㯠API ãšã³ããã€ã³ãã«çŠç¹ãåœãŠãããã³ããšã³ã ããã©ãŒãã³ã¹ ããŒã«ã¯ã¯ã©ã€ã¢ã³ããµã€ã ãšã¯ã¹ããªãšã³ã¹ãç£èŠããŸãã
- ãã€ã¯ããµãŒãã¹: åãµãŒãã¹ã¯ç¬ç«ã㊠(åäœ/çµ±åããã©ãŒãã³ã¹ ãã¹ã)ããã®åŸãšã³ãããŒãšã³ã ãããŒã®äžéšãšããŠãã¹ãã§ããŸããè² è·äžã§ã®è€æ°ã®ãµãŒãã¹åŒã³åºãã®çޝç©é å»¶ãäž»ãªæžå¿µäºé ã§ããå éšãµãŒãã¹ééä¿¡ããã¹ãã§ããããŒã«ãäžå¯æ¬ ã§ãã
JavaScript ã®éåææ§
ææ°ã® JavaScript ã¯ãéåææäœ (async/awaitãPromisesãã³ãŒã«ããã¯) ã«å€§ããäŸåããŠããŸããããŒã ãã¹ã ã¹ã¯ãªããã¯ãããããæ£ããåŠçããå¿
èŠããããå€ãã®å Žåãç¹å®ã®å¿çãŸãã¯æ¡ä»¶ãåŸ
ã£ãŠããç¶è¡ããããšã§ãå®éã®ãŠãŒã¶ãŒè¡åãæ£ç¢ºã«ã·ãã¥ã¬ãŒãããŸããJavaScript API ãåãã k6 ã®ãããªããŒã«ã¯ããã®ã¹ã¯ãªããäœæãç°¡çŽ åããŸãã
ãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ (WebSocketsãServer-Sent Events)
WebSocket (ãã£ãããã²ãŒã ãã©ã€ã ããã·ã¥ããŒãã§äžè¬ç) ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®å ŽåãåŸæ¥ã® HTTP ããŒã ãã¹ã ããŒã«ã§ã¯ååã§ãªãå ŽåããããŸããArtillery.io ã k6 ã®ãããªããŒã«ã¯ WebSocket ãããã³ã« ãã¹ãã匷åã«ãµããŒãããŠããã倿°ã®åæ WebSocket æ¥ç¶ãšã¡ãã»ãŒãžäº€æãã·ãã¥ã¬ãŒãã§ããŸãã
ã³ã³ããåãšãµãŒããŒã¬ã¹ ã¢ãŒããã¯ãã£
- ã³ã³ããå (äŸ: DockerãKubernetes): ãã¹ãã§ã¯ãã³ã³ããããªãŒã±ã¹ãã¬ãŒã·ã§ã³ç°å¢å ã§ã©ã®ããã«ã¹ã±ãŒãªã³ã°ãããããã©ãŒãã³ã¹ãçºæ®ããããèæ ®ããå¿ èŠããããŸããã³ã³ããã«èšå®ããããªãœãŒã¹å¶éã¯ãè² è·äžã§ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããç¹ã«ã¹ãã¬ã¹ãã¹ããéèŠã«ãªããŸãã
- ãµãŒããŒã¬ã¹ (äŸ: AWS LambdaãAzure Functions): èªåã¹ã±ãŒãªã³ã°ãçµã¿èŸŒãŸããŠããããšãå€ãã§ãããããã©ãŒãã³ã¹ ãã¹ãã¯ãã³ãŒã«ãã¹ã¿ãŒãã®é å»¶ã颿°ã®å®è¡å¶éãããã³ã¹ã±ãŒãªã³ã°ã«é¢é£ããã³ã¹ããçè§£ããããã«äŸç¶ãšããŠéèŠã§ããããŒã ãã¹ã ããŒã«ã¯ãAPI Gateway ãšã³ããã€ã³ãã广çã«ãããã§ããå¿ èŠããããŸãã
ç£èŠãéµ
ããã©ãŒãã³ã¹ ãã¹ãã¯ãå ç¢ãªç£èŠãªãã§ã¯äžå®å šã§ãããªãã¶ãŒãããªã㣠ã¹ã¿ã㯠(ã¡ããªãã¯çšã® Prometheus ãš Grafanaããã°çšã® ELK Stackããã¬ãŒã¹çšã® Jaeger ãªã©) ã¯ãããã©ãŒãã³ã¹ã®åé¡ãæ ¹æ¬çãªãªãœãŒã¹ã®ããã«ããã¯ãã³ãŒãã®éå¹çæ§ãšçžé¢ãããããã«äžå¯æ¬ ã§ããNew RelicãDatadogãDynatrace ã®ãã㪠APM (ã¢ããªã±ãŒã·ã§ã³ ããã©ãŒãã³ã¹ç£èŠ) ããŒã«ã¯ãJavaScript ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¿ãã¯å šäœã«ããããšã³ãããŒãšã³ãã®å¯èŠæ§ãæäŸããŸãã
SDLC ãžã®ããã©ãŒãã³ã¹ ãã¹ãã®çµ±å
ã°ããŒãã«ã§ã¢ãžã£ã€ã«ãªããŒã ã«ãšã£ãŠãããã©ãŒãã³ã¹ ãã¹ãã¯ãªãªãŒã¹åã® 1 åéãã®ã€ãã³ãã§ãã£ãŠã¯ãªããŸããããœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã« (SDLC) ã®äžå¯æ¬ ãªéšåã§ããå¿ èŠããããŸãã
- ã·ããã¬ãã ã¢ãããŒã: éçºãµã€ã¯ã«ã®æ©ã段éã§ããã©ãŒãã³ã¹ã®èæ ®äºé ãšåºæ¬çãªãã¹ããéå§ããŸããããã©ãŒãã³ã¹ã¯ãåŸä»ãã§ã¯ãªããèšèšäžã®èæ ®äºé ã§ããã¹ãã§ãã
- CI/CD ãã€ãã©ã€ã³: ããã©ãŒãã³ã¹ ãã¹ã (ç¹ã« API ããŒã ãã¹ã) ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çãããã€ã¡ã³ã ãã€ãã©ã€ã³å ã«èªååããŸããããã«ãããæ°ããã³ãŒãã³ãããã«ãã£ãŠå°å ¥ãããããã©ãŒãã³ã¹ ãªã°ã¬ãã·ã§ã³ã«å¯Ÿãã峿ã®ãã£ãŒãããã¯ãåŸãããŸãã
- ããã©ãŒãã³ã¹ ã²ãŒã: CI/CD ã«ãããã©ãŒãã³ã¹ ã²ãŒãããå®è£ ããŸãããã«ããå®çŸ©ãããããã©ãŒãã³ã¹ã®ãããå€ (äŸ: å¿çæéãé·ãããããšã©ãŒçãå¶éãè¶ ãã) ãæºãããªãå Žåããã€ãã©ã€ã³ã¯åæ¢ããããã©ãŒãã³ã¹ã®åé¡ãæ¬çªç°å¢ã«å°éããã®ãé²ããŸãã
- 宿çãªããŒã¹ã©ã€ã³ãšãã³ãããŒãã³ã°: å æ¬çãªããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ãã宿çã«å®è¡ããŠãæ°ããããã©ãŒãã³ã¹ ããŒã¹ã©ã€ã³ã確ç«ãã以åã®çµæãšæ¯èŒããŸããããã«ãããæ¹åã远跡ããåŸã ã«äœäžããããã©ãŒãã³ã¹ãæ€åºã§ããŸãã
ã°ããŒãã«ãªèŠç¹ãšäŸ
ã°ããŒãã« ãªãŒãã£ãšã³ã¹åãã® JavaScript ã¢ããªã±ãŒã·ã§ã³ã®èšèšãšãã¹ãã¯ãè€éãã®å±€ã远å ããããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ããããã«äžå¯æ¬ ãªãã®ã«ããŸãã
- 倿§ãªãŠãŒã¶ãŒ ããŒã¹ãšããŒã¯æé: ã°ããŒãã« ã¢ããªã±ãŒã·ã§ã³ã¯ãããŸããŸãªå°åã§ç°ãªãæéã«ããŒã¯ ãã©ãã£ãã¯ãçµéšããŸããe ã³ããŒã¹ ãµã€ãã¯ããšãŒãããã®å¶æ¥æéäžã«ããŒã¯ ã»ãŒã«ãçµéšãããã®åŸåç±³ã«ç§»è¡ããæåŸã«ã¢ãžã¢å€ªå¹³æŽå°åã«ç§»è¡ããå¯èœæ§ããããŸããããŒã ãã¹ãã¯ããããã®ãããããŸãã¯éè€ããããŒã¯ãã·ãã¥ã¬ãŒãããå¿ èŠããããŸãã
- ãããã¯ãŒã¯é å»¶: æ°åããã¡ãŒãã«é¢ããå ŽæãããµãŒããŒã«ã¢ã¯ã»ã¹ãããŠãŒã¶ãŒã¯ãåœç¶ãªããé«ãé å»¶ãçµéšããŸããå°ççã«åæ£ãããè² è·ãžã§ãã¬ãŒã¿ (äŸ: ã¯ã©ãŠãããŒã¹ã®ãã©ãããã©ãŒã ã䜿çš) ããã®ããŒã ãã¹ãã¯ããããçè§£ããæé©åããã®ã«åœ¹ç«ã¡ãŸããCDN (ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯) ã¯ããŠãŒã¶ãŒã®è¿ãã«éç JavaScript ã¢ã»ãããé ä¿¡ããäžã§éèŠã§ãã
- ããŒã«ã« ã€ãã³ããšãã£ã³ããŒã³: å°åããŒã±ãã£ã³ã° ãã£ã³ããŒã³ãäŒæ¥ããŸãã¯ãã¥ãŒã¹ ã€ãã³ãã¯ãå°åçãªãã©ãã£ãã¯ã®æ¥å¢ãåŒãèµ·ããå¯èœæ§ããããŸããã¹ãã¬ã¹ãã¹ãã¯ãç¹å®ã®å°åã®ãã€ã©ã« ãœãŒã·ã£ã« ã¡ãã£ã¢æçš¿ããŸãã¯ç¹å®ã®åœã®äž»èŠãªã»ãŒã«ããããã圱é¿ã«åããããšãã§ããŸãã
- åœéç㪠e ã³ããŒã¹ ãã©ãããã©ãŒã : Node.js ãã€ã¯ããµãŒãã¹ã§æ§ç¯ããããã©ãããã©ãŒã ã§ã®ã°ããŒãã« ãã©ãã·ã¥ ã»ãŒã« ã€ãã³ããæ³åããŠã¿ãŠãã ãããäžçäžã®ãã¹ãŠã®ãŠãŒã¶ãŒããæééå®ã®ãªãã¡ãŒã®ããã«åæã«ãã©ãããã©ãŒã ã«ã¢ã¯ã»ã¹ããŸããããŒã ãã¹ãã¯ãéå£çãªã©ãã·ã¥ãåŠçã§ããããšãæ€èšŒããã¹ãã¬ã¹ãã¹ãã¯ãã°ããŒãã«éèŠããã¹ãŠã®æåŸ ãè¶ ããå Žåã®æå€§å®¹éãšæ£åžžãªå£åæŠç¥ãæããã«ããŸãã
- ãªã³ã©ã€ã³åŠç¿ããã³ã³ã©ãã¬ãŒã·ã§ã³ ããŒã«: äž»èŠãªã°ããŒãã«äŒè°ãã³ãŒã¹ç»é²æéäžãæ°å人ã®åŠçãšæè²è ããJavaScript ããŒã¹ã®åŠç¿ç®¡çã·ã¹ãã ã«ç°ãªã倧éžããã¢ã¯ã»ã¹ããå¯èœæ§ããããŸããã¹ãã¬ã¹ãã¹ãã«ããããã°ã€ã³ãã³ã³ãã³ã ã¹ããªãŒãã³ã°ãããã³ã€ã³ã¿ã©ã¯ãã£ã ã»ãã·ã§ã³ã®çªç¶ã®ã°ããŒãã«ãªæ®ºå°ã«ã·ã¹ãã ãèããããããšãä¿èšŒãããŸãã
- éèãµãŒãã¹ ã¢ããªã±ãŒã·ã§ã³: åžå Žã®éå ŽãŸãã¯éå Žäžã«ããŸããŸãªã¿ã€ã ãŸãŒã³ã§äœ¿çšãããååŒãã©ãããã©ãŒã ãŸãã¯éè¡ã¢ããªã±ãŒã·ã§ã³ã¯ãåæãããé«ãã©ã³ã¶ã¯ã·ã§ã³éãçµéšããŸããããã©ãŒãã³ã¹ãã¹ãã¯ããããã®ããã·ã§ã³ã¯ãªãã£ã«ã«ãªæäœãæ£ç¢ºãã€é å»¶ãªãåŠçããã·ã¹ãã ã®èœåã確èªããŸãã
- ã°ããŒãã«ãªæèã§ã®çœå®³åŸ©æ§: ããŒã¿ã»ã³ã¿ãŒå šäœãŸãã¯å°åå šäœãå©çšã§ããªããªãããã©ãã£ãã¯ãä»ã®ã°ããŒãã«å°åã«ãã§ã€ã«ãªãŒããŒã匷å¶ãããã·ããªãªã®ã¹ãã¬ã¹ãã¹ãã¯ãäºæ¥ç¶ç¶æ§ã«ãšã£ãŠäžå¯æ¬ ã§ãã
ã°ããŒãã« ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãããŸããŸãªå°ççãªå Žæããã®åæç£èŠãšãäžçäžã®å®éã®ãŠãŒã¶ãŒããã®ããã©ãŒãã³ã¹ ããŒã¿ããã£ããã£ãããªã¢ã«ãŠãŒã¶ãŒç£èŠ (RUM) ã¯ãããã©ãŒãã³ã¹ ãã¹ãæŠç¥ã®æ¡åŒµæ©èœãšãªããç¶ç¶çãªãã£ãŒãããã¯ãæäŸããŸãã
çµè«
JavaScript ã¢ããªã±ãŒã·ã§ã³éçºã®ãã€ãããã¯ãªäžçã§ã¯ãå ç¢ãªããã©ãŒãã³ã¹ã¯ãŠãŒã¶ãŒæºè¶³åºŠãšããžãã¹æåã®ç€ã§ããããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ãã®äž¡æ¹ããã®ç®æšãéæããããã«äžå¯æ¬ ã§ãããããããç°ãªãç®çãæãããŸããããŒã ãã¹ãã¯ãæ¥åžžããã³äºæ³ãããéèŠãèªä¿¡ãæã£ãŠæºããã®ã«åœ¹ç«ã¡ãã¢ããªã±ãŒã·ã§ã³ãäºæ³ãããæ¡ä»¶äžã§ã¹ã ãŒãºã«æ©èœããããšãä¿èšŒããŸããäžæ¹ãã¹ãã¬ã¹ãã¹ãã¯ãã·ã¹ãã ã®ãã¬ãŒã¯ãã€ã³ããšå埩èœåã«é¢ããç¥èãæäŸããäºæããªãäºæ ã«åããå šäœçãªå埩åãé«ããŸãã
ããããã®ç®çãæ¹æ³è«ãããã³ç¹å®ã®ã¡ããªãã¯ãçè§£ããJavaScript ããã³ããšã³ããš Node.js ããã¯ãšã³ãã«é©åãªããŒã«ã掻çšããããšã§ãéçºããŒã ã¯ãã¬ãã·ã£ãŒäžã§ããã©ãŒãã³ã¹ãçºæ®ããã ãã§ãªããäžçäžã®ãŠãŒã¶ãŒããŒã¹ã®çµ¶ãéãªãéèŠãæºããããã«å¹æçã«ã¹ã±ãŒãªã³ã°ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããããŒã ãã¹ããšã¹ãã¬ã¹ãã¹ãã®äž¡æ¹ãå質ä¿èšŒæŠç¥ã®è£å®çãªæ±ãšããŠåãå ¥ããSDLC å šäœã«çµ±åããŠãJavaScript ã¢ããªã±ãŒã·ã§ã³ãåžžã«äžçã«å¯Ÿå¿ã§ããããã«ããŸãã