ããã³ããšã³ãIdle Detection APIã®å¿çšãå®è£ ãå«ççé æ ®ãæ¢æ±ããã°ããŒãã«ãªãŠãŒã¶ãŒåãã«ã¹ããŒãã§ãã©ã€ãã·ãŒãå°éããWebã¢ããªãæ§ç¯ããæ¹æ³ã解説ããŸãã
ããã³ããšã³ãIdle Detection APIïŒã°ããŒãã«ãªWebäœéšã®ããã®ãŠãŒã¶ãŒã¢ã¯ãã£ããã£ç£èŠã®å é§ã
ãŸããŸãçžäºæ¥ç¶ãé²ãããžã¿ã«äžçã«ãããŠãçã«åªããå¹ççãªWebäœéšãæäŸããããã«ã¯ããŠãŒã¶ãŒã®è¡åãçè§£ããããšãæãéèŠã§ããããããWebã¢ããªã±ãŒã·ã§ã³ã«ç©æ¥µçã«é¢ãã£ãŠãããŠãŒã¶ãŒãšãåã«ã¿ããéãããŸãŸã«ããŠãããŠãŒã¶ãŒãšãåºå¥ãããšããæ ¹æ¬çãªèª²é¡ãäŸç¶ãšããŠååšããŸãããã®åºå¥ã¯ããªãœãŒã¹ç®¡çãã»ãã¥ãªãã£ãããããŒãœãã©ã€ãºããããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãããŒã¿åæã«è³ããŸã§ãããããé¢ã§æ¥µããŠéèŠã§ãã
é·å¹Žã«ããããéçºè ã¯ããŠã¹ã®åããããŒããŒãå ¥åãã¹ã¯ããŒã«ã€ãã³ããªã©ã远跡ãããã¥ãŒãªã¹ãã£ãã¯ãªææ³ã«é Œã£ãŠããŠãŒã¶ãŒã®ã¢ã¯ãã£ããã£ãæšå®ããŠããŸããããããã®ææ³ã¯æ©èœçã§ã¯ãããã®ã®ãè€éããæœåšçãªããã©ãŒãã³ã¹ã®ãªãŒããŒãããããã©ã€ãã·ãŒã«é¢ããæžå¿µãããããããšãå€ãããã°ãã°äžååã§ãããããã§ç»å Žããã®ãããã³ããšã³ãIdle Detection APIã§ããããã¯ããããã®èª²é¡ã«æ£é¢ããåãçµãããã«èšèšããããã¢ãã³ã§æšæºåããããããå ç¢ãªãœãªã¥ãŒã·ã§ã³ã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ãIdle Detection APIãšã¯äœãããã®ä»çµã¿ãã°ããŒãã«ãªç°å¢ã«ããã倿§ãªå¿çšäŸãå®è£ ã®è©³çްãéèŠãªå«ççèæ ®äºé ããããŠWebéçºã«ãããå°æ¥çãªæå³åãã«ã€ããŠè©³ããæãäžããŠãããŸãã
Webã«ããããŠãŒã¶ãŒã®ã¢ã€ãã«ç¶æ æ€åºãšããæ ¹åŒ·ã課é¡
æ±äº¬ã®ãŠãŒã¶ãŒãéèååŒãã©ãããã©ãŒã ãéããåŸãå°ãäŒæ©ããããã«åžãå€ãããšããŸãããããã¯ããã³ãã³ã®åŠçãç©ççãªææ¥ã«åºåžããªãããeã©ãŒãã³ã°ããŒã¿ã«ãéãããŸãŸã«ããŠãããšããŸãããµãŒããŒåŽããèŠããšãã¯ã©ã€ã¢ã³ãåŽããã®æ£ç¢ºãªãã£ãŒãããã¯ããªããã°ããããã®ã»ãã·ã§ã³ã¯äŸç¶ãšããŠãã¢ã¯ãã£ããã«èŠãã貎éãªãªãœãŒã¹ãæ¶è²»ããæ¥ç¶ãç¶æããæ©å¯ããŒã¿ãå ¬éããããŸãŸã«ãªããšã»ãã¥ãªãã£äžã®ãªã¹ã¯ãããããå¯èœæ§ããããŸããéã«ãeã³ããŒã¹ãµã€ãã¯ããŠãŒã¶ãŒãã«ãŒããæŸæ£ãããšèŠãªãã®ã§ã¯ãªãããŠãŒã¶ãŒã掻åãäžæåæ¢ããããšãæ€ç¥ããéã«ãã¿ã€ã ãªãŒãªå²åŒãããŒãœãã©ã€ãºãããããã³ãããæäŸããããšèãããããããŸããã
ã¢ã€ãã«ç¶æ ãæ€åºããããã®åŸæ¥ã®æ¹æ³ã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- ã€ãã³ããªã¹ããŒïŒ ãmousemoveãããkeydownãããscrollãããclickãããtouchstartããªã©ãç£èŠããŸãããããã¯ãªãœãŒã¹ã倧éã«æ¶è²»ããä¿¡é Œæ§ãäœãå ŽåãããïŒäŸïŒãããªã®èŠèŽã¯ããŠã¹ãããŒããŒãã®å ¥åããªããã¢ã¯ãã£ãïŒãè€éãªãããŠã³ã¹ããžãã¯ãå¿ èŠã«ãªãããšããããããŸãã
- ããŒãããŒããã³ã°ïŒ ãµãŒããŒã«å®æçã«ãªã¯ãšã¹ããéä¿¡ããŸããããã¯ããŠãŒã¶ãŒãæ¬åœã«ã¢ã€ãã«ç¶æ ã§ãã£ãŠãããããã¯ãŒã¯åž¯åå¹ ãšãµãŒããŒãªãœãŒã¹ãæ¶è²»ããŸãã
- Browser Visibility APIïŒ ã¿ãããã©ã¢ã°ã©ãŠã³ããããã¯ã°ã©ãŠã³ãããç¥ãã®ã«äŸ¿å©ã§ããããã©ã¢ã°ã©ãŠã³ãã®ã¿ãå ã§ã®ãŠãŒã¶ãŒã®ã¢ã¯ãã£ããã£ã瀺ããã®ã§ã¯ãããŸããã
ãããã®ã¢ãããŒãã¯ãå®éã®ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®ä»£çææšã§ããããã°ãã°èª€æ€ç¥ãèŠéãã«ã€ãªãããéçºã®è€éããå¢ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœäžãããããªãœãŒã¹ã浪費ãããããå¯èœæ§ããããŸããããçŽæ¥çã§ä¿¡é Œæ§ã®é«ãã·ã°ãã«ãæç¢ºã«å¿ èŠãšãããŠããŸããã
ããã³ããšã³ãIdle Detection APIã®ç޹ä»
Idle Detection APIãšã¯ïŒ
Idle Detection APIã¯ãWebã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒãã¢ã€ãã«ç¶æ ãã¢ã¯ãã£ããããŸãç»é¢ãããã¯ãããŠãããããã¯è§£é€ãããŠããããæ€åºã§ããããã«ãããæ°ããWebãã©ãããã©ãŒã APIã§ããããã¯ãç¹å®ã®WebããŒãžãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã ãã§ãªãããŠãŒã¶ãŒã®ããã€ã¹ãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ç¶æ ããããæ£ç¢ºã§ãã©ã€ãã·ãŒãä¿è·ããæ¹æ³ã§çè§£ããææ®µãæäŸããŸãããã®åºå¥ã¯æ¥µããŠéèŠã§ããã€ãŸããæ¬åœã«ããã€ã¹ããé¢ããŠãããŠãŒã¶ãŒãšãåã«ããªãã®ç¹å®ã®ã¿ããšå¯Ÿè©±ããŠããªãã ãã®ãŠãŒã¶ãŒãšãåºå¥ããã®ã§ãã
ãã®APIã¯ãã©ã€ãã·ãŒãæ žãšããŠèšèšãããŠãããã¢ã€ãã«ç¶æ ãç£èŠããåã«æç€ºçãªãŠãŒã¶ãŒã®èš±å¯ãå¿ èŠã§ããããã«ããããŠãŒã¶ãŒãèªèº«ã®ããŒã¿ãšãã©ã€ãã·ãŒã®ç®¡çæš©ãä¿æããããšãä¿èšŒãããããã¯ãã®äžççãªæ¡çšãšå«ççãªäœ¿çšã«ãšã£ãŠéèŠãªèŠçŽ ã§ãã
ä»çµã¿ïŒã³ã¢ã³ã³ã»ãããšç¶æ
Idle Detection APIã¯ããããããç¬èªã®ãµãç¶æ ãæã€2ã€ã®äž»èŠãªç¶æ ã«åºã¥ããŠåäœããŸãïŒ
-
ãŠãŒã¶ãŒç¶æ
ïŒ ãŠãŒã¶ãŒãããã€ã¹ãšç©æ¥µçã«å¯Ÿè©±ããŠãããïŒäŸïŒã¿ã€ãã³ã°ãããŠã¹ã®ç§»åãç»é¢ã®ã¿ããïŒãäžå®æééã¢ã¯ãã£ãã§ãã£ããã瀺ããŸãã
- "active"ïŒ ãŠãŒã¶ãŒãããã€ã¹ãšå¯Ÿè©±ããŠããŸãã
- "idle"ïŒ ãŠãŒã¶ãŒãéçºè ã®å®çŸ©ããæå°ãããå€ã®æéãããã€ã¹ãšå¯Ÿè©±ããŠããŸããã
-
ç»é¢ç¶æ
ïŒ ãŠãŒã¶ãŒã®ããã€ã¹ç»é¢ã®ç¶æ
ã瀺ããŸãã
- "locked"ïŒ ããã€ã¹ã®ç»é¢ãããã¯ãããŠããŸãïŒäŸïŒã¹ã¯ãªãŒã³ã»ãŒããŒãèµ·åãããã€ã¹ãã¹ãªãŒãç¶æ ïŒã
- "unlocked"ïŒ ããã€ã¹ã®ç»é¢ãããã¯è§£é€ãããæäœå¯èœã§ãã
éçºè ã¯ãæ€åºåšãåæåããéã«æå°ã¢ã€ãã«ãããå€ïŒäŸïŒ60ç§ïŒãæå®ããŸãããã©ãŠã¶ã¯ãã®åŸãã·ã¹ãã ã¬ãã«ã®ã¢ã¯ãã£ããã£ãç£èŠãããŠãŒã¶ãŒããã®ãããå€ãè¶ ããŠãã¢ã€ãã«ãç¶æ ã«ãªã£ããã©ããã倿ããŸãããŠãŒã¶ãŒç¶æ ãŸãã¯ç»é¢ç¶æ ã®ãããããå€åãããšãAPIã¯ã€ãã³ãããã£ã¹ãããããWebã¢ããªã±ãŒã·ã§ã³ãããã«å¿ããŠåå¿ã§ããããã«ããŸãã
ãã©ãŠã¶ã®ãµããŒããšæšæºå
2023幎åŸåãã2024幎åé çŸåšãIdle Detection APIã¯äž»ã«ChromiumããŒã¹ã®ãã©ãŠã¶ïŒChromeãEdgeãOperaãBraveïŒã§ãµããŒããããŠãããW3CãéããŠçŸåšã掻çºãªéçºãšæšæºåãé²ããããŠããŸããããã¯ããã®å©çšå¯èœæ§ãäžçäžã®ç°ãªããã©ãŠã¶ãããŒãžã§ã³ã«ãã£ãŠç°ãªãå¯èœæ§ãããããšãæå³ããŸãããã®APIã¯å€§ããªå©ç¹ãæäŸããŸãããéçºè ã¯ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ããèæ ®ãããŸã ãµããŒãããŠããªããã©ãŠã¶ã«å¯ŸããŠå ç¢ãªãã©ãŒã«ããã¯ãæäŸããå¿ èŠããããŸããããã«ããã奜ã¿ã®ãã©ãŠã¶ãç¹å®ã®ãã©ãŠã¶ã®äœ¿çšãäž»æµã§ããå°ççãªå Žæã«é¢ãããããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ããäœéšãä¿èšŒããŸãã
æšæºåããã»ã¹ã«ã¯ããã©ã€ãã·ãŒæè·è ããã©ãŠã¶ãã³ããŒãå«ãããŸããŸãªå©å®³é¢ä¿è ããã®åºç¯ãªè°è«ãšãã£ãŒãããã¯ãå«ãŸããŠãããã»ãã¥ãªãã£ããã©ã€ãã·ãŒãããã³æçšæ§ã®é«ãåºæºãæºããããšãä¿èšŒãããŠããŸãã
å®çšçãªå¿çšäŸãšãŠãŒã¹ã±ãŒã¹ïŒã°ããŒãã«ãªèŠç¹ïŒ
Idle Detection APIã¯ãããã€ã³ããªãžã§ã³ãã§å®å šããã€ãŠãŒã¶ãŒãã¬ã³ããªãŒãªWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã®è±å¯ãªå¯èœæ§ãè§£ãæŸã¡ãŸãããã®å¿çšç¯å²ã¯ãäžçäžã®ããŸããŸãªæ¥çããŠãŒã¶ãŒã®ããŒãºã«åã³ãŸãã
ã»ãã·ã§ã³ç®¡çãšã»ãã¥ãªãã£
æã峿çã§åœ±é¿åã®ããå¿çšã®äžã€ã¯ãç¹ã«ãªã³ã©ã€ã³ãã³ãã³ã°ãå»çããŒã¿ã«ããŸãã¯ãšã³ã¿ãŒãã©ã€ãºãªãœãŒã¹ãã©ã³ãã³ã°ïŒERPïŒã·ã¹ãã ãªã©ã®æ©å¯æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ã«ãããã»ãã·ã§ã³ç®¡çã®åŒ·åã§ãããšãŒãããïŒäŸïŒGDPRäžïŒãã¢ãžã¢ãã¢ã¡ãªã«å€§éžå šåã§ãå ç¢ãªã»ãã¥ãªãã£ãšããŒã¿ä¿è·èŠå¶ã«ãããäžå®æéã®éã¢ã¯ãã£ãç¶æ ã®åŸãæ©å¯æ§ã®é«ãã»ãã·ã§ã³ãçµäºãŸãã¯ããã¯ããããšã矩åä»ããããŠããŸãã
- èªåãã°ã¢ãŠãïŒ éèæ©é¢ã¯ãä»»æã®ã¿ã€ã ã¢ãŠãã«é Œãã®ã§ã¯ãªãããŠãŒã¶ãŒã®ããã€ã¹å šäœã§ã®çã®ã¢ã€ãã«ç¶æ ãæ€åºããã»ãã·ã§ã³ãèªåçã«ãã°ã¢ãŠããŸãã¯ããã¯ããããšãã§ããŸããããã«ãããå ¬å ±ã®å ŽæïŒäŸïŒã·ã³ã¬ããŒã«ã®ã€ã³ã¿ãŒãããã«ãã§ããã«ãªã³ã®ã³ã¯ãŒãã³ã°ã¹ããŒã¹ïŒã§ãŠãŒã¶ãŒãã³ã³ãã¥ãŒã¿ããé¢ããå Žåã®äžæ£ã¢ã¯ã»ã¹ãé²ããŸãã
- åèªèšŒããã³ããïŒ ã€ã³ãã®æ¿åºãµãŒãã¹ããŒã¿ã«ã¯ãã¢ã¯ãã£ããªã¯ãŒã¯ãããŒãäžå¿ èŠãªã»ãã¥ãªãã£ãã§ãã¯ã§äžæããã®ã§ã¯ãªãããŠãŒã¶ãŒãæ¬åœã«ã¢ã€ãã«ç¶æ ã®ãšãã«ã®ã¿åèªèšŒãæ±ããããšãã§ããŸãã
- ã³ã³ãã©ã€ã¢ã³ã¹ïŒ ã¢ã€ãã«ã»ãã·ã§ã³ã®ã¿ã€ã ã¢ãŠãã匷å¶ããããã®ããæ£ç¢ºãªã¡ã«ããºã ãæäŸããããšã«ãããã¢ããªã±ãŒã·ã§ã³ãã°ããŒãã«ãªã³ã³ãã©ã€ã¢ã³ã¹åºæºïŒäŸïŒPCI DSSãHIPAAãGDPRïŒã«æºæ ããã®ãå©ããŸãã
ãªãœãŒã¹ã®æé©åãšã³ã¹ãåæž
ããã¯ãšã³ãã§ã®åŠçããªã¢ã«ã¿ã€ã ã®ããŒã¿èŠä»¶ã倧ããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠããã®APIã¯ãµãŒããŒã®è² è·ãšé¢é£ã³ã¹ããåçã«åæžã§ããŸããããã¯ãç°ãªãã¿ã€ã ãŸãŒã³ã«ãŸãããæ°çŸäžã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããå€§èŠæš¡ãªSaaSãããã€ããŒã«ãšã£ãŠç¹ã«é¢é£æ§ããããŸãã
- éèŠã§ãªãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®äžæåæ¢ïŒ ã¯ã©ãŠãããŒã¹ã®ã¬ã³ããªã³ã°ãµãŒãã¹ãè€éãªããŒã¿åæãã©ãããã©ãŒã ã¯ããŠãŒã¶ãŒãã¢ã€ãã«ç¶æ ã§ãããšæ€åºãããå Žåãèšç®è² è·ã®é«ãããã¯ã°ã©ãŠã³ãæŽæ°ãããŒã¿ååŸãäžæåæ¢ãããŠãŒã¶ãŒãæ»ã£ãŠãããšãã«ã®ã¿åéã§ããŸããããã«ãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã§CPUãµã€ã¯ã«ãç¯çŽã§ããŸãã
- ãªã¢ã«ã¿ã€ã æ¥ç¶äœ¿çšéã®åæžïŒ ã©ã€ããã£ããã¢ããªã±ãŒã·ã§ã³ããªã¢ã«ã¿ã€ã ããã·ã¥ããŒãïŒäŸïŒãã¥ãŒãšãŒã¯ãæ±äº¬ããã³ãã³ã®æ ªåŒåžå ŽããŒã¿ïŒããŸãã¯å ±åããã¥ã¡ã³ããšãã£ã¿ã¯ããŠãŒã¶ãŒãã¢ã€ãã«ç¶æ ã®ãšãã«æŽæ°ã®é »åºŠãäžæçã«æžãããããWebSocketæ¥ç¶ãã¹ã±ãŒã«ããŠã³ãããããŠããããã¯ãŒã¯åž¯åå¹ ãšãµãŒããŒãªãœãŒã¹ãç¯çŽã§ããŸãã
- æé©åãããããã·ã¥éç¥ïŒ éç¥ãéä¿¡ããŠããŠãŒã¶ãŒã®ããã€ã¹ãããã¯ãããŠããããšãèŠè¶ããŠãã¢ããªã±ãŒã·ã§ã³ã¯ãunlockedãç¶æ ãåŸ ã€ããšãã§ããããè¯ãå¯èŠæ§ãšãšã³ã²ãŒãžã¡ã³ãã確ä¿ã§ããŸãã
ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžãšããŒãœãã©ã€ãŒãŒã·ã§ã³
ã»ãã¥ãªãã£ãšå¹çæ§ãè¶ ããŠããã®APIã¯ããææ ®æ·±ããæèãæèãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå¯èœã«ããŸãã
- åçãªã³ã³ãã³ãæŽæ°ïŒ ãã©ãžã«ã®ãã¥ãŒã¹ããŒã¿ã«ã¯ããŠãŒã¶ãŒãã¢ã¯ãã£ãç¶æ ã«æ»ã£ããšãã«ã©ã€ããã£ãŒããèªåçã«æŽæ°ããæåã®ä»å ¥ãªãã«ææ°ã®èŠåºãã確å®ã«è¡šç€ºã§ããŸããéã«ããŠãŒã¶ãŒãã¢ã€ãã«ç¶æ ã®å Žåã¯æŽæ°ãäžæåæ¢ããŠãäžèŠãªããŒã¿æ¶è²»ãé¿ããããšãã§ããŸãã
- æèã«å¿ããããã³ãããšã¬ã€ãïŒ eã©ãŒãã³ã°ãã©ãããã©ãŒã ã¯ãåŠçã®é·æéã®ã¢ã€ãã«ç¶æ ãæ€åºããç¡é¢å¿ã ãšä»®å®ããã®ã§ã¯ãªããåªããäŒæ©ãææ¡ãããããã«ãããã³ãããæäŸãããã§ããŸãã
- çé»åã¢ãŒãïŒ ã¢ãã€ã«ããã€ã¹ã§å®è¡ãããŠããããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒã®å Žåãã¢ã€ãã«ç¶æ ãæ€åºããããšã§çé»åã¢ãŒããããªã¬ãŒããããããªãŒã®æ¶èãæžããããšãã§ããŸããããã¯äžçäžã®ãŠãŒã¶ãŒã«é«ãè©äŸ¡ãããŠããæ©èœã§ãã
åæãšãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®æŽå¯
åŸæ¥ã®åæã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã10åéçŽç²ã«äœ¿çšãããŠãŒã¶ãŒãšãåã«ã¿ãã10åééãããŸãŸã§å®éã«ã¯30ç§ããã¢ã¯ãã£ãã§ãªããŠãŒã¶ãŒãšãåºå¥ããã®ã«èŠåŽããããšããããããŸããIdle Detection APIã¯ãã¢ã¯ãã£ããªãšã³ã²ãŒãžã¡ã³ãã®ããæ£ç¢ºãªæž¬å®ãæäŸããŸãã
- æ£ç¢ºãªã¢ã¯ãã£ãæéã®è¿œè·¡ïŒ äžçäžã®ããŒã±ãã£ã³ã°ããŒã ã¯ãçã®ãšã³ã²ãŒãžã¡ã³ãææšã«é¢ããããè¯ãæŽå¯ãåŸãããšãã§ããããæ£ç¢ºãªA/Bãã¹ãããã£ã³ããŒã³ããã©ãŒãã³ã¹æž¬å®ãããã³ãŠãŒã¶ãŒã»ã°ã¡ã³ããŒã·ã§ã³ãå¯èœã«ãªããŸãã
- è¡ååæïŒ ã¢ã€ãã«ç¶æ ã®ãã¿ãŒã³ãçè§£ããããšã¯ãUI/UXã®æ¹åã«åœ¹ç«ã¡ããŠãŒã¶ãŒãé¢è±ãããæ··ä¹±ãããããå¯èœæ§ã®ããç®æãç¹å®ã§ããŸãã
ãã©ã€ãã·ãŒãä¿è·ããç£èŠ
éèŠãªããšã«ãå€ãã®ãã¥ãŒãªã¹ãã£ãã¯ãªææ³ãšã¯ç°ãªããIdle Detection APIã¯ãã©ã€ãã·ãŒãžã®é æ ®ãæ žãšããŠèšèšãããŠããŸããæç€ºçãªãŠãŒã¶ãŒã®èš±å¯ãå¿ èŠã§ããããŠãŒã¶ãŒã«å¶åŸ¡æš©ãè¿ãããšãŒãããã®GDPRãã«ãªãã©ã«ãã¢ã®CCPAããã©ãžã«ã®LGPDããããŠã€ã³ãããªãŒã¹ãã©ãªã¢ãªã©ã®åœã§é²åããŠããåæ§ã®ãã¬ãŒã ã¯ãŒã¯ãšãã£ãã°ããŒãã«ãªãã©ã€ãã·ãŒèŠå¶ã«æºæ ããŠããŸããããã«ãããæŒãä»ãããŸãããéåæã®ææ®µãšæ¯èŒããŠããŠãŒã¶ãŒã¢ã¯ãã£ããã£ç£èŠã®ããã®ããå«ççã§æ³çã«å¥å šãªéžæè¢ãšãªããŸãã
Idle Detection APIã®å®è£ ïŒéçºè ã¬ã€ã
Idle Detection APIã®å®è£ ã«ã¯ããã€ãã®ç°¡åãªã¹ããããå«ãŸããŸãããèš±å¯ã®åãæ±ãããã©ãŠã¶ã®äºææ§ã«ã¯æ³šæãå¿ èŠã§ãã
APIãµããŒãã®ç¢ºèª
APIã䜿çšããããšããåã«ãå¿ ããŠãŒã¶ãŒã®ãã©ãŠã¶ãããããµããŒãããŠãããã確èªããŠãã ãããããã¯ãææ°ã®Web APIãæ±ãéã®æšæºçãªãã©ã¯ãã£ã¹ã§ãã
äŸïŒ
if ('IdleDetector' in window) {
console.log('Idle Detection API is supported!');
} else {
console.log('Idle Detection API is not supported. Implement a fallback.');
}
èš±å¯ã®ãªã¯ãšã¹ã
Idle Detection APIã¯ãæç€ºçãªãŠãŒã¶ãŒã®èš±å¯ãå¿ èŠãšããã匷åãªæ©èœãã§ããããã¯éèŠãªãã©ã€ãã·ãŒä¿è·çã§ããèš±å¯ã¯ãç¹ã«ãã©ã€ãã·ãŒã«é¢ããæåŸ ã倿§ãªã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«å¯ŸããŠã¯ãããŒãžã®èªã¿èŸŒã¿æã«èªåçã«ã§ã¯ãªããåžžã«ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒïŒäŸïŒãã¿ã³ã®ã¯ãªãã¯ïŒã«å¿ããŠãªã¯ãšã¹ããããã¹ãã§ãã
äŸïŒèš±å¯ã®ãªã¯ãšã¹ã
async function requestIdleDetectionPermission() {
if (!('IdleDetector' in window)) {
console.warn('Idle Detector not supported.');
return;
}
try {
const state = await navigator.permissions.query({ name: 'idle-detection' });
if (state.state === 'granted') {
console.log('Permission already granted.');
return true;
} else if (state.state === 'prompt') {
// Request permission only if it's not denied already
// Actual request happens when IdleDetector.start() is called implicitly
// by starting the detector, or explicitly by user interaction if a more explicit UX is desired.
console.log('Permission will be prompted when detector starts.');
return true; // We'll try to start it, which will prompt.
} else if (state.state === 'denied') {
console.error('Permission denied by user.');
return false;
}
} catch (error) {
console.error('Error querying permission:', error);
return false;
}
return false;
}
Idle Detectorã€ã³ã¹ã¿ã³ã¹ã®äœæ
ãµããŒãã確èªããèš±å¯ãåŠçããããIdleDetectorã®ã€ã³ã¹ã¿ã³ã¹ãäœæã§ããŸããæå°ã¢ã€ãã«ãããå€ãããªç§åäœã§æå®ããå¿
èŠããããŸãããã®å€ã¯ãAPIããŠãŒã¶ãŒããã¢ã€ãã«ããšèŠãªããŸã§ã«ãŠãŒã¶ãŒãéã¢ã¯ãã£ãã§ãªããã°ãªããªãæéãæ±ºå®ããŸããå€ãå°ãããããšèª€æ€ç¥ãåŒãèµ·ããå¯èœæ§ãããã倧ãããããšå¿
èŠãªã¢ã¯ã·ã§ã³ãé
ããå¯èœæ§ããããŸãã
äŸïŒæ€åºåšã®åæå
let idleDetector = null;
const idleThresholdMs = 60 * 1000; // 60ç§
async function setupIdleDetection() {
const permissionGranted = await requestIdleDetectionPermission();
if (!permissionGranted) {
alert('ãã®æ©èœã«ã¯ã¢ã€ãã«æ€åºã®èš±å¯ãå¿
èŠã§ãã');
return;
}
try {
idleDetector = new IdleDetector();
idleDetector.addEventListener('change', () => {
const userState = idleDetector.user.state; // 'active' ãŸã㯠'idle'
const screenState = idleDetector.screen.state; // 'locked' ãŸã㯠'unlocked'
console.log(`ã¢ã€ãã«ç¶æ
ã倿ŽãããŸããïŒãŠãŒã¶ãŒã¯${userState}ãç»é¢ã¯${screenState}ã§ãã`);
// ããã«ç¶æ
å€åã«åºã¥ããã¢ããªã±ãŒã·ã§ã³ããžãã¯ãå®è£
ããŸã
if (userState === 'idle' && screenState === 'locked') {
console.log('ãŠãŒã¶ãŒã¯ã¢ã€ãã«ç¶æ
ã§ãç»é¢ã¯ããã¯ãããŠããŸããéãã¿ã¹ã¯ã®äžæåæ¢ããã°ã¢ãŠããæ€èšããŠãã ããã');
// Example: logoutUser(); pauseExpensiveAnimations();
} else if (userState === 'active') {
console.log('ãŠãŒã¶ãŒã¯ã¢ã¯ãã£ãã§ããäžæåæ¢ããŠããã¢ã¯ãã£ããã£ãåéããŠãã ããã');
// Example: resumeActivities();
}
});
await idleDetector.start({ threshold: idleThresholdMs });
console.log('Idle Detectorãæ£åžžã«éå§ãããŸããã');
// åæç¶æ
ããã°ã«åºå
console.log(`åæç¶æ
ïŒãŠãŒã¶ãŒã¯${idleDetector.user.state}ãç»é¢ã¯${idleDetector.screen.state}ã§ãã`);
} catch (error) {
// éå§æã®èš±å¯ã®æåŠããã®ä»ã®ãšã©ãŒãåŠç
if (error.name === 'NotAllowedError') {
console.error('ã¢ã€ãã«ç¶æ
ã®æ€åºèš±å¯ãæåŠãããããäœããã®åé¡ãçºçããŸããã', error);
alert('ã¢ã€ãã«æ€åºã®èš±å¯ãæåŠãããŸãããäžéšã®æ©èœãæåŸ
éãã«åäœããªãå¯èœæ§ããããŸãã');
} else {
console.error('Idle Detectorã®éå§ã«å€±æããŸããïŒ', error);
}
}
}
// éåžžã¯ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã®åŸã
// äŸãã°é«åºŠãªæ©èœãæå¹ã«ããããã®ãã¿ã³ã¯ãªãã¯åŸã«setupIdleDetection()ãåŒã³åºããŸãã
// document.getElementById('enableIdleDetectionButton').addEventListener('click', setupIdleDetection);
ç¶æ å€åã®åŠçïŒãŠãŒã¶ãŒãšç»é¢ïŒ
changeã€ãã³ããªã¹ããŒã¯ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®ã¢ã€ãã«ç¶æ
ãç»é¢ã®ããã¯ç¶æ
ã®å€åã«åå¿ããå Žæã§ããããã§ãã¿ã¹ã¯ã®äžæåæ¢ããã°ã¢ãŠããUIã®æŽæ°ããŸãã¯åæããŒã¿ã®åéãšãã£ãç¹å®ã®ããžãã¯ãå®è£
ããŸãã
äŸïŒé«åºŠãªç¶æ åŠç
function handleIdleStateChange() {
const userState = idleDetector.user.state;
const screenState = idleDetector.screen.state;
const statusElement = document.getElementById('idle-status');
if (statusElement) {
statusElement.textContent = `ãŠãŒã¶ãŒïŒ${userState}, ç»é¢ïŒ${screenState}`;
}
if (userState === 'idle') {
console.log('ãŠãŒã¶ãŒã¯çŸåšã¢ã€ãã«ç¶æ
ã§ãã');
// ã¢ã€ãã«ç¶æ
ã®ããã®ã¢ããªã±ãŒã·ã§ã³åºæã®ããžãã¯
// Example: sendAnalyticsEvent('user_idle');
// Example: showReducedNotificationFrequency();
if (screenState === 'locked') {
console.log('ç»é¢ãããã¯ãããŠããŸãããŠãŒã¶ãŒãé¢åžããŠããå¯èœæ§ãé«ãã§ãã');
// Example: autoLogoutUser(); // For sensitive apps
// Example: pauseAllNetworkRequests();
}
} else {
console.log('ãŠãŒã¶ãŒã¯çŸåšã¢ã¯ãã£ãã§ãã');
// ã¢ã¯ãã£ãç¶æ
ã®ããã®ã¢ããªã±ãŒã·ã§ã³åºæã®ããžãã¯
// Example: sendAnalyticsEvent('user_active');
// Example: resumeFullNotificationFrequency();
// Example: fetchLatestData();
}
if (screenState === 'locked') {
console.log('ç»é¢ãããã¯ãããŠããŸãã');
// ãŠãŒã¶ãŒå
¥åã®ã¢ã€ãã«ç¶æ
ã«é¢ããããç»é¢ãããã¯ããããšãã®ç¹å®ã®ã¢ã¯ã·ã§ã³
// Example: encryptTemporaryData();
} else if (screenState === 'unlocked') {
console.log('ç»é¢ãããã¯è§£é€ãããŸããã');
// ç»é¢ãããã¯è§£é€ããããšãã®ç¹å®ã®ã¢ã¯ã·ã§ã³
// Example: showWelcomeBackMessage();
}
}
// ãã®ãã³ãã©ãIdleDetectorã€ã³ã¹ã¿ã³ã¹ã«è¿œå ããŸãïŒ
// idleDetector.addEventListener('change', handleIdleStateChange);
ã³ãŒãäŸã«é¢ããéèŠãªæ³šæïŒ #idle-statusã®ãããªèŠçŽ ã®å®éã®HTMLãšCSSã¯ãJavaScript APIãšã®å¯Ÿè©±ã«çŠç¹ãåœãŠããããç°¡æœã«ããããã«çç¥ãããŠããŸããå®éã®ã·ããªãªã§ã¯ãHTMLããã¥ã¡ã³ãã«å¯Ÿå¿ããèŠçŽ ãå¿
èŠã«ãªããŸãã
äž»èŠãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
Idle Detection APIã¯åŒ·åã§ããããã®å©ç¹ãæå€§éã«æŽ»çšãããŠãŒã¶ãŒã®æåŸ ãšãã©ã€ãã·ãŒãå°éããããã«ã¯ãæ éãã€è²¬ä»»ããå®è£ ãå¿ èŠã§ãã
ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãšéææ§ïŒå«ççãªäœ¿çšãæéèŠïŒ
ããã¯ãç¹ã«å€æ§ãªãã©ã€ãã·ãŒèŠå¶ãæåèŠç¯ãæã€ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠãããããæãéèŠãªèæ ®äºé ã§ãã
- æç€ºçãªåæïŒ ã¢ã€ãã«æ€åºãæå¹ã«ããåã«ãå¿ ããŠãŒã¶ãŒããæç€ºçãªåæãåŸãŠãã ããããŠãŒã¶ãŒãé©ãããªãã§ãã ããããªããã®èš±å¯ãå¿ èŠãªã®ãããããŠãããã©ã®ãããªå©ç¹ãæäŸããããæç¢ºã«èª¬æããŠãã ããïŒäŸïŒãã¢ã«ãŠã³ããä¿è·ããããã«ãéã¢ã¯ãã£ãç¶æ ãç¶ããšèªåçã«ãã°ã¢ãŠãããŸããããŸãã¯ãé¢åžäžã¯æŽæ°ãäžæåæ¢ããŠããããªãŒãç¯çŽããŸããïŒã
- æ å ±ã®ç²åºŠïŒ APIã¯éçŽãããç¶æ ïŒãidleã/ãactiveãããlockedã/ãunlockedãïŒã®ã¿ãæäŸããŸããç¹å®ã®ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãã¢ããªã±ãŒã·ã§ã³ã®ãããªè©³çŽ°ãªæ å ±ã¯æäŸããŸãããAPIã®ç²Ÿç¥ãšãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒã«åããããããã®ãããªããŒã¿ãå°ãåºãããæšæž¬ãããããããšããªãã§ãã ããã
- èŠå¶ã®éµå®ïŒ GDPRïŒæ¬§å·é£åïŒãCCPAïŒç±³åœã«ãªãã©ã«ãã¢å·ïŒãLGPDïŒãã©ãžã«ïŒãPIPEDAïŒã«ããïŒããªãŒã¹ãã©ãªã¢ã®ãã©ã€ãã·ãŒæ³ãªã©ãã°ããŒãã«ãªãã©ã€ãã·ãŒæ³ã念é ã«çœ®ããŠãã ããããããã®èŠå¶ã¯ãæç¢ºãªåæãããŒã¿æå°åãéææ§ã®ãããã©ã€ãã·ãŒããªã·ãŒããã°ãã°èŠæ±ããŸããIdle Detection APIã®äœ¿çšããããã®èŠä»¶ã«æ²¿ã£ãŠããããšã確èªããŠãã ããã
- ãªããã¢ãŠããªãã·ã§ã³ïŒ ãŠãŒã¶ãŒãæåã®èš±å¯ãäžããåŸã§ãããã¯ã䜿çšããããªãå Žåã«ã¢ã€ãã«æ€åºãç¡å¹ã«ããããã®æç¢ºã§ç°¡åãªæ¹æ³ãæäŸããŠãã ããã
- ããŒã¿æå°åïŒ æèšãããç®çã«å³å¯ã«å¿ èŠãªããŒã¿ã®ã¿ãåéããåŠçããŠãã ãããã»ãã·ã§ã³ã»ãã¥ãªãã£ã®ããã«ã¢ã€ãã«æ€åºã䜿çšããŠããå Žåãå¥éæç€ºçãªåæãªãã«è©³çްãªè¡åãããã¡ã€ã«ãæ§ç¯ããããã«ããã䜿çšããªãã§ãã ããã
ããã©ãŒãã³ã¹ãžã®åœ±é¿
Idle Detection APIèªäœã¯ãã€ãã³ããåžžã«ããŒãªã³ã°ããã®ã§ã¯ãªããã·ã¹ãã ã¬ãã«ã®ã¢ã€ãã«æ€åºã¡ã«ããºã ãæŽ»çšãããããããã©ãŒãã³ã¹ãé«ãããã«èšèšãããŠããŸããããããç¶æ ã®å€åã«å¿ããŠããªã¬ãŒããã¢ã¯ã·ã§ã³ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãïŒ
- ãããŠã³ã¹ãšã¹ããããªã³ã°ïŒ ã¢ããªã±ãŒã·ã§ã³ããžãã¯ã«éãæäœãå«ãŸããå Žåãç¹ã«ãŠãŒã¶ãŒã®ç¶æ ãã¢ã¯ãã£ã/ã¢ã€ãã«éã§æ¥éã«å€åããå¯èœæ§ãããå Žåã¯ãããããé©åã«ãããŠã³ã¹ãŸãã¯ã¹ããããªã³ã°ãããŠããããšã確èªããŠãã ããã
- ãªãœãŒã¹ç®¡çïŒ APIã¯ãªãœãŒã¹ã®æé©åãç®çãšããŠããŸããç¶æ å€åã®ãã³ã«é »ç¹ã§éãæäœãè¡ããšããããã®å©ç¹ãæã¡æ¶ãããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
ãã©ãŠã¶ã®äºææ§ãšãã©ãŒã«ããã¯
åè¿°ã®éãããã©ãŠã¶ã®ãµããŒãã¯æ®éçã§ã¯ãããŸãããIdle Detection APIããµããŒãããŠããªããã©ãŠã¶ã«å¯ŸããŠã¯ãå ç¢ãªãã©ãŒã«ããã¯ãå®è£ ããŠãã ããã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ APIã«äŸåããã«ã³ã¢æ©èœãæ§ç¯ããŠãã ããããã®åŸããµããŒããããŠãããã©ãŠã¶ã«å¯ŸããŠã¢ã€ãã«æ€åºã§ãšã¯ã¹ããªãšã³ã¹ã匷åããŸãã
- åŸæ¥ã®ãã©ãŒã«ããã¯ïŒ ãµããŒããããŠããªããã©ãŠã¶ã§ã¯ãäŸç¶ãšããŠããŠã¹/ããŒããŒãã¢ã¯ãã£ããã£ã®ã€ãã³ããªã¹ããŒã«é Œãå¿ èŠããããããããŸãããããã€ãã£ãAPIãšæ¯èŒãããã®å¶éãšæœåšçãªäžæ£ç¢ºãã«ã€ããŠéææ§ãä¿ã£ãŠãã ããã
ãã¢ã€ãã«ãã®å®çŸ© â ãããå€ãšç²åºŠ
thresholdãã©ã¡ãŒã¿ã¯éåžžã«éèŠã§ãããã¢ã€ãã«ããšèŠãªããããã®ã¯ãã¢ããªã±ãŒã·ã§ã³ãšã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã«å€§ããäŸåããŸãã
- ã³ã³ããã¹ããéèŠïŒ ãªã¢ã«ã¿ã€ã ã®å ±åããã¥ã¡ã³ããšãã£ã¿ã¯ããŠãŒã¶ãŒãæ¬åœã«åžãå€ãããã©ãããæ€åºããããã«éåžžã«çããããå€ïŒäŸïŒ30ç§ïŒã䜿çšãããããããŸããããããªã¹ããªãŒãã³ã°ãµãŒãã¹ã¯ãååçãªèŠèŽäœéšãäžæããªãããã«ãããé·ããããå€ïŒäŸïŒ5åïŒã䜿çšãããããããŸããã
- ãŠãŒã¶ãŒã®æåŸ ïŒ æåçãªæèãèæ ®ããŠãã ããããã€ãã®ãããŠãŒã¶ãŒãã¢ã€ãã«ãšèªèãããã®ããæ¥æ¬ã®ãŠãŒã¶ãŒã¯çãäžæåæ¢ãšèãããããããŸãããèšå®å¯èœãªéŸå€ãæäŸããããã¹ããŒãã§é©å¿æ§ã®ããéŸå€ïŒå°æ¥APIã§ãµããŒããããå ŽåïŒã䜿çšãããããããšãæçãããããŸããã
- 誀æ€ç¥ãé¿ããïŒ ãŠãŒã¶ãŒãå®éã«ã¯ãŸã é¢äžããŠããããç©æ¥µçã«å ¥åããŠããªãïŒäŸïŒé·ãèšäºãèªãã§ãããé察話åã®ãã¬ãŒã³ããŒã·ã§ã³ãèŠãŠããïŒå Žåã®èª€æ€ç¥ãæå°éã«æããã®ã«ååãªé·ãã®ãããå€ãèšå®ããŠãã ããã
ã»ãã¥ãªãã£ãžã®åœ±é¿ïŒæ©å¯æ§ã®é«ãèªèšŒã«ã¯äœ¿çšããªãïŒ
ãã®APIã¯ã»ãã·ã§ã³ç®¡çïŒäŸïŒèªåãã°ã¢ãŠãïŒã«åœ¹ç«ã¡ãŸãããäž»èŠãªèªèšŒã¡ã«ããºã ãšããŠäœ¿çšãã¹ãã§ã¯ãããŸãããæ©å¯æ§ã®é«ãæäœã®ããã«ã¯ã©ã€ã¢ã³ãåŽã®ã·ã°ãã«ã®ã¿ãä¿¡é Œããããšã¯ãäžè¬çã«ã»ãã¥ãªãã£ã®ã¢ã³ããã¿ãŒã³ã§ãã
- ãµãŒããŒãµã€ãã®æ€èšŒïŒ ã»ãã·ã§ã³ã®æå¹æ§ãšãŠãŒã¶ãŒèªèšŒã¯åžžã«ãµãŒããŒãµã€ãã§æ€èšŒããŠãã ããã
- éå±€åãããã»ãã¥ãªãã£ïŒ ã¢ã€ãã«æ€åºãã»ãã¥ãªãã£ã®äžå±€ãšããŠäœ¿çšããå ç¢ãªãµãŒããŒãµã€ãã®ã»ãã·ã§ã³ç®¡çãšèªèšŒãããã³ã«ãè£å®ããŠãã ããã
ã°ããŒãã«ãªãŠãŒã¶ãŒã®æåŸ ãšæåçãªãã¥ã¢ã³ã¹
åœéçãªãªãŒãã£ãšã³ã¹åãã«ã¢ããªã±ãŒã·ã§ã³ãèšèšããéã«ã¯ããã¢ã€ãã«ããç°ãªãæå³ã嫿ãæã€å¯èœæ§ãããããšãèæ ®ããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ïŒ é害ãæã€ãŠãŒã¶ãŒã¯ãå žåçãªããŠã¹/ããŒããŒãã€ãã³ããçæããªãå¯èœæ§ã®ããæ¯æŽæè¡ã䜿çšããŠãããã€ã¹ãšç°ãªãæ¹æ³ã§å¯Ÿè©±ãããããããŸãããAPIã®ã·ã¹ãã ã¬ãã«ã®æ€åºã¯ããã®ç¹ã«é¢ããŠåŸæ¥ã®ã€ãã³ããªã¹ããŒãããäžè¬çã«å ç¢ã§ãã
- ã¯ãŒã¯ãããŒïŒ ç¹å®ã®å°éçãªã¯ãŒã¯ãããŒïŒäŸïŒç®¡å¶å®€ããã¬ãŒã³ããŒã·ã§ã³äžïŒã§ã¯ãçŽæ¥çãªå ¥åãªãã«ååçãªç£èŠæéãå«ãŸããå ŽåããããŸãã
- ããã€ã¹ã®äœ¿çšãã¿ãŒã³ïŒ ç°ãªãå°åã®ãŠãŒã¶ãŒã¯ããã«ãã¿ã¹ãã³ã°ãããã€ã¹ã®åãæ¿ãããŸãã¯ç»é¢ã®ããã¯/ã¢ã³ããã¯ã®ãã¿ãŒã³ãç°ãªãå ŽåããããŸããããžãã¯ãæè»ã§é å¿æ§ã®ãããã®ã«èšèšããŠãã ããã
ã¢ã€ãã«æ€åºãšWebæ©èœã®æªæ¥
Webãã©ãããã©ãŒã ãé²åãç¶ããäžã§ãIdle Detection APIã¯ããã髿§èœã§æèãæèããWebã¢ããªã±ãŒã·ã§ã³ãžã®äžæ©ã衚ããŠããŸãããã®æªæ¥ã«ã¯ä»¥äžã®ãããªå¯èœæ§ããããŸãïŒ
- ããåºç¯ãªãã©ãŠã¶æ¡çšïŒ ãã¹ãŠã®äž»èŠãªãã©ãŠã¶ãšã³ãžã³ã§ã®ãµããŒããæ¡å€§ããéçºè ã«ãšã£ãŠæ®éçãªããŒã«ãšãªãã§ãããã
- ä»ã®APIãšã®çµ±åïŒ Web BluetoothãWeb USBããŸãã¯é«åºŠãªéç¥APIãªã©ã®ä»ã®é«åºŠãªAPIãšã®çžä¹å¹æã«ãããããã«ãªããã§çµ±åãããäœéšãå¯èœã«ãªãå¯èœæ§ããããŸãããã€ãã®ã¹ããŒãããŒã ãæ¥æ¬ã®å·¥å Žã§ãã¢ã€ãã«æ€åºã䜿çšããŠå€éšããã€ã¹ãžã®æ¥ç¶ãã€ã³ããªãžã§ã³ãã«ç®¡çããIoTããã€ã¹ã®ããããªãŒå¯¿åœãæé©åããPWAãæ³åããŠã¿ãŠãã ããã
- 匷åããããã©ã€ãã·ãŒã³ã³ãããŒã«ïŒ ãã詳现ãªãŠãŒã¶ãŒã³ã³ãããŒã«ãå¯èœã«ãªãããŠãŒã¶ãŒãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«ç°ãªãã¢ã€ãã«æ€åºã®èš±å¯ããããå€ãæå®ã§ããããã«ãªãå¯èœæ§ããããŸãã
- éçºè åãããŒã«ïŒ ã¢ã€ãã«ç¶æ ã®ãããã°ãšç£èŠã®ããã®æ¹åãããéçºè ããŒã«ã«ãããå ç¢ãªã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãšãã¹ãã容æã«ãªããŸãã
é²è¡äžã®éçºãšæšæºåããã»ã¹ã«ã¯ãåºç¯ãªã³ãã¥ããã£ããã®ãã£ãŒãããã¯ãå«ãŸããŠãããAPIã匷åãªæ©èœãšåŒ·åãªãã©ã€ãã·ãŒä¿è·ã®ãã©ã³ã¹ãåããªããé²åããããšãä¿èšŒãããŠããŸãã
çµè«ïŒããã¹ããŒããªWebäœéšã®å®çŸ
ããã³ããšã³ãIdle Detection APIã¯ãWebéçºã«ãããéèŠãªé²æ©ã瀺ãããŠãŒã¶ãŒã¢ã¯ãã£ããã£ãçè§£ããããã®æšæºåãããå¹ççã§ããã©ã€ãã·ãŒãå°éããã¡ã«ããºã ãæäŸããŸãããã¥ãŒãªã¹ãã£ãã¯ãªæšæž¬ãè¶ ããããšã§ãéçºè ã¯ããŠãŒã¶ãŒã®ãšã³ã²ãŒãžã¡ã³ããã¿ãŒã³ã«çã«é©å¿ãããããã€ã³ããªãžã§ã³ãã§å®å šããã€ãªãœãŒã¹ãæèããWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãªããŸãããéè¡ã¢ããªã±ãŒã·ã§ã³ã«ãããå ç¢ãªã»ãã·ã§ã³ç®¡çãããPWAã®çé»åæ©èœãæ£ç¢ºãªåæãŸã§ãã°ããŒãã«ãªWebäœéšãåäžãããå¯èœæ§ã¯èšãç¥ããŸããã
ãããã倧ããªåã«ã¯å€§ããªè²¬ä»»ã䌎ããŸããéçºè ã¯ãç¹ã«å€æ§ãªåœéçãªãŒãã£ãšã³ã¹åãã«æ§ç¯ããå ŽåããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãåªå ããéææ§ã確ä¿ããå«ççãªãã¹ããã©ã¯ãã£ã¹ãéµå®ããªããã°ãªããŸãããIdle Detection APIãææ ®æ·±ã責任ãæã£ãŠåãå ¥ããããšã«ãããç§ãã¡ã¯ãŠã§ãã§å¯èœãªããšã®å¢çãå ±ã«æŒãåºããæ©èœçã§ããã ãã§ãªããçŽæçã§å®å šããã€äžçäžã®ãŠãŒã¶ãŒãå°éããã¢ããªã±ãŒã·ã§ã³ãåµé ããããšãã§ããŸãã
ãã®APIãããåºãæ¡çšãããã«ã€ããŠãããã¯ééããªãçŸä»£ã®Webéçºè ã®ããŒã«ãããã«äžå¯æ¬ ãªããŒã«ãšãªããæ¬¡äžä»£ã®çã«ã¹ããŒãã§å¿çæ§ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ã®äœæãæ¯æŽããã§ãããã
é¢é£ãªãœãŒã¹
W3C Draft Community Group ReportïŒ Idle Detection APIã«é¢ããææ°ã®ä»æ§ãšé²è¡äžã®è°è«ã«ã€ããŠã
MDN Web DocsïŒ å æ¬çãªããã¥ã¡ã³ããšãã©ãŠã¶äºææ§ããŒãã«ã
ãã©ãŠã¶éçºè ããã°ïŒ ChromeãEdgeããã®ä»ã®ãã©ãŠã¶ããŒã ããã®APIã®æŽæ°ããã¹ããã©ã¯ãã£ã¹ã«é¢ããçºè¡šã«æ³šç®ããŠãã ããã