ããã€ã¹ã¡ã¢ãªAPIã䜿çšããŠãã¡ã¢ãªãèªèããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãã倿§ãªããã€ã¹ããããã¯ãŒã¯æ¡ä»¶ã§åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããæ¹æ³ãåŠã³ãŸããããå©çšå¯èœãªã¡ã¢ãªãçè§£ããããã«å¯Ÿå¿ããããšã§ãããã©ãŒãã³ã¹ãåäžãããã¯ã©ãã·ã¥ãé²ããŸãã
ããã€ã¹ã¡ã¢ãªAPIïŒã¡ã¢ãªèªèã«ããã¢ããªã±ãŒã·ã§ã³ã®æé©å
仿¥ã®å€æ§ãªããžã¿ã«ç°å¢ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ãã€ãšã³ãã¯ãŒã¯ã¹ããŒã·ã§ã³ãããªãœãŒã¹ãéãããæºåž¯é»è©±ãŸã§ãå¹ åºãããã€ã¹ã§å®ç§ã«åäœããå¿ èŠããããŸããããã€ã¹ã¡ã¢ãªAPIã¯ãéçºè ããŠãŒã¶ãŒã®ããã€ã¹ã§å©çšå¯èœãªã¡ã¢ãªã«é©å¿ããã¡ã¢ãªèªèã¢ããªã±ãŒã·ã§ã³ãäœæã§ããããã«ãã匷åãªããŒã«ã§ãããããã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸãã
ããã€ã¹ã¡ã¢ãªAPIã®çè§£
ããã€ã¹ã¡ã¢ãªAPIã¯ãããã€ã¹ã®RAMã®ããããã®éããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«å ¬éããJavaScript APIã§ãããã®æ å ±ã«ãããéçºè ã¯ãªãœãŒã¹å²ãåœãŠãšã¢ããªã±ãŒã·ã§ã³ã®åäœã«ã€ããŠæ å ±ã«åºã¥ããæææ±ºå®ãè¡ããã¡ã¢ãªãéãããŠããããã€ã¹ã§ã®ããã©ãŒãã³ã¹ãæé©åã§ããŸããããã€ã¹ã®æ©èœã«é¢ä¿ãªããäžè²«ããŠåªãããšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ãã
ã¡ã¢ãªèªèã®éèŠæ§
ããã€ã¹ã®ã¡ã¢ãªå¶çŽãç¡èŠããã¢ããªã±ãŒã·ã§ã³ã¯ã次ã®ãããªããŸããŸãªåé¡ã«æ©ãŸãããå¯èœæ§ããããŸãã
- ããã©ãŒãã³ã¹ã®äœäžïŒéå°ãªç»åã倧ããªJavaScriptãã¡ã€ã«ããŸãã¯è€éãªã¢ãã¡ãŒã·ã§ã³ãèªã¿èŸŒããšãã¡ã¢ãªãéãããŠããããã€ã¹ãéè² è·ã«ãªããé å»¶ãå¿çæ§ã®äœäžã«ã€ãªããå¯èœæ§ããããŸãã
- ã¯ã©ãã·ã¥ïŒã¡ã¢ãªäžè¶³ã«ãªããšãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããããŒã¿ã®æå€±ããŠãŒã¶ãŒã®äžæºã«ã€ãªããå¯èœæ§ããããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äœäžïŒé ããŸãã¯äžå®å®ãªã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®æºè¶³åºŠãšãšã³ã²ãŒãžã¡ã³ãã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
å©çšå¯èœãªã¡ã¢ãªãçè§£ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãããã®åé¡ãåé¿ããããã«åäœãåçã«èª¿æŽã§ããŸãã
ããã€ã¹ã¡ã¢ãªAPIã®ä»çµã¿
ããã€ã¹ã¡ã¢ãªAPIã¯ãnavigator
ãªããžã§ã¯ãã«åäžã®ããããã£deviceMemory
ãæäŸããŸãããã®ããããã£ã¯ãããã€ã¹ã§å©çšå¯èœãªRAMã®ããããã®éïŒã®ã¬ãã€ãïŒGBïŒïŒãè¿ããŸããå€ã¯ãæãè¿ã2ã®çޝä¹ã«åãæšãŠãããŸãïŒäŸïŒRAMã3.5 GBã®ããã€ã¹ã¯2 GBãšå ±åãããŸãïŒã
ããã€ã¹ã¡ã¢ãªã«ã¢ã¯ã»ã¹ããæ¹æ³ã®ç°¡åãªäŸã次ã«ç€ºããŸãã
if (navigator.deviceMemory) {
const memory = navigator.deviceMemory;
console.log("Device memory: " + memory + " GB");
}
éèŠäºé ïŒããã€ã¹ã¡ã¢ãªAPIã¯ããããã®å€ãè¿ããŸããããã¯ãªãœãŒã¹äœ¿çšéãæé©åããããã®ã¬ã€ãã©ã€ã³ãšããŠäœ¿çšãã¹ãã§ãããå©çšå¯èœãªã¡ã¢ãªã®æ£ç¢ºãªæž¬å®å€ã§ã¯ãããŸããã
ã¡ã¢ãªèªèã«ããæé©åã®å®è£
ããã€ã¹ã¡ã¢ãªãžã®ã¢ã¯ã»ã¹æ¹æ³ãçè§£ããã®ã§ããã®æ å ±ã«åºã¥ããæé©åã®ããã®å®çšçãªæŠç¥ãæ¢ã£ãŠã¿ãŸãããã
1. é©å¿åç»åèªã¿èŸŒã¿
é©åã«ãµã€ãºèšå®ãããç»åãæäŸããããšã¯ãç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®ããã©ãŒãã³ã¹ã«ãšã£ãŠéèŠã§ããããã©ã«ãã§é«è§£å床ç»åãæäŸããã®ã§ã¯ãªããããã€ã¹ã¡ã¢ãªAPIã䜿çšããŠãã¡ã¢ãªãéãããŠããããã€ã¹ã«å°ããäœè§£å床ã®ç»åãæäŸã§ããŸãã
function loadImage(imageUrl, lowResImageUrl) {
if (navigator.deviceMemory && navigator.deviceMemory <= 2) {
// RAMã2GB以äžã®ããã€ã¹ã«ã¯äœè§£å床ç»åã衚瀺
return lowResImageUrl;
} else {
// ãã®ä»ã®ããã€ã¹ã«ã¯é«è§£å床ç»åã衚瀺
return imageUrl;
}
}
const imageUrl = "/images/high-resolution.jpg";
const lowResImageUrl = "/images/low-resolution.jpg";
const source = loadImage(imageUrl, lowResImageUrl);
// 'source'倿°ã䜿çšããŠç»åURLãèšå®ããŸã
const imgElement = document.getElementById("myImage");
imgElement.src = source;
ãã®äŸã¯åºæ¬çãªå®è£
ã瀺ããŠããŸããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ã<picture>
èŠçŽ ãšsrcset
屿§ã䜿çšããŠã¬ã¹ãã³ã·ãç»åã䜿çšããç»é¢ãµã€ãºãšããã€ã¹ã®æ©èœã«åºã¥ããŠç»åéžæãããã«è©³çްã«å¶åŸ¡ã§ããå ŽåããããŸãã
åœéçãªäŸïŒãããã¯ãŒã¯é床ãããã€ã¹æ®åçãç°ãªãå°åã§éå¶ãããŠããeã³ããŒã¹ãµã€ããèããŠã¿ãŸããããé©å¿åç»åèªã¿èŸŒã¿ã䜿çšãããšãæ¥ç¶é床ãé ãå°åãå€ãããã€ã¹ã®ãŠãŒã¶ãŒã®ãã©ãŠãžã³ã°ãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
2. JavaScriptãã€ããŒãã®åæž
倧ããªJavaScriptãã¡ã€ã«ã¯ãç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã®ããã©ãŒãã³ã¹ã®å€§ããªããã«ããã¯ã«ãªãå¯èœæ§ããããŸããããã€ã¹ã¡ã¢ãªã«åºã¥ããŠJavaScriptãã€ããŒããåæžããããã«ãæ¬¡ã®æŠç¥ãæ€èšããŠãã ããã
- ã³ãŒãåå²ïŒJavaScriptã³ãŒãããå¿ èŠã«ãªã£ããšãã«ã®ã¿èªã¿èŸŒãŸããå°ããªãã£ã³ã¯ã«åå²ããŸããWebpackãParcelãªã©ã®ããŒã«ã䜿çšããŠã³ãŒãåå²ãå®è£ ã§ããŸããã¡ã¢ãªãååãªããã€ã¹ã§ã®ã¿ãéèŠåºŠã®äœãæ©èœãèªã¿èŸŒã¿ãŸãã
- é å»¶èªã¿èŸŒã¿ïŒåæããŒãžèªã¿èŸŒã¿åŸã«ãå¿ é ã§ã¯ãªãJavaScriptã®èªã¿èŸŒã¿ãé å»¶ãããŸãã
- æ©èœæ€åºïŒãŠãŒã¶ãŒã®ãã©ãŠã¶ã§ãµããŒããããŠããªãæ©èœã®ããªãã£ã«ãŸãã¯ã©ã€ãã©ãªãèªã¿èŸŒãŸãªãããã«ããŸãã
if (navigator.deviceMemory && navigator.deviceMemory <= 1) {
// äœã¡ã¢ãªããã€ã¹çšã®å°ããæé©åãããJavaScriptãã³ãã«ãèªã¿èŸŒã¿ãŸã
const script = document.createElement("script");
script.src = "/js/optimized.bundle.js";
document.head.appendChild(script);
} else {
// ãã®ä»ã®ããã€ã¹çšã®å®å
šãªJavaScriptãã³ãã«ãèªã¿èŸŒã¿ãŸã
const script = document.createElement("script");
script.src = "/js/main.bundle.js";
document.head.appendChild(script);
}
3. ã¢ãã¡ãŒã·ã§ã³ãšãšãã§ã¯ãã®æé©å
è€éãªã¢ãã¡ãŒã·ã§ã³ãèŠèŠå¹æã¯ãããªãã®ã¡ã¢ãªãšåŠçèœåãæ¶è²»ããå¯èœæ§ããããŸããäœã¡ã¢ãªããã€ã¹ã§ã¯ãããã©ãŒãã³ã¹ãåäžãããããã«ããããã®ãšãã§ã¯ããç°¡ç¥åãŸãã¯ç¡å¹ã«ããããšãæ€èšããŠãã ããã
function initAnimations() {
if (navigator.deviceMemory && navigator.deviceMemory <= 2) {
// äœã¡ã¢ãªããã€ã¹ã§ã¯ã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ããããããã·ã³ãã«ãªã¢ãã¡ãŒã·ã§ã³ã䜿çšããŸã
console.log("Animations disabled for low-memory devices");
} else {
// è€éãªã¢ãã¡ãŒã·ã§ã³ãåæåããŸã
console.log("Initializing complex animations");
// ... ããã«ã¢ãã¡ãŒã·ã§ã³ã³ãŒã ...
}
}
initAnimations();
äŸïŒè©³çްãª3Då°åœ¢ã衚瀺ãããããã³ã°ã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ã¢ãªãéãããŠããããã€ã¹ã§å°åœ¢ã¬ã³ããªã³ã°ãç°¡ç¥åããããã¬ã³ããªã³ã°ããããªããžã§ã¯ãã®æ°ãæžããããããå¯èœæ§ããããŸãã
4. ããŒã¿ã¹ãã¬ãŒãžã®ç®¡ç
倧éã®ããŒã¿ãããŒã«ã«ã«ïŒäŸïŒIndexedDBãŸãã¯localStorageã䜿çšããŠïŒä¿åããã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ã¢ãªäœ¿çšéã«æ³šæããå¿ èŠããããŸããæ¬¡ã®æŠç¥ãæ€èšããŠãã ããã
- ä¿åããããŒã¿éãå¶éããïŒå¿ èŠãªããŒã¿ã®ã¿ãä¿åããäžèŠãªããŒã¿ã¯å®æçã«åé€ããŸãã
- ããŒã¿ãå§çž®ããïŒå§çž®ã¢ã«ãŽãªãºã ã䜿çšããŠãä¿åãããããŒã¿ã®ãµã€ãºãçž®å°ããŸãã
- ã¹ããªãŒãã³ã°APIã䜿çšããïŒå¯èœãªå Žåã¯ãããŒã¿ã»ããå šäœãäžåºŠã«ã¡ã¢ãªã«èªã¿èŸŒãã®ã§ã¯ãªããã¹ããªãŒãã³ã°APIã䜿çšããŠå€§ããªããŒã¿ã»ãããå°ããªãã£ã³ã¯ã§åŠçããŸãã
Quota APIã¯ãDevice Memory APIãšçµã¿åãããŠäŸ¡å€ãããå ŽåããããŸãããã ããç©æ¥µçãªQuota䜿çšã«ã¯æ³šæãå¿ èŠã§ããQuotaå¶éã«ããããŒã¿æå€±ãäºæããªãåäœãªã©ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
5. DOMã®è€éæ§ã®åæž
倧ãããŠè€éãªDOMïŒDocument Object ModelïŒã¯ãããªãã®ã¡ã¢ãªãæ¶è²»ããå¯èœæ§ããããŸããDOMèŠçŽ ã®æ°ãæå°éã«æããäžèŠãªãã¹ããé¿ããŠãã ãããè€éãªUIãæ±ãéã®ããã©ãŒãã³ã¹ãåäžãããããã«ãä»®æ³DOMãã·ã£ããŠDOMãªã©ã®ãã¯ããã¯ã䜿çšããŠãã ããã
ã³ã³ãã³ããå°ããªãã£ã³ã¯ã§èªã¿èŸŒãããã«ããŒãžããŒã·ã§ã³ãŸãã¯ç¡éã¹ã¯ããŒã«ã®äœ¿çšãæ€èšããåæDOMãµã€ãºãåæžããŠãã ããã
6. ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®èæ ®äºé
JavaScriptã«ã¯èªåã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããããŸãããéå°ãªãªããžã§ã¯ãã®äœæãšç Žæ£ã¯äŸç¶ãšããŠããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãªãŒããŒããããæå°éã«æããããã«ã³ãŒããæé©åããŠãã ãããäžæçãªãªããžã§ã¯ããäžå¿ èŠã«äœæããã®ãé¿ããå¯èœãªå Žåã¯ãªããžã§ã¯ããåå©çšããŠãã ããã
7. ã¡ã¢ãªäœ¿çšéã®ç£èŠ
ææ°ã®ãã©ãŠã¶ã¯ãã¡ã¢ãªäœ¿çšéãç£èŠããããã®ããŒã«ãæäŸããŠããŸãããããã®ããŒã«ã䜿çšããŠãã¡ã¢ãªãªãŒã¯ãç¹å®ããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªãããããªã³ããæé©åããŠãã ãããããšãã°ãChrome DevToolsã«ã¯ãã¡ã¢ãªå²ãåœãŠãæéãšãšãã«è¿œè·¡ã§ããã¡ã¢ãªããã«ããããŸãã
ããã€ã¹ã¡ã¢ãªAPIãè¶ ãã
ããã€ã¹ã¡ã¢ãªAPIã¯è²ŽéãªããŒã«ã§ãããæ¬¡ã®ãããªã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããä»ã®èŠå ãèæ ®ããããšãéèŠã§ãã
- ãããã¯ãŒã¯æ¡ä»¶ïŒé ããŸãã¯ä¿¡é Œæ§ã®äœããããã¯ãŒã¯æ¥ç¶ã«å¯ŸããŠã¢ããªã±ãŒã·ã§ã³ãæé©åããŠãã ããã
- CPUããã©ãŒãã³ã¹ïŒè€éãªèšç®ãã¬ã³ããªã³ã°ãªã©ã®CPUè² è·ã®é«ãæäœã«æ³šæããŠãã ããã
- ããããªãŒå¯¿åœïŒç¹ã«ã¢ãã€ã«ããã€ã¹ã§ã¯ãããããªãŒæ¶è²»ãæå°éã«æããããã«ã¢ããªã±ãŒã·ã§ã³ãæé©åããŠãã ããã
ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ã
ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã®ååã¯ãã¡ã¢ãªèªèã¢ããªã±ãŒã·ã§ã³æé©åã®ç®æšãšããäžèŽããŠããŸãããã¹ãŠã®ããã€ã¹ã§ããŸãæ©èœããã³ã¢æ©èœã»ããããå§ããæ¬¡ã«ååãªãªãœãŒã¹ãæã€ããã€ã¹ã§ããé«åºŠãªæ©èœã§ã¢ããªã±ãŒã·ã§ã³ã段éçã«åŒ·åããŸãã
ãã©ãŠã¶ã®äºææ§ãšæ©èœæ€åº
ããã€ã¹ã¡ã¢ãªAPIã¯ã»ãšãã©ã®ææ°ãã©ãŠã¶ã§ãµããŒããããŠããŸãããAPIã䜿çšããåã«ãã©ãŠã¶ã®ãµããŒãã確èªããããšãäžå¯æ¬ ã§ããæ©èœæ€åºã䜿çšããŠãã³ãŒãããã¹ãŠã®ãã©ãŠã¶ã§æ£ããåäœããããšã確èªã§ããŸãã
if (navigator.deviceMemory) {
// ããã€ã¹ã¡ã¢ãªAPIã¯ãµããŒããããŠããŸã
console.log("Device Memory API is supported");
} else {
// ããã€ã¹ã¡ã¢ãªAPIã¯ãµããŒããããŠããŸãã
console.log("Device Memory API is not supported");
// ãã©ãŒã«ããã¯ãšã¯ã¹ããªãšã³ã¹ãæäŸããŸã
}
ãã©ãŠã¶ãµããŒãããŒãã«ïŒ2023幎10æ26æ¥çŸåšïŒïŒ
- ChromeïŒãµããŒã
- FirefoxïŒãµããŒã
- SafariïŒãµããŒãïŒSafari 13以éïŒ
- EdgeïŒãµããŒã
- OperaïŒãµããŒã
ææ°ã®ãã©ãŠã¶ãµããŒãæ å ±ã«ã€ããŠã¯ãåžžã«ææ°ã®ãã©ãŠã¶ããã¥ã¡ã³ããåç §ããŠãã ããã
ãã©ã€ãã·ãŒã«é¢ããèæ ®äºé
ããã€ã¹ã¡ã¢ãªAPIã¯ãŠãŒã¶ãŒã®ããã€ã¹ã«é¢ããæ å ±ãå ¬éããããããã©ã€ãã·ãŒã«é¢ããæžå¿µãçããŸããäžéšã®ãŠãŒã¶ãŒã¯ãã®æ å ±ããŠã§ããµã€ããšå ±æããããšã«äžå¿«æã瀺ãå¯èœæ§ããããŸããããã€ã¹ã¡ã¢ãªAPIãã©ã®ããã«äœ¿çšããŠãããã«ã€ããŠéææ§ãä¿ã¡ããŠãŒã¶ãŒã«ãªããã¢ãŠãã®ãªãã·ã§ã³ãæäŸããããšãéèŠã§ãããã ããããã€ã¹ã¡ã¢ãªAPIã¯äœãªã¹ã¯ã®ãã£ã³ã¬ãŒããªã³ãã£ã³ã°ãã¯ãã«ãšèŠãªãããŠãããããããªããã¢ãŠããããããã®æšæºçãªã¡ã«ããºã ã¯ãããŸãããæ å ±ã責任ãæã£ãŠå«ççã«äœ¿çšããããšã«çŠç¹ãåœãŠãŠãã ããã
ããŒã¿ãã©ã€ãã·ãŒã®ãã¹ããã©ã¯ãã£ã¹ã«åŸããGDPRïŒäžè¬ããŒã¿ä¿è·èŠåïŒããã³CCPAïŒã«ãªãã©ã«ãã¢æ¶è²»è ãã©ã€ãã·ãŒæ³ïŒãªã©ã®é¢é£èŠå¶ãéµå®ããŠãã ããã
çµè«
ããã€ã¹ã¡ã¢ãªAPIã¯ãå¹ åºãããã€ã¹ã§åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããã¡ã¢ãªèªèã¢ããªã±ãŒã·ã§ã³ãäœæããããã®è²ŽéãªããŒã«ã§ããå©çšå¯èœãªã¡ã¢ãªãçè§£ããããã«å¯Ÿå¿ããããšã§ããªãœãŒã¹äœ¿çšéãæé©åããã¯ã©ãã·ã¥ãé²ããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããã¡ã¢ãªèªèéçºãã©ã¯ãã£ã¹ãæ¡çšããŠãã¢ããªã±ãŒã·ã§ã³ãããã©ãŒãã³ã¹ãé«ãããã¹ãŠã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããããã«ããŠãã ãããããã€ã¹ã®æ©èœã«é¢ä¿ãªããããã€ã¹ã¡ã¢ãªã«åºã¥ããæé©åã¯ãããå æ¬çãªãŠã§ããšã¯ã¹ããªãšã³ã¹ã®äœæã«åœ¹ç«ã¡ãŸãã
ãã®ããã°æçš¿ã§èª¬æãããã¯ããã¯ãå®è£ ããããšã§ãããã©ãŒãã³ã¹ãé«ãã ãã§ãªããããã€ã¹ããããã¯ãŒã¯æ¡ä»¶ã®çµ¶ããå€åããç¶æ³ã«å¯ŸããŠãããå埩åãããé©å¿æ§ã®ããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåªå ããããšãå¿ãããåžžã«ããŸããŸãªããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠãæé©ãªããã©ãŒãã³ã¹ã確ä¿ããŠãã ãããã¢ããªã±ãŒã·ã§ã³ã®ãã¶ã€ã³ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«ãããã€ã¹ã¡ã¢ãªAPIã®çè§£ãšäœ¿çšã«æéãæè³ããŠãã ãããç¹ã«ãäœã¡ã¢ãªããã€ã¹ãæ®åããŠããå°åã§ã¯ããããéèŠã§ãã