Resource Timing APIã䜿çšããŠãããã³ããšã³ãããã©ãŒãã³ã¹ã«é¢ããæ·±ãæŽå¯ãè§£ãæãããŸããããæé©åãããããŒãããã©ãŒãã³ã¹ã®ããã«ããªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãéèšã»åæããæ¹æ³ãåŠã³ãŸãã
ããã³ããšã³ãããã©ãŒãã³ã¹APIãªãœãŒã¹ã¿ã€ãã³ã°ã®éèšïŒããŒãããã©ãŒãã³ã¹åæ
åè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ã¯ãããã³ããšã³ãã®ããã©ãŒãã³ã¹æé©åãäžå¯æ¬ ã§ãããã®æé©åã®éèŠãªåŽé¢ã¯ããŠã§ããµã€ããã¢ããªã±ãŒã·ã§ã³ã§ãªãœãŒã¹ãã©ã®ããã«èªã¿èŸŒãŸããããçè§£ããããšã«ãããŸããåºç¯ãªPerformance APIã¹ã€ãŒãã®äžéšã§ããResource Timing APIã¯ããã©ãŠã¶ãååŸããåãªãœãŒã¹ã®ã¿ã€ãã³ã°ã«é¢ããè©³çŽ°ãªæŽå¯ãæäŸããŸãããã®æ å ±ã¯ãããã«ããã¯ãç¹å®ããå šäœçãªããŒãããã©ãŒãã³ã¹ãåäžãããããã«éåžžã«äŸ¡å€ããããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãResource Timing APIãæŽ»çšãããã®ããŒã¿ãéèšããããŒãããã©ãŒãã³ã¹åæã«äœ¿çšããæ¹æ³ãæ¢ããŸãã
Resource Timing APIãçè§£ãã
Resource Timing APIã¯ãç»åãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒãããã®ä»ã®ã¢ã»ãããªã©ããŠã§ãããŒãžã«ãã£ãŠèªã¿èŸŒãŸãããªãœãŒã¹ã«é¢ãã詳现ãªã¿ã€ãã³ã°æ å ±ãæäŸããŸããããã«ã¯ã次ã®ãããªã¡ããªã¯ã¹ãå«ãŸããŸãïŒ
- ã€ãã·ãšãŒã¿ãŒã¿ã€ã (Initiator Type): ãªã¯ãšã¹ããéå§ããèŠçŽ ã®çš®é¡ïŒäŸïŒ'img', 'script', 'link'ïŒã
- åå (Name): ãªãœãŒã¹ã®URLã
- éå§æé (Start Time): ãã©ãŠã¶ããªãœãŒã¹ã®ååŸãéå§ãããšãã®ã¿ã€ã ã¹ã¿ã³ãã
- ãã§ããéå§ (Fetch Start): ãã©ãŠã¶ããã£ã¹ã¯ãã£ãã·ã¥ãŸãã¯ãããã¯ãŒã¯ãããªãœãŒã¹ã®ãã§ãããéå§ããçŽåã®ã¿ã€ã ã¹ã¿ã³ãã
- ãã¡ã€ã³æ€çŽ¢éå§/çµäº (Domain Lookup Start/End): DNSæ€çŽ¢ããã»ã¹ãéå§ããã³çµäºãããšãã瀺ãã¿ã€ã ã¹ã¿ã³ãã
- æ¥ç¶éå§/çµäº (Connect Start/End): ãµãŒããŒãžã®TCPæ¥ç¶ãéå§ããã³çµäºãããšãã瀺ãã¿ã€ã ã¹ã¿ã³ãã
- ãªã¯ãšã¹ãéå§/çµäº (Request Start/End): HTTPãªã¯ãšã¹ããéå§ããã³çµäºãããšãã瀺ãã¿ã€ã ã¹ã¿ã³ãã
- ã¬ã¹ãã³ã¹éå§/çµäº (Response Start/End): HTTPã¬ã¹ãã³ã¹ãéå§ããã³çµäºãããšãã瀺ãã¿ã€ã ã¹ã¿ã³ãã
- 転éãµã€ãº (Transfer Size): 転éããããªãœãŒã¹ã®ãµã€ãºïŒãã€ãåäœïŒã
- ãšã³ã³ãŒããããããã£ãµã€ãº (Encoded Body Size): ãšã³ã³ãŒããããïŒäŸïŒGZIPå§çž®ãããïŒãªãœãŒã¹ããã£ã®ãµã€ãºã
- ãã³ãŒããããããã£ãµã€ãº (Decoded Body Size): ãã³ãŒãããããªãœãŒã¹ããã£ã®ãµã€ãºã
- æé (Duration): ãªãœãŒã¹ã®ååŸã«è²»ããããåèšæéïŒresponseEnd - startTimeïŒã
ãããã®ã¡ããªã¯ã¹ã«ãããéçºè ã¯ããã©ãŒãã³ã¹ãæ¹åã§ããç¹å®ã®é åãæ£ç¢ºã«ç¹å®ã§ããŸããäŸãã°ãé·ãDNSæ€çŽ¢æéã¯ãããé«éãªDNSãããã€ããŒãžã®åãæ¿ããCDNã®æŽ»çšã瀺åãããããããŸãããé ãæ¥ç¶æéã¯ããããã¯ãŒã¯ã®æ··éããµãŒããŒåŽã®åé¡ã瀺ãå¯èœæ§ããããŸãã倧ããªè»¢éãµã€ãºã¯ãç»åã®æé©åãã³ãŒãã®æå°åã®æ©äŒãæµ®ã圫ãã«ããå¯èœæ§ããããŸãã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãžã®ã¢ã¯ã»ã¹
Resource Timing APIã«ã¯ãJavaScriptã®performance
ãªããžã§ã¯ããä»ããŠã¢ã¯ã»ã¹ããŸãïŒ
const resourceTimingEntries = performance.getEntriesByType("resource");
resourceTimingEntries.forEach(entry => {
console.log(entry.name, entry.duration);
});
ãã®ã³ãŒãã¹ããããã¯ããã¹ãŠã®ãªãœãŒã¹ã¿ã€ãã³ã°ãšã³ããªãååŸããåãªãœãŒã¹ã®ååãšæéãã³ã³ãœãŒã«ã«èšé²ããŸããã»ãã¥ãªãã£äžã®çç±ããããã©ãŠã¶ã¯Resource Timing APIã«ãã£ãŠæäŸããã詳现ã¬ãã«ãå¶éããå Žåãããããšã«æ³šæããŠãã ãããããã¯å€ãã®å Žåãã¯ãã¹ãªãªãžã³ãªãœãŒã¹ããã®ã¿ã€ãã³ã°æ
å ±ãå
¬éããããšãèš±å¯ããtimingAllowOrigin
ããããŒã«ãã£ãŠå¶åŸ¡ãããŸãã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã®éèš
çã®ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã¯æçšã§ãããå®çšçãªæŽå¯ãåŸãããã«ã¯ããããéèšãåæããå¿ èŠããããŸããéèšã«ã¯ãããŒã¿ãã°ã«ãŒãåããã³èŠçŽããŠãåŸåããã¿ãŒã³ãç¹å®ããäœæ¥ãå«ãŸããŸããããã«ã¯ããã€ãã®æ¹æ³ããããŸãïŒ
ãªãœãŒã¹ã¿ã€ãå¥
ãªãœãŒã¹ãã¿ã€ãå¥ïŒäŸïŒç»åãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒãïŒã«ã°ã«ãŒãåããããšã§ãåã«ããŽãªã®å¹³åããŒãæéãæ¯èŒã§ããŸããããã«ãããç¹å®ã¿ã€ãã®ãªãœãŒã¹ãä»ãããäžè²«ããŠé ããã©ãããæããã«ããããšãã§ããŸãã
const resourceTypes = {};
resourceTimingEntries.forEach(entry => {
const initiatorType = entry.initiatorType;
if (!resourceTypes[initiatorType]) {
resourceTypes[initiatorType] = {
count: 0,
totalDuration: 0,
averageDuration: 0
};
}
resourceTypes[initiatorType].count++;
resourceTypes[initiatorType].totalDuration += entry.duration;
});
for (const type in resourceTypes) {
resourceTypes[type].averageDuration = resourceTypes[type].totalDuration / resourceTypes[type].count;
console.log(type, resourceTypes[type].averageDuration);
}
ãã®ã³ãŒãã¯ãåãªãœãŒã¹ã¿ã€ãã®å¹³åããŒãæéãèšç®ããã³ã³ãœãŒã«ã«èšé²ããŸããäŸãã°ãç»åã®å¹³åããŒãæéãã¹ã¯ãªãããããèããé«ãããšã倿ããå Žåãç»åã®æé©åãå¿ èŠã§ããããšã瀺ããŠããŸãã
ãã¡ã€ã³å¥
ãªãœãŒã¹ããã¡ã€ã³å¥ã«ã°ã«ãŒãåããããšã§ãããŸããŸãªã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒããµãŒãããŒãã£ãµãŒãã¹ã®ããã©ãŒãã³ã¹ãè©äŸ¡ã§ããŸããããã¯ãããã©ãŒãã³ã¹ã®äœããã¡ã€ã³ãç¹å®ãã代æ¿ãããã€ããŒãæ€èšããã®ã«åœ¹ç«ã¡ãŸãã
const resourceDomains = {};
resourceTimingEntries.forEach(entry => {
const domain = new URL(entry.name).hostname;
if (!resourceDomains[domain]) {
resourceDomains[domain] = {
count: 0,
totalDuration: 0,
averageDuration: 0
};
}
resourceDomains[domain].count++;
resourceDomains[domain].totalDuration += entry.duration;
});
for (const domain in resourceDomains) {
resourceDomains[domain].averageDuration = resourceDomains[domain].totalDuration / resourceDomains[domain].count;
console.log(domain, resourceDomains[domain].averageDuration);
}
ãã®ã³ãŒãã¯ãåãã¡ã€ã³ã®å¹³åããŒãæéãèšç®ããã³ã³ãœãŒã«ã«èšé²ããŸããç¹å®ã®CDNãäžè²«ããŠé ãããšã«æ°ä»ããå Žåã¯ããã®ããã©ãŒãã³ã¹ã調æ»ããããå¥ã®ãããã€ããŒã«åãæ¿ããããšãæ€èšãããšããã§ããããäŸãã°ãCloudflareãšAkamaiã®äž¡æ¹ã䜿çšããŠããã·ããªãªãèããŠã¿ãŸãããããã®éèšã«ãããç¹å®ã®ã³ã³ããã¹ãã§äž¡è ã®ããã©ãŒãã³ã¹ãçŽæ¥æ¯èŒã§ããŸãã
ããŒãžå¥
ããŒãžïŒãŸãã¯ã«ãŒãïŒå¥ã«ããŒã¿ãéèšããããšã§ãç¹ã«ããã©ãŒãã³ã¹ã®æªãããŒãžãç¹å®ã§ããŸããããã«ãããæé©åã®åãçµã¿ã«åªå é äœãä»ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æã倧ããªåœ±é¿ãäžããããŒãžã«éäžããããšãã§ããŸãã
ããã¯å€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒãã£ã³ã°ã·ã¹ãã ãšã®çµ±åãå¿ èŠã§ããåãªãœãŒã¹ã¿ã€ãã³ã°ãšã³ããªãçŸåšã®ããŒãžã®URLãŸãã¯ã«ãŒãã«é¢é£ä»ããå¿ èŠããããŸããå®è£ ã¯ã䜿çšããŠãããã¬ãŒã ã¯ãŒã¯ïŒäŸïŒReactãAngularãVue.jsïŒã«ãã£ãŠç°ãªããŸãã
ã«ã¹ã¿ã ã¡ããªã¯ã¹ã®äœæ
Resource Timing APIã«ãã£ãŠæäŸãããæšæºã¡ããªã¯ã¹ãè¶ ããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®ç¹å®åŽé¢ã远跡ããããã®ã«ã¹ã¿ã ã¡ããªã¯ã¹ãäœæã§ããŸããäŸãã°ãç¹å®ã®ã³ã³ããŒãã³ãã®èªã¿èŸŒã¿ãç¹å®èŠçŽ ã®ã¬ã³ããªã³ã°ã«ãããæéãæž¬å®ãããå Žåãããã§ãããã
ããã¯ãperformance.mark()
ããã³ performance.measure()
ã¡ãœããã䜿çšããŠå®çŸã§ããŸãïŒ
performance.mark('component-start');
// Load the component
performance.mark('component-end');
performance.measure('component-load', 'component-start', 'component-end');
const componentLoadTime = performance.getEntriesByName('component-load')[0].duration;
console.log('Component load time:', componentLoadTime);
ãã®ã³ãŒãã¹ããããã¯ãã³ã³ããŒãã³ãã®èªã¿èŸŒã¿ã«ãããæéãæž¬å®ããã³ã³ãœãŒã«ã«èšé²ããŸãããã®åŸããããã®ã«ã¹ã¿ã ã¡ããªã¯ã¹ããæšæºã®Resource Timing APIã¡ããªã¯ã¹ãšåãæ¹æ³ã§éèšã§ããŸãã
ããã©ãŒãã³ã¹ã€ã³ãµã€ãã®ããã®ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿åæ
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãéèšããããããã䜿çšããŠããã©ãŒãã³ã¹æ¹åã®ããã®ç¹å®ã®é åãç¹å®ã§ããŸãã以äžã«ãäžè¬çãªã·ããªãªãšæœåšçãªè§£æ±ºçãããã€ã瀺ããŸãïŒ
é·ãDNSæ€çŽ¢æé
- åå ïŒ äœéãªDNSãµãŒããŒãé éå°ã®DNSãµãŒããŒãé »åºŠã®äœãDNSæ€çŽ¢ã
- 解決çïŒ ããé«éãªDNSãããã€ããŒïŒäŸïŒCloudflare, Google Public DNSïŒãžã®åãæ¿ããCDNãæŽ»çšããŠãŠãŒã¶ãŒã«è¿ãå Žæã§DNSã¬ã³ãŒãããã£ãã·ã¥ãDNSããªãã§ããã®å®è£ ã
- äŸïŒ ã°ããŒãã«ãªãŠãŒã¶ãŒã察象ãšãããŠã§ããµã€ãããç¹å®ã®å°åã§é ãããŒãæéãçµéšããŸããããªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã®åæã«ããããããã®å°åã§é·ãDNSæ€çŽ¢æéãæããã«ãªããŸãããã°ããŒãã«ãªDNSãµãŒããŒãæã€CDNã«åãæ¿ãããšãããDNSæ€çŽ¢æéãå€§å¹ ã«ççž®ãããå šäœçãªããã©ãŒãã³ã¹ãåäžããŸããã
é ãæ¥ç¶æé
- åå ïŒ ãããã¯ãŒã¯ã®æ··éããµãŒããŒåŽã®åé¡ããã¡ã€ã¢ãŠã©ãŒã«ã®å¹²æžã
- 解決çïŒ ãµãŒããŒã€ã³ãã©ã®æé©åãCDNã䜿çšããŠãŠãŒã¶ãŒã«è¿ãå Žæã§ã³ã³ãã³ããé ä¿¡ãå¹ççãªéä¿¡ãèš±å¯ããããã«ãã¡ã€ã¢ãŠã©ãŒã«ãèšå®ã
- äŸïŒ ããeã³ããŒã¹ãµã€ãããã·ã§ããã³ã°ã®ããŒã¯æã«æ¥ç¶ãé ããªãåé¡ãæ±ããŠããŸããããªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ã®åæã«ããããµãŒããŒã®éè² è·ãäž»ãªåå ã§ããããšã倿ããŸããããµãŒããŒããŒããŠã§ã¢ãã¢ããã°ã¬ãŒãããããŒã¿ããŒã¹ã¯ãšãªãæé©åããããšã§ãæ¥ç¶æéãæ¹åãããããŒã¯æã®ãã©ãã£ãã¯ã«ãããããã©ãŒãã³ã¹äœäžãé²ãããŸããã
倧ããªè»¢éãµã€ãº
- åå ïŒ æé©åãããŠããªãç»åãæå°åãããŠããªãã³ãŒããäžèŠãªã¢ã»ããã
- 解決çïŒ ç»åã®æé©åïŒäŸïŒå§çž®ããªãµã€ãºãWebPã®ãããªã¢ãã³ãªãã©ãŒãããã®äœ¿çšïŒãJavaScriptããã³CSSã³ãŒãã®æå°åãæªäœ¿çšã®ã³ãŒããšã¢ã»ããã®åé€ãGZIPãŸãã¯Brotliå§çž®ã®æå¹åã
- äŸïŒ ãããã¥ãŒã¹ãµã€ãããããŒãžã®ããŒãæéãå€§å¹ ã«å¢å ãããã倧ãããŠæé©åãããŠããªãç»åã䜿çšããŠããŸãããImageOptimã®ãããªããŒã«ã䜿çšããŠç»åãæé©åããé å»¶èªã¿èŸŒã¿ãå®è£ ãããšãããç»åã®è»¢éãµã€ãºãåæžãããããŒãžã®ããŒãããã©ãŒãã³ã¹ãåäžããŸããã
- åœéåã«é¢ããèæ ®äºé ïŒ ç»åã®æé©åã§ã¯ãããŸããŸãªå°åã§äžè¬çãªç°ãªãç»é¢ãµã€ãºãè§£å床ãèæ ®ããããã«ããŠãã ããã
é ããµãŒããŒã¬ã¹ãã³ã¹æé
- åå ïŒ éå¹çãªãµãŒããŒãµã€ãã³ãŒããããŒã¿ããŒã¹ã®ããã«ããã¯ããããã¯ãŒã¯é å»¶ã
- 解決çïŒ ãµãŒããŒãµã€ãã³ãŒãã®æé©åãããŒã¿ããŒã¹ããã©ãŒãã³ã¹ã®åäžãCDNã䜿çšããŠãŠãŒã¶ãŒã«è¿ãå Žæã§ã³ã³ãã³ãããã£ãã·ã¥ãHTTPãã£ãã·ã³ã°ã®å®è£ ã
- äŸïŒ ãããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ããéå¹çãªããŒã¿ããŒã¹ã¯ãšãªã®ããã«ãµãŒããŒã®ã¬ã¹ãã³ã¹æéãé ããšããåé¡ãæ±ããŠããŸãããããŒã¿ããŒã¹ã¯ãšãªãæé©åãããã£ãã·ã³ã°ã¡ã«ããºã ãå®è£ ãããšããããµãŒããŒã®ã¬ã¹ãã³ã¹æéãå€§å¹ ã«ççž®ãããå šäœçãªããã©ãŒãã³ã¹ãåäžããŸããã
ã¬ã³ããªã³ã°ããããã¯ãããªãœãŒã¹
- åå ïŒ ããŒãžã®ã¬ã³ããªã³ã°ããããã¯ããåæçãªJavaScriptããã³CSSã
- 解決çïŒ éèŠã§ãªãJavaScriptã®èªã¿èŸŒã¿ãé å»¶ãããéèŠãªCSSãã€ã³ã©ã€ã³åããã¹ã¯ãªããã«éåæèªã¿èŸŒã¿ã䜿çšããæªäœ¿çšã®CSSãåé€ããã
- äŸïŒ ããããã°ãµã€ãããããŒãžã®åæã¬ã³ããªã³ã°ãé å»¶ãããã倧ãããŠã¬ã³ããªã³ã°ããããã¯ããCSSãã¡ã€ã«ã䜿çšããŠããŸãããéèŠãªCSSãã€ã³ã©ã€ã³åããéèŠã§ãªãCSSã®èªã¿èŸŒã¿ãé å»¶ãããããšã§ããŠã§ããµã€ãã®äœæããã©ãŒãã³ã¹ãåäžããŸããã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãããã©ãŒãã³ã¹ç£èŠããŒã«ã«çµ±åãã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãæåã§åéã»åæããã®ã¯æéãããããŸãã幞ããªããšã«ãããã€ãã®ããã©ãŒãã³ã¹ç£èŠããŒã«ããã®ããã»ã¹ãèªååãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã«é¢ãããªã¢ã«ã¿ã€ã ã®æŽå¯ãæäŸããŠãããŸãããããã®ããŒã«ã¯éåžžãããã¯ã°ã©ãŠã³ãã§ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãåéãããŠãŒã¶ãŒãã¬ã³ããªãŒãªããã·ã¥ããŒãã§è¡šç€ºããŸãã
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ããµããŒããã人æ°ã®ããã©ãŒãã³ã¹ç£èŠããŒã«ã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- Google PageSpeed Insights: ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãå«ãæ§ã ãªããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã«åºã¥ããŠãããŒãžéåºŠãæ¹åããããã®æšå¥šäºé ãæäŸããŸãã
- WebPageTest: ããŸããŸãªå Žæããã©ãŠã¶ãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãã§ãã詳现ãªãªãœãŒã¹ã¿ã€ãã³ã°æ å ±ãæäŸããŸãã
- New Relic: ãªã¢ã«ã¿ã€ã ã®ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãèŠèŠåãå«ããå æ¬çãªããã©ãŒãã³ã¹ç£èŠæ©èœãæäŸããŸãã
- Datadog: åºç¯ãªã€ã³ãã©ããã³ã¢ããªã±ãŒã·ã§ã³ç£èŠãšãšãã«ã詳现ãªãªãœãŒã¹ã¿ã€ãã³ã°ã¡ããªã¯ã¹ãæäŸããããã©ãŒãã³ã¹ã®å šäœåãæç€ºããŸãã
- Sentry: äž»ã«ãšã©ãŒè¿œè·¡ã«çŠç¹ãåœãŠãŠããŸãããSentryã¯ããã©ãŒãã³ã¹ã®åé¡ãç¹å®ã®ãšã©ãŒãšé¢é£ä»ããããã®ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãå«ããããã©ãŒãã³ã¹ç£èŠæ©èœãæäŸããŸãã
- Lighthouse: ãŠã§ãããŒãžã®å質ãåäžãããããã®ãªãŒãã³ãœãŒã¹ã®èªååããŒã«ã§ããããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã°ã¬ãã·ããŠã§ãã¢ããªãSEOãªã©ã®ç£æ»æ©èœããããŸããChrome DevToolsãã³ãã³ãã©ã€ã³ããŸãã¯Nodeã¢ãžã¥ãŒã«ãšããŠå®è¡ã§ããŸãã
ãããã®ããŒã«ã«ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãçµ±åããããšã§ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãããæ·±ãçè§£ããæ¹åãã¹ãé åããã广çã«ç¹å®ã§ããŸãã
å«ççé æ ®ãšãŠãŒã¶ãŒãã©ã€ãã·ãŒ
ãªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãåéã»åæããéã«ã¯ãå«ççãªæå³åããšãŠãŒã¶ãŒãã©ã€ãã·ãŒãèæ ®ããããšãéèŠã§ããåéããããŒã¿ãšãã®äœ¿ç𿹿³ã«ã€ããŠãŠãŒã¶ãŒã«å¯ŸããŠéææ§ãä¿ã¡ãŸããããGDPRãCCPAãªã©ã®é¢é£ãããã©ã€ãã·ãŒèŠå¶ãéµå®ããŠããããšã確èªããŠãã ããã
å人ãç¹å®ã§ããæ å ±ïŒPIIïŒã®åéãé¿ããå¯èœãªéãããŒã¿ãå¿ååãŸãã¯ä»®ååããŠãã ãããäžæ£ã¢ã¯ã»ã¹ãé瀺ããããŒã¿ãä¿è·ããããã«ãé©åãªã»ãã¥ãªãã£å¯Ÿçã宿œããŠãã ããããŠãŒã¶ãŒã«ããã©ãŒãã³ã¹ç£èŠããªããã¢ãŠãããéžæè¢ãæäŸããããšãæ€èšããŠãã ããã
é«åºŠãªãã¯ããã¯ãšå°æ¥ã®ãã¬ã³ã
Resource Timing APIã¯çµ¶ããé²åããŠãããããã³ããšã³ãã®ããã©ãŒãã³ã¹åæãããã«åŒ·åããããã®æ°ããæ©èœããã¯ããã¯ãç»å ŽããŠããŸããæ³šç®ãã¹ãé«åºŠãªãã¯ããã¯ãšå°æ¥ã®ãã¬ã³ããããã€ã玹ä»ããŸãïŒ
Server Timing API
Server Timing APIã䜿çšãããšããµãŒããŒã¯ãªã¯ãšã¹ãã®åŠçæéã«é¢ããã¿ã€ãã³ã°æ å ±ãå ¬éã§ããŸãããã®æ å ±ããªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãšçµã¿åãããããšã§ããšã³ãããŒãšã³ãã®ããã©ãŒãã³ã¹ã®ããå®å šãªå šäœåãæäŸã§ããŸãã
Long Tasks API
Long Tasks APIã¯ãã¡ã€ã³ã¹ã¬ãããé·æéãããã¯ããUIã®ãžã£ã³ã¯ãå¿çæ§ã®åé¡ãåŒãèµ·ããã¿ã¹ã¯ãç¹å®ããŸãããã®æ å ±ã¯ãJavaScriptã³ãŒããæé©åãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«äœ¿çšã§ããŸãã
WebAssembly (Wasm)
WebAssemblyã¯ããã©ãŠã¶ã§ãã€ãã£ãã«è¿ãããã©ãŒãã³ã¹ãå¯èœã«ããä»®æ³ãã·ã³çšã®ãã€ããªåœä»€ãã©ãŒãããã§ããããã©ãŒãã³ã¹ãéèŠãªã¿ã¹ã¯ã«Wasmã䜿çšãããšãããŒãæéãšå šäœçãªããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
HTTP/3
HTTP/3ã¯HTTPãããã³ã«ã®ææ°ããŒãžã§ã³ã§ãããããã©ãŒãã³ã¹ãšä¿¡é Œæ§ãåäžãããããã«QUICãã©ã³ã¹ããŒããããã³ã«ã䜿çšããŸããHTTP/3ã¯ãé å»¶ã®åæžãæ¥ç¶ç®¡çã®æ¹åãªã©ãHTTP/2ã«æ¯ã¹ãŠããã€ãã®å©ç¹ãæäŸããŸãã
çµè«
Resource Timing APIã¯ãããã³ããšã³ãã®ããã©ãŒãã³ã¹ãçè§£ããæé©åããããã®åŒ·åãªããŒã«ã§ãããªãœãŒã¹ã¿ã€ãã³ã°ããŒã¿ãéèšã»åæããããšã§ãããã«ããã¯ãç¹å®ããããŒãæéãæ¹åããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããçç·Žããããã³ããšã³ãéçºè ã§ãããåå¿è ã§ããã髿§èœãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«ã¯ãResource Timing APIãç¿åŸããããšãäžå¯æ¬ ã§ããããŒã¿é§ååã®æé©åã®åãæŽ»çšãããŠã§ããµã€ããã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ãæå€§éã«åŒãåºããŸããããããã©ãŒãã³ã¹ããŒã¿ãåéã»åæããéã«ã¯ããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãšå«ççé æ ®ãåªå ããããšãå¿ããªãã§ãã ãããææ°ã®ãã¬ã³ãããã¯ããã¯ã«ã€ããŠã®æ å ±ãåžžã«åŸãããšã§ããŠã§ããµã€ããä»åŸäœå¹Žã«ãããã£ãŠé«éã§å¿çæ§ãé«ãããŠãŒã¶ãŒãã¬ã³ããªãŒãªç¶æ ã«ä¿ã€ããšãã§ããŸãããããã®ãã¯ããã¯ãšããŒã«ã掻çšããããšã¯ããã髿§èœã§ã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªãŠã§ãã«è²¢ç®ããŸãã
å®çšçãªæŽå¯ïŒ ãŸãã¯ããªãœãŒã¹ã¿ã€ãå¥ããã³ãã¡ã€ã³å¥ã®åºæ¬çãªãªãœãŒã¹ã¿ã€ãã³ã°éèšãå®è£ ããããšããå§ããŸããããããã«ãããããã©ãŒãã³ã¹ã®ããã«ããã¯ãã©ãã«ãããã«ã€ããŠãå³åº§ã«æŽå¯ãåŸãããšãã§ããŸããæ¬¡ã«ãGoogle PageSpeed InsightsãWebPageTestã®ãããªããã©ãŒãã³ã¹ç£èŠããŒã«ãšçµ±åããããŒã¿åéãšåæãèªååããŸãã