JavaScript Performance APIã䜿çšããŠã©ã³ã¿ã€ã ã¡ããªã¯ã¹ãåéããWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã®å æ¬çãªã¬ã€ãã
JavaScript Performance APIïŒã©ã³ã¿ã€ã ã¡ããªã¯ã¹åéããã¹ã¿ãŒãã
仿¥ã®ããŒã¹ã®éãããžã¿ã«äžçã§ã¯ããŠã§ããµã€ããšWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæãéèŠã§ãããŠãŒã¶ãŒã¯å³æã®å¿çæ§ãšã·ãŒã ã¬ã¹ãªäœéšãæåŸ ããŠããŸããèªã¿èŸŒã¿æéãé ãããŸãã¯ã€ã³ã¿ã©ã¯ã·ã§ã³ãéããšããã©ã¹ãã¬ãŒã·ã§ã³ã«ã€ãªãããæçµçã«ã¯é¢è±ã«ã€ãªãããŸããæé©ãªããã©ãŒãã³ã¹ã確ä¿ããããã«ãéçºè ã¯JavaScriptã³ãŒãã®ã©ã³ã¿ã€ã æåãæž¬å®ãåæãæ¹åããããã®ããŒã«ãå¿ èŠã§ããJavaScript Performance APIã¯ãã©ã³ã¿ã€ã ã¡ããªã¯ã¹ãåéããããã®åŒ·åã§æšæºåãããæ¹æ³ãæäŸããéçºè ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããã«ã¢ããªã±ãŒã·ã§ã³ãæé©åã§ããããã«ããŸãã
JavaScript Performance APIãšã¯ïŒ
JavaScript Performance APIã¯ãææ°ã®Webãã©ãŠã¶ã§å©çšå¯èœãªã€ã³ã¿ãŒãã§ãŒã¹ãšã¡ãœããã®ã³ã¬ã¯ã·ã§ã³ã§ãããéçºè ãããŸããŸãªããã©ãŒãã³ã¹é¢é£ããŒã¿ã«ã¢ã¯ã»ã¹ããŠæž¬å®ããããšãå¯èœã«ããŸããããã«ãããã©ã³ã¿ã€ã æåã®ããŸããŸãªåŽé¢ã«é¢ããæŽå¯ãåŸãããŸããå ·äœçã«ã¯ä»¥äžã®éãã§ãã
- ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ïŒDNSã«ãã¯ã¢ãããTCPæ¥ç¶ããªã¯ãšã¹ãããã³ã¬ã¹ãã³ã¹æéãªã©ãããŒãžèªã¿èŸŒã¿ã®ããŸããŸãªæ®µéã«ãããæéãæž¬å®ããŸãã
- ãªãœãŒã¹ã¿ã€ãã³ã°ïŒç»åãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒããªã©ãããŒãžã«ãã£ãŠèªã¿èŸŒãŸããåã ã®ãªãœãŒã¹ã«é¢ãã詳现ãªã¿ã€ãã³ã°æ å ±ãæäŸããŸãã
- ãŠãŒã¶ãŒã¿ã€ãã³ã°ïŒéçºè ãã¢ããªã±ãŒã·ã§ã³ã®ããžãã¯ã«ç¹åããã«ã¹ã¿ã ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãå®çŸ©ã»æž¬å®ã§ããããã«ããŸãã
- ãã³ã°ã¿ã¹ã¯ïŒã¡ã€ã³ã¹ã¬ãããé·æéãããã¯ããUIã®ããªãŒãºãåŒãèµ·ããå¯èœæ§ã®ããã¿ã¹ã¯ãç¹å®ããŸãã
- ã¡ã¢ãªæž¬å®ïŒïŒäžéšã®ãã©ãŠã¶ã§å©çšå¯èœïŒããŒãžã®ã¡ã¢ãªäœ¿çšéã«é¢ããæ å ±ãæäŸããŸãã
- ãšã¬ã¡ã³ãã¿ã€ãã³ã°ïŒç¹å®ã®HTMLèŠçŽ ããŠãŒã¶ãŒã«è¡šç€ºãããã¿ã€ãã³ã°ã«é¢ããã¡ããªã¯ã¹ãæäŸããŸãã
- ã€ãã³ãã¿ã€ãã³ã°ïŒã¯ãªãã¯ãããŒãã¬ã¹ããã®ä»ã®ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãªã©ãã€ãã³ãã®æç¶æéãæž¬å®ããŸãã
ãããã®æ©èœã掻çšããããšã§ãéçºè ã¯å®éã®ã·ããªãªã§èªåã®JavaScriptã³ãŒããã©ã®ããã«å®è¡ãããããæ·±ãçè§£ããæé©åã®é åãç¹å®ã§ããŸãã
Performance APIã®äž»èŠã³ã³ããŒãã³ã
1. performance
ãªããžã§ã¯ã
performance
ãªããžã§ã¯ãã¯ãPerformance APIã«ã¢ã¯ã»ã¹ããããã®äž»èŠãªãšã³ããªãŒãã€ã³ãã§ããããã¯window
ãªããžã§ã¯ãã®ããããã£ã§ãããããã©ãŒãã³ã¹ããŒã¿ã®æž¬å®ãšåæã®ããã®ããŸããŸãªã¡ãœãããšããããã£ãžã®ã¢ã¯ã»ã¹ãæäŸããŸããæãäžè¬çã«äœ¿çšãããããããã£ã¯performance.timing
ãšperformance.now()
ã§ãã
2. performance.now()
performance.now()
ã¯ãããã¥ã¡ã³ãã®ããã²ãŒã·ã§ã³éå§ããã®çµéæéã衚ãé«è§£å床ã®ã¿ã€ã ã¹ã¿ã³ãïŒããªç§åäœïŒãè¿ããŸããããã¯ã³ãŒãå®è¡ã®æç¶æéãæž¬å®ããããã®åºç€ãšãªããŸããDate.now()
ãšã¯ç°ãªããperformance.now()
ã¯å調å¢å ïŒmonotonicïŒã§ãããã·ã¹ãã ã¯ããã¯ã®èª¿æŽã«åœ±é¿ãããŸããã
äŸïŒé¢æ°ã®å®è¡æéã®æž¬å®
const startTime = performance.now();
// Code to be measured
for (let i = 0; i < 1000000; i++) {
// Perform some operation
}
const endTime = performance.now();
const executionTime = endTime - startTime;
console.log(`Execution time: ${executionTime} milliseconds`);
3. ããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³
ããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³ã¯ãããŒãžã®ã©ã€ãã¿ã€ã äžã«çºçããããã©ãŒãã³ã¹é¢é£ã€ãã³ãã®èšé²ã§ããããã«ã¯ãããã²ãŒã·ã§ã³ã¿ã€ãã³ã°ããªãœãŒã¹ã¿ã€ãã³ã°ããŠãŒã¶ãŒã¿ã€ãã³ã°ãªã©ã®ãšã³ããªãå«ãŸããŸããããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³ã«ã¯ãperformance.getEntries()
ãperformance.getEntriesByType()
ãperformance.getEntriesByName()
ãªã©ã®ã¡ãœããã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸãã
4. PerformanceEntryã€ã³ã¿ãŒãã§ãŒã¹
ããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³ã®åãšã³ããªã¯ãPerformanceEntry
ãªããžã§ã¯ãã«ãã£ãŠè¡šãããŸãããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãååãéå§æéãæç¶æéããšã³ããªã¿ã€ããªã©ãããã©ãŒãã³ã¹ã€ãã³ãã説æããããããã£ãæäŸããŸããããŸããŸãªã¿ã€ãã®ããã©ãŒãã³ã¹ãšã³ããªã«ã¯ããã®ã€ãã³ãã¿ã€ãã«åºæã®è¿œå ããããã£ããããŸãã
ã©ã³ã¿ã€ã ã¡ããªã¯ã¹ã®åéãšåæ
JavaScript Performance APIã¯ãã©ã³ã¿ã€ã ã¡ããªã¯ã¹ãåéã»åæããããã®ããŸããŸãªã¡ãœãããæäŸããŸãã以äžã«äžè¬çãªäœ¿çšäŸãããã€ã瀺ããŸãã
1. ããŒãžèªã¿èŸŒã¿æéã®æž¬å®
performance.timing
ãªããžã§ã¯ãã¯ãããŒãžèªã¿èŸŒã¿ã®ããŸããŸãªæ®µéã«é¢ããè©³çŽ°ãªæ
å ±ãæäŸããŸãããã®ããŒã¿ã䜿çšããŠãããã«ããã¯ãç¹å®ããèªã¿èŸŒã¿ããã»ã¹ãæé©åã§ããŸãã
äŸïŒDOMContentLoadedã€ãã³ãæéã®èšç®
window.addEventListener('load', () => {
const loadTime = performance.timing.domContentLoadedEventEnd - performance.timing.navigationStart;
console.log(`DOMContentLoaded event time: ${loadTime} milliseconds`);
});
çµæã®è§£éïŒdomContentLoadedEventEnd
ã®å€ãé«ãå Žåã¯ããã©ãŠã¶ãJavaScriptã³ãŒãã®è§£æãšå®è¡ãDOMã®ã¬ã³ããªã³ã°ããŸãã¯ãªãœãŒã¹ã®èªã¿èŸŒã¿åŸ
æ©ã«å€ãã®æéãè²»ãããŠããããšã瀺åããŠããå¯èœæ§ããããŸããåã
ã®ãªãœãŒã¹ã¿ã€ãã³ã°ïŒäžèšåç
§ïŒãåæããããšã§ãé
å»¶ãåŒãèµ·ãããŠããç¹å®ã®ãªãœãŒã¹ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
æé©åæŠç¥ïŒèãããã解決çã«ã¯ãéèŠã§ãªãJavaScriptã®å®è¡ãé å»¶ããããCSSã®é ä¿¡ãæé©åãããDOMèŠçŽ ã®æ°ãæå°éã«æãããªã©ããããŸãã
2. ãªãœãŒã¹èªã¿èŸŒã¿æéã®æž¬å®
ãªãœãŒã¹ã¿ã€ãã³ã°APIã¯ãããŒãžã«ãã£ãŠèªã¿èŸŒãŸããåãªãœãŒã¹ã®è©³çްãªã¿ã€ãã³ã°æ å ±ãæäŸããŸããããã«ãããèªã¿èŸŒã¿ãé ããªãœãŒã¹ãç¹å®ãããã®é ä¿¡ãæé©åã§ããŸãã
äŸïŒãªãœãŒã¹ã¿ã€ãã³ã°æ å ±ã®ååŸ
const resourceEntries = performance.getEntriesByType('resource');
resourceEntries.forEach(entry => {
console.log(`Resource: ${entry.name}`);
console.log(` Duration: ${entry.duration} milliseconds`);
console.log(` Fetch Start: ${entry.fetchStart}`);
console.log(` Response End: ${entry.responseEnd}`);
});
çµæã®è§£éïŒåãªãœãŒã¹ãšã³ããªã®duration
ããããã£ã調ã¹ãããšã§ãèªã¿èŸŒã¿ãé
ããªãœãŒã¹ãç¹å®ã§ããŸããduration
ãé«ãå Žåã¯ããããã¯ãŒã¯ã®é
å»¶ããã¡ã€ã«ãµã€ãºã倧ããããŸãã¯ãµãŒããŒãµã€ãã®åŠçãéå¹çã§ããããšã瀺ããŠããå¯èœæ§ããããŸãã
æé©åæŠç¥ïŒæœåšçãªè§£æ±ºçã«ã¯ãç»åã®å§çž®ãJavaScriptããã³CSSãã¡ã€ã«ã®æå°åãã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã®äœ¿çšããµãŒããŒãµã€ããã£ãã·ã³ã°ã®æé©åãªã©ããããŸãã
ã°ããŒãã«ãªäŸïŒåž¯åå¹ ãéãããŠããå°åïŒäŸïŒæ±åã¢ãžã¢ãã¢ããªã«ã®äžéšïŒã®ãŠãŒã¶ãŒã«é«è§£å床ã®ç»åãæäŸããŠãããŠã§ããµã€ãã¯ããããã®ãŠãŒã¶ãŒã«å¯ŸããŠå€§å¹ ã«é ãèªã¿èŸŒã¿æéãçµéšããå¯èœæ§ããããŸãããŠãŒã¶ãŒã®æ¥ç¶é床ãšç»é¢ãµã€ãºã«é©å¿ããã¬ã¹ãã³ã·ãã€ã¡ãŒãžãå®è£ ããããšã§ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
3. ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã®æž¬å®
ãŠãŒã¶ãŒã¿ã€ãã³ã°APIã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã®ããžãã¯ã«ç¹åããã«ã¹ã¿ã ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãå®çŸ©ã»æž¬å®ã§ããŸããããã¯ããã©ãŒã ã®éä¿¡ãæ€çŽ¢ã¯ãšãªãããã²ãŒã·ã§ã³ã®é·ç§»ãªã©ãéèŠãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã®ããã©ãŒãã³ã¹ã远跡ããã®ã«åœ¹ç«ã¡ãŸãã
äŸïŒãã©ãŒã éä¿¡ã«ãããæéã®æž¬å®
const form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
performance.mark('formSubmitStart');
// Simulate form submission delay
setTimeout(() => {
performance.mark('formSubmitEnd');
performance.measure('formSubmitDuration', 'formSubmitStart', 'formSubmitEnd');
const measure = performance.getEntriesByName('formSubmitDuration')[0];
console.log(`Form submission duration: ${measure.duration} milliseconds`);
}, 1000); //Simulate network request taking 1 second
event.preventDefault();
});
çµæã®è§£éïŒformSubmitDuration
ãé«ãå Žåã¯ããµãŒããŒãµã€ãã®åŠçãé
ãããããã¯ãŒã¯ã®é
å»¶ããŸãã¯ã¯ã©ã€ã¢ã³ããµã€ãã®ããªããŒã·ã§ã³ãéå¹çã§ããããšã瀺ããŠããå¯èœæ§ããããŸãã
æé©åæŠç¥ïŒæœåšçãªè§£æ±ºçã«ã¯ããµãŒããŒãµã€ãã³ãŒãã®æé©åããããã¯ãŒã¯ãªã¯ãšã¹ãã®åæžãã¯ã©ã€ã¢ã³ããµã€ãã®ããªããŒã·ã§ã³ã®æ¹åãªã©ããããŸãã
4. ãã³ã°ã¿ã¹ã¯ã®ç¹å®
ãã³ã°ã¿ã¹ã¯ãšã¯ãã¡ã€ã³ã¹ã¬ãããé·æéïŒéåžžã¯50ããªç§ä»¥äžïŒãããã¯ããUIã®ããªãŒãºã壿ªãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåŒãèµ·ããå¯èœæ§ã®ããã¿ã¹ã¯ã§ãããã³ã°ã¿ã¹ã¯APIã䜿çšãããšããããã®ã¿ã¹ã¯ãç¹å®ããããããé²ãããã«ã³ãŒããæé©åã§ããŸãã
äŸïŒãã³ã°ã¿ã¹ã¯ã®ç¹å®
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(`Long task: ${entry.name}`);
console.log(` Duration: ${entry.duration} milliseconds`);
});
});
observer.observe({ entryTypes: ['longtask'] });
// Simulate a long task
setTimeout(() => {
let sum = 0;
for (let i = 0; i < 1000000000; i++) {
sum += i;
}
console.log(`Long task complete: ${sum}`);
}, 0);
çµæã®è§£éïŒãã³ã°ã¿ã¹ã¯ã®æç¶æéã¯ããã©ãŠã¶ãUIãã¹ã ãŒãºã«æŽæ°ããã®ã劚ããŠããã³ãŒããæµ®ã圫ãã«ããŸãã
æé©åæŠç¥ïŒã³ãŒãåå²ããããŠã³ã¹ãã¹ããããªã³ã°ãããã³Webã¯ãŒã«ãŒãžã®ã¿ã¹ã¯ã®ãªãããŒãã¯ããã³ã°ã¿ã¹ã¯ã®æç¶æéãççž®ããããã®æŠç¥ã§ãã
5. èŠçŽ ã®å¯èŠæ§ã®æž¬å®
ãšã¬ã¡ã³ãã¿ã€ãã³ã°APIã䜿çšãããšãç¹å®ã®HTMLèŠçŽ ããŠãŒã¶ãŒã«è¡šç€ºãããã¿ã€ãã³ã°ã枬å®ã§ããŸããããã¯ãããŒããŒã€ã¡ãŒãžãéèŠãªã³ã³ãã³ãã»ã¯ã·ã§ã³ãªã©ãéèŠãªèŠçŽ ã®èªã¿èŸŒã¿ãšã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ã远跡ããã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã
äŸïŒèŠçŽ ã®å¯èŠæéã®æž¬å®
<img src="hero-image.jpg" elementtiming="hero-image" id="heroImage">
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
if (entry.name === 'hero-image') {
console.log(`Hero image render start: ${entry.renderStart} milliseconds`);
}
});
});
observer.observe({ type: 'element', buffered: true });
çµæã®è§£éïŒrenderStart
ã®å€ãé
ãå Žåã¯ãèªã¿èŸŒã¿ãŸãã¯ã¬ã³ããªã³ã°ããã»ã¹ãé
ãããã«ãèŠçŽ ã衚瀺ããããŸã§ã«æéãããã£ãŠããããšã瀺ããŸãã
æé©åæŠç¥ïŒç»åã®å§çž®ãæé©åããé å»¶èªã¿èŸŒã¿ã䜿çšããéèŠãªãªãœãŒã¹ã®èªã¿èŸŒã¿ãåªå ããŸãã
6. ã€ãã³ãé å»¶ã®æž¬å®
ã€ãã³ãã¿ã€ãã³ã°APIã¯ãã€ãã³ããªã¹ããŒã®å®è¡ã«ãããæéãæž¬å®ããŸããããã¯ããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãé ãããŠããå¯èœæ§ã®ããã€ãã³ããã³ãã©ãç¹å®ããã®ã«äŸ¡å€ããããŸãã
äŸïŒã¯ãªãã¯ã€ãã³ãé å»¶ã®æž¬å®
<button id="myButton">Click Me</button>
const button = document.getElementById('myButton');
button.addEventListener('click', (event) => {
performance.mark('clickStart');
// Simulate some processing
for (let i = 0; i < 1000000; i++) {
// Perform some operation
}
performance.mark('clickEnd');
performance.measure('clickDuration', 'clickStart', 'clickEnd');
const measure = performance.getEntriesByName('clickDuration')[0];
console.log(`Click event duration: ${measure.duration} milliseconds`);
});
çµæã®è§£éïŒclickDuration
ãé·ãå Žåã¯ãã€ãã³ããã³ãã©ã®å®è¡ã«æéãããããããŠãããUIã®å¿çã«é
å»¶ãåŒãèµ·ãããŠããå¯èœæ§ã瀺ããŸãã
æé©åæŠç¥ïŒã€ãã³ããã³ãã©ã³ãŒããæé©åããã€ãã³ããªã¹ããŒããããŠã³ã¹ãŸãã¯ã¹ããããªã³ã°ããéãåŠçãWebã¯ãŒã«ãŒã«ãªãããŒãããŸãã
Performance APIã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- æ£ç¢ºãªæé枬å®ã«ã¯
performance.now()
ã䜿çšãããããã¯ããé«ã粟床ãæäŸããå調å¢å ã§ãããããã³ãŒãå®è¡æéã®æž¬å®ã«çæ³çã§ãã - ããã©ãŒãã³ã¹ã€ãã³ããåæããããã«ããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³ã掻çšãããããã©ãŒãã³ã¹ã¿ã€ã ã©ã€ã³ã¯ãããŒãžã®ã©ã€ãã¿ã€ã äžã«çºçããããã©ãŒãã³ã¹é¢é£ã€ãã³ãã®å æ¬çãªèšé²ãæäŸããŸãã
- ã«ã¹ã¿ã ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãå®çŸ©ããããã«ãŠãŒã¶ãŒã¿ã€ãã³ã°APIã䜿çšãããããã«ãããéèŠãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãã¢ããªã±ãŒã·ã§ã³åºæã®ããžãã¯ã®ããã©ãŒãã³ã¹ã远跡ã§ããŸãã
- å®éã®ç°å¢ã§ããã©ãŒãã³ã¹ãç£èŠãããGoogle AnalyticsãNew RelicãSentryãªã©ã®ããŒã«ã䜿çšããŠãå®éã®ãŠãŒã¶ãŒããããã©ãŒãã³ã¹ããŒã¿ãåéããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®ããæ£ç¢ºãªå šäœåãåŸãããŸãã
- ããã©ãŒãã³ã¹ããžã§ãããèšå®ããæéçµéãšãšãã«é²æã远跡ãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ç®æšãå®çŸ©ããæéçµéãšãšãã«é²æã远跡ããŸããããã«ãããããã©ãŒãã³ã¹ã®æé©åã«éäžãç¶ããã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®æåŸ ã«å¿ããããšãä¿èšŒã§ããŸãã
- Performance APIãä»ã®ãããã°ããŒã«ãšçµã¿åãããããã©ãŠã¶ã®éçºè ããŒã«ã¯ãJavaScriptã³ãŒãã®ãããã¡ã€ãªã³ã°ãšãããã°ã®ããã®åŒ·åãªæ©èœãæäŸããŸãããããã®ããŒã«ãšPerformance APIãçµã¿åãããããšã§ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ã€ããŠããã«æ·±ãæŽå¯ãåŸãããšãã§ããŸãã
ããã©ãŒãã³ã¹ç£èŠã®ããã®ããŒã«ãšã©ã€ãã©ãª
Performance APIã¯çããŒã¿ãæäŸããŸããããã®ããŒã¿ããã广çã«åæããèŠèŠåããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ãã©ã€ãã©ãªããããŸãã
- Google LighthouseïŒãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãSEOãç£æ»ããããã®èªåããŒã«ã§ããPerformance APIã䜿çšããŠã¡ããªã¯ã¹ãåéããæ¹åã®ããã®å®çšçãªæšå¥šäºé ãæäŸããŸãã
- WebPageTestïŒããŸããŸãªå Žæããã©ãŠã¶ãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãã§ããç¡æã®ãŠã§ããµã€ãé床ãã¹ãããŒã«ã§ãã
- New Relic BrowserïŒããŒãžèªã¿èŸŒã¿æéãJavaScriptãšã©ãŒããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã¡ããªã¯ã¹ãªã©ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã«é¢ãããªã¢ã«ã¿ã€ã ã®æŽå¯ãæäŸããå æ¬çãªããã©ãŒãã³ã¹ç£èŠããŒã«ã§ãã
- SentryïŒJavaScriptã³ãŒãã®åé¡ãç¹å®ãã解決ããã®ã«åœ¹ç«ã€ãšã©ãŒè¿œè·¡ããã³ããã©ãŒãã³ã¹ç£èŠãã©ãããã©ãŒã ã§ãã
- Perfume.jsïŒããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãåéã»å ±åããããã®ã·ã³ãã«ãªAPIãæäŸãããå°èŠæš¡ãªãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã§ãã
ãŸãšã
JavaScript Performance APIã¯ã髿§èœãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã¹ãŠã®Webéçºè ã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã§ããPerformance APIã®æ©èœã掻çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ã©ã³ã¿ã€ã æåãæ·±ãçè§£ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããã«ã³ãŒããæé©åã§ããŸãããããã®ããã©ãŒãã³ã¹ç£èŠæè¡ãå®è£ ããç¶ç¶çã«ã³ãŒããæ¹åããããšã§ãäžçäžã®ãŠãŒã¶ãŒãåã°ãããããéããããå¿çæ§ã®é«ããŠã§ããµã€ããWebã¢ããªãå®çŸããŸããWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããéã«ã¯ããã¹ãŠã®äººã«äžè²«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããããã«ã倿§ãªãããã¯ãŒã¯æ¡ä»¶ãšããã€ã¹ã®èœåãèæ ®ããããšãå¿ããªãã§ãã ããã