ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã«é¢ãã詳现ãªã¬ã€ãã§ãã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸããããããŠã³ããŒã管çãæé©åããããã©ãŒãã³ã¹ãåäžããã仿¥ã®çžäºæ¥ç¶ãããããžã¿ã«äžçã§å¹ççãªãªãœãŒã¹åŠçãä¿èšŒããæ¹æ³ãã芧ãã ããã
ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ïŒã°ããŒãã«ãªããžã¿ã«ç°å¢ã®ããã®ããŠã³ããŒã管çã®æé©å
çµ¶ãéãªãé²åããããžã¿ã«é åã§ã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãæãéèŠã§ããã°ããŒãã«èŠæš¡ã§åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãããã°ã¬ãã·ããŠã§ãã¢ããªïŒPWAïŒã«ãšã£ãŠãã·ãŒã ã¬ã¹ã§å¿çæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãæäŸããããšãæãéèŠã§ãããããå®çŸããããã®éèŠãªããããèŠéããããã¡ãªåŽé¢ã¯ãç¹ã«ããã¯ã°ã©ãŠã³ããªãœãŒã¹ã®ååŸã«ãããå¹ççãªããŠã³ããŒã管çã§ããããã§ãå ç¢ãªããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ãäžå¯æ¬ ã«ãªããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ããã®ãããªãšã³ãžã³ã®è€éããæãäžãããã®ã¢ãŒããã¯ãã£ãå©ç¹ãå®è£ æŠç¥ããããŠçã«ã°ããŒãã«ãªããžã¿ã«ç°å¢ã®ããã®ããŠã³ããŒã管çãæé©åããäžã§ã®éèŠãªåœ¹å²ãæ¢ããŸãã
ã°ããŒãã«ãªããŠã³ããŒã管çã®èª²é¡
ã°ããŒãã«èŠæš¡ã§ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãéçšãããšããããã¯ãŒã¯é å»¶ã垯åå¹ ã®å¯çšæ§ã®ã°ãã€ããããã³å€æ§ãªãŠãŒã¶ãŒããã€ã¹ã®æ©èœã«é¢é£ããç¬èªã®èª²é¡ãçããŸããå°ççã«ç°ãªãå Žæã«ãããŠãŒã¶ãŒã¯ãããŠã³ããŒãéåºŠãšæ¥ç¶ã®å®å®æ§ã«ãããŠå€§ããç°ãªãçµéšãããŸããããã¯ã°ã©ãŠã³ãååŸãžã®é£æºãåããŠããªãã¢ãããŒãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯æ¬¡ã®åé¡ã«èŠããå¯èœæ§ããããŸãã
- åæããŒãæéãé ãïŒ éèŠãªãªãœãŒã¹ã®ããŠã³ããŒãã«æéããããããããšããŠãŒã¶ãŒã¯äžæºãæããŸãã
- å€ããŸãã¯äžå®å šãªããŒã¿ïŒ äžè²«æ§ã®ãªãããã¯ã°ã©ãŠã³ãæŽæ°ã¯ããŠãŒã¶ãŒãå€ãæ å ±ãé²èЧããããšã«ã€ãªããå¯èœæ§ããããŸãã
- éå°ãªããããªãŒæ¶è²»ïŒ 管çãããŠããªãããã¯ã°ã©ãŠã³ãã¢ã¯ãã£ããã£ã¯ãç¹ã«ã¢ãã€ã«ããã€ã¹ã§ãŠãŒã¶ãŒããã€ã¹ã®ããããªãŒãæ¶èãããå¯èœæ§ããããŸãã
- ãµãŒããŒè² è·ã®å¢å ïŒ éå¹ççãªååŸã¯ãåé·ãªãªã¯ãšã¹ããšããã¯ãšã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®äžå¿ èŠãªè² æ ãããããå¯èœæ§ããããŸãã
- 貧匱ãªãªãã©ã€ã³ãšã¯ã¹ããªãšã³ã¹ïŒ ãªãã©ã€ã³ãã¡ãŒã¹ãæ©èœãç®æšãšããPWAã«ãšã£ãŠãå ç¢ãªããã¯ã°ã©ãŠã³ãåæãéèŠã§ãã
ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã¯ããŠãŒã¶ãŒã®å Žæããããã¯ãŒã¯ç¶æ³ã«é¢ä¿ãªããæé©ãªãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããããã«ããã€ãã©ã®ããã«ããããŠã©ã®ãããªãªãœãŒã¹ãããã¯ã°ã©ãŠã³ãã§ããŠã³ããŒãããããã€ã³ããªãžã§ã³ãã«ç®¡çããããšã§ããããã®èª²é¡ã«æ£é¢ããåãçµãããã«èšèšãããŠããŸãã
ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ãšã¯ïŒ
ãã®æ žå¿ã«ãããŠãããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã¯ããŠãŒã¶ãŒã®ã¢ããªã±ãŒã·ã§ã³ãšã®å³æçãªã€ã³ã¿ã©ã¯ã·ã§ã³ãäžæããããšãªããããŒã¿ã®ããŠã³ããŒããšãªãœãŒã¹ã®ããã»ã¹ã調æŽããã³æé©åããã¯ã©ã€ã¢ã³ãåŽïŒãŠãŒã¶ãŒã®ãã©ãŠã¶ãŸãã¯ã¢ããªã±ãŒã·ã§ã³å ïŒã«å®è£ ãããé«åºŠãªã·ã¹ãã ã§ããããã¯äžå€®ãããšããŠæ©èœããè€æ°ã®ããã¯ã°ã©ãŠã³ãååŸãªã¯ãšã¹ãã管çãããããã«åªå é äœãä»ãããããã¯ãŒã¯ã®å€åãåŠçããããŒã¿ã®æŽåæ§ãä¿èšŒããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ã®é«åºŠã«çµç¹åãããããžã¹ãã£ã¯ã¹ãããŒãžã£ãŒãšèããŠãã ãããäºæž¬äžå¯èœãªæéã«ã©ã³ãã ãªé éãå°çãã代ããã«ããšã³ãžã³ã¯ãªãœãŒã¹ãå¹ççã«ãæ£ããé åºã§ãå¿ èŠãªå Žåã«ã®ã¿ååŸãããããã«ããŸããããã¯ãåçãªã³ã³ãã³ãããªã¢ã«ã¿ã€ã ã®æŽæ°ãããã³ãªãã©ã€ã³æ©èœã«å€§ããäŸåããææ°ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠç¹ã«éèŠã§ãã
飿ºãšã³ãžã³ã®äž»èŠã³ã³ããŒãã³ã
å æ¬çãªãšã³ãžã³ã¯éåžžãããã€ãã®çžäºæ¥ç¶ãããã¢ãžã¥ãŒã«ã§æ§æãããŠããŸãã
- ãªã¯ãšã¹ãã¹ã±ãžã¥ãŒã©ïŒ ä¿çäžã®ããã¯ã°ã©ãŠã³ãååŸãªã¯ãšã¹ãã®ãã¥ãŒã管çããŸããäºåå®çŸ©ãããåªå é äœãšäŸåé¢ä¿ã«åºã¥ããŠå®è¡é åºã決å®ããŸãã
- ãããã¯ãŒã¯ã¢ãã¿ãŒïŒ çŸåšã®ãããã¯ãŒã¯ç¶æ ïŒWi-Fiãã»ã«ã©ãŒãé床ãå®å®æ§ãªã©ïŒãç¶ç¶çã«è©äŸ¡ãããã€ãã©ã®ããã«ããŒã¿ãååŸãããã«ã€ããŠæ å ±ã«åºã¥ããæ±ºå®ãè¡ããŸãã
- ãªãœãŒã¹ã®åªå é äœä»ãã¢ãžã¥ãŒã«ïŒ æãéèŠãªã¢ã€ãã ãæåã«ååŸãããããã«ãããŸããŸãªçš®é¡ã®ãªãœãŒã¹ïŒéèŠãªãŠãŒã¶ãŒããŒã¿ãšéèŠåºŠã®äœãã¢ã»ãããªã©ïŒã«åªå é äœã¬ãã«ãå²ãåœãŠãŸãã
- ã¹ããããªã³ã°ããã³ãããŠã³ã¹ããžãã¯ïŒ åæãªã¯ãšã¹ãã®æ°ãå¶éããåé·ãªååŸãåé¿ããããšã§ããããã¯ãŒã¯ãŸãã¯ããã€ã¹ãéè² è·ã«ãªãã®ãé²ããŸãã
- ç«¶åè§£æ±ºïŒ è€æ°ã®ãªã¯ãšã¹ããç«¶åããããçžäºã«äŸåãããããç¶æ³ãåŠçããããŒã¿ã®äžè²«æ§ã確ä¿ããŸãã
- ãšã©ãŒåŠçãšå詊è¡ïŒ ãããã¯ãŒã¯ãšã©ãŒãåŠçãã倱æãããªã¯ãšã¹ããå詊è¡ããããã®ã€ã³ããªãžã§ã³ããªæŠç¥ãå®è£ ããŸãïŒå€ãã®å Žåãææ°ããã¯ãªãã䜿çšïŒã
- ãã£ãã·ã¥ãããŒãžã£ãŒïŒ ãã£ãã·ã¥æŠç¥ãšé£æºããŠãååŸããããŒã¿ãå¹ççã«ä¿åããå¿ èŠã«å¿ããŠæäŸããç¹°ãè¿ãã®ååŸã®å¿ èŠæ§ãæžãããŸãã
- ç¶æ 管çïŒ ãã¹ãŠã®ããã¯ã°ã©ãŠã³ãååŸæäœã®ã¹ããŒã¿ã¹ã远跡ããã¢ããªã±ãŒã·ã§ã³ãæŽæ°ã«åçã«å¿çã§ããããã«ããŸãã
ããã¯ã°ã©ãŠã³ãååŸã®æé©åã®å
ããã¯ã°ã©ãŠã³ãååŸæäœãæé©åãããšãã¢ããªã±ãŒã·ã§ã³éçºãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ããŸããŸãªåŽé¢ã§å€§ããªã¡ãªãããåŸãããŸãã
1. 匷åããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒ
ããã¯æãçŽæ¥çã§åœ±é¿åã®ããã¡ãªããã§ãããªãœãŒã¹ãå¹ççã«ååŸããããŠãŒã¶ãŒãäžæããããšãªããã¢ããªã±ãŒã·ã§ã³ã¯ããé«éã§ãããå¿çæ§ãé«ããããä¿¡é Œæ§ãé«ããšæããããŸãããŠãŒã¶ãŒã¯ãã¹ã ãŒãºã§äºæž¬å¯èœãªãšã¯ã¹ããªãšã³ã¹ãæäŸããã¢ããªã±ãŒã·ã§ã³ãæŸæ£ããå¯èœæ§ãäœããªããŸãã
ã°ããŒãã«ãªäŸïŒ ãã¥ãŒã¹éçŽPWAãèããŠã¿ãŠãã ãããé©åã«æé©åãããããã¯ã°ã©ãŠã³ãååŸãšã³ãžã³ã¯ãããã¯ã°ã©ãŠã³ãã§éå ±ãã¥ãŒã¹ããµã€ã¬ã³ãã«æŽæ°ããæ¥ç¶é床ã«é¢ä¿ãªãããŠãŒã¶ãŒãã¢ããªãéãããšãã«ããã«å©çšã§ããããã«ããŸããæç¶çãªã¢ãã€ã«ããŒã¿ã䜿çšããŠããå°åã«ãããŠãŒã¶ãŒã§ãããããã¡ãªã³ã°ãé å»¶ãçµéšããããšãªããææ°ã®æ å ±ã«ã¢ã¯ã»ã¹ã§ããŸãã
2. ããã©ãŒãã³ã¹ãšé床ã®åäž
飿ºãšã³ãžã³ã¯ããã©ãŠã¶ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ãåæ»ãããå¯èœæ§ã®ããéå¹ççãªååŸãã¿ãŒã³ãé²ããŸãããªã¯ãšã¹ãããããåŠçããéèŠãªããŒã¿ã«åªå é äœãä»ãããã£ãã·ã¥ã广çã«æŽ»çšããããšã§ãå šäœçãªããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
å®è¡å¯èœãªæŽå¯ïŒ ååŸé å»¶ãªã©ã®æŠç¥ãå®è£ ããŸããééèŠãªã¢ã»ããã¯ããããã¯ãŒã¯ãã¢ã€ãã«ç¶æ ã®å ŽåããŸãã¯ãŠãŒã¶ãŒãããããå¿ èŠãšããå¯èœæ§ãé«ãå ŽåïŒããŒãžãäžã«ã¹ã¯ããŒã«ãããªã©ïŒã«ã®ã¿ååŸãããŸããããã«ãããæåã®ãã¥ãŒããŒããé«éã§ã€ã³ã¿ã©ã¯ãã£ããªç¶æ ã«ä¿ãããŸãã
3. ãªãã©ã€ã³ãã¡ãŒã¹ãããã³åŒ·åãããPWAæ©èœ
ãªãã©ã€ã³æ©èœã念é ã«çœ®ããŠèšèšãããã¢ããªã±ãŒã·ã§ã³ã®å Žåãããã¯ã°ã©ãŠã³ãååŸã¯åæã®ããã¯ããŒã³ã§ãã飿ºãšã³ãžã³ã¯ãããŒã¿ã確å®ã«ååŸããã³ä¿åããããŠãŒã¶ãŒãå®å šã«ãªãã©ã€ã³ã®å Žåã§ãå©çšã§ããããã«ããŸãã
ã°ããŒãã«ãªäŸïŒ ã¢ãã€ã«ãããã¯ãŒã¯ã®æ¥ç¶ãäžå®å®ãªå°åã§åäœããã©ã€ãã·ã§ã¢ãªã³ã°ã¢ããªã±ãŒã·ã§ã³ãããã¯ã°ã©ãŠã³ãååŸãšã³ãžã³ã¯ãæ è¡ã®è©³çްããã©ã€ããŒæ å ±ãããã³ããã²ãŒã·ã§ã³ã«ãŒããäºåã«ããŠã³ããŒãããã³ãã£ãã·ã¥ãããããæ¥ç¶ãå©çšå¯èœãªå Žåã¯ããã¯ã°ã©ãŠã³ãã§ã·ãŒã ã¬ã¹ã«æŽæ°ãããããã«ããããšãã§ããŸããããã«ãããã¢ããªã¯æ¥ç¶æ§ã®äœãå°åã§ãåŒãç¶ãæ©èœããŸãã
4. ãµãŒããŒè² è·ãšåž¯åå¹ ã³ã¹ãã®åæž
ãªã¯ãšã¹ããã€ã³ããªãžã§ã³ãã«åŠçããéè€ãåé¿ãããã£ãã·ã¥ã广çã«å©çšããããšã§ã飿ºãšã³ãžã³ã¯ãµãŒããŒã«ããããããªã¯ãšã¹ãã®æ°ãå€§å¹ ã«åæžã§ããŸããããã«ããããµãŒããŒã®ããã©ãŒãã³ã¹ãåäžããã ãã§ãªããç¹ã«å€§èŠæš¡ãªã°ããŒãã«ãŠãŒã¶ãŒããŒã¹ãæã€ã¢ããªã±ãŒã·ã§ã³ã§ã¯ã垯åå¹ ã®å€§å¹ ãªã³ã¹ãåæžã«ãã€ãªãããŸãã
å®è¡å¯èœãªæŽå¯ïŒ ãªã¯ãšã¹ãã®éè€æé€ãå®è£ ããŸããã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®éšåãåããªãœãŒã¹ãåæã«ãªã¯ãšã¹ãããå Žåããšã³ãžã³ã¯åäžã®ååŸã®ã¿ãéå§ããçµæããã¹ãŠã®é¢ä¿è ã«ãããŒããã£ã¹ãããå¿ èŠããããŸãã
5. ããããªãŒäœ¿çšéã®æé©å
å¶åŸ¡ãããŠããªãããã¯ã°ã©ãŠã³ãã¢ã¯ãã£ããã£ã¯ãããã€ã¹ã®ããããªãŒãå€§å¹ ã«æ¶èãããŸããã¹ããŒããªé£æºãšã³ãžã³ã¯ãããã€ã¹ã®å é»äžãã¢ã€ãã«ç¶æ ã®å ŽåããŸãã¯ãããã¯ãŒã¯ç¶æ ãæé©ãªå Žåã«ååŸãã¹ã±ãžã¥ãŒã«ããŠãããããªãŒã®æ¶è²»ãæå°éã«æããããšãã§ããŸãã
ã°ããŒãã«ãªäŸïŒ ãã©ã€ããšããã«ã®æŽæ°ãååŸããæ è¡èšç»ã¢ããªã±ãŒã·ã§ã³ããšã³ãžã³ã¯ããŠãŒã¶ãŒãWi-Fiã䜿çšããŠãããäžæ©ããã€ã¹ãå é»ããŠããå Žåã«ããããã®æŽæ°ãåªå ããããã«æ§æã§ããŸããå¶éãããã¢ãã€ã«ããŒã¿ãã©ã³ã§å€æŽãåžžã«ããŒãªã³ã°ããã®ã§ã¯ãªãã
ã°ããŒãã«ãšã³ãžã³åãã®ã¢ãŒããã¯ãã£ã«é¢ããèæ ®äºé
ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ãèšèšããã«ã¯ãããŸããŸãªã¢ãŒããã¯ãã£ãã¿ãŒã³ãšãã¯ãããžãŒãæ éã«æ€èšããå¿ èŠããããŸããå®è£ ã®éžæã¯ãå€ãã®å Žåãåºç€ãšãªããã©ãããã©ãŒã ãšã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ããŒãºã«äŸåããŸãã
ãµãŒãã¹ã¯ãŒã«ãŒã®æŽ»çš
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®å ŽåããµãŒãã¹ã¯ãŒã«ãŒã¯ããã¯ã°ã©ãŠã³ãåæã®åºç€ã§ãããããã¯ãã©ãŠã¶ãšãããã¯ãŒã¯éã®ãããã·ãšããŠæ©èœããæ¬¡ã®ãããªæ©èœãæå¹ã«ããŸãã
- ãããã¯ãŒã¯ãªã¯ãšã¹ãã®ååïŒ ãã£ãã·ã¥ããªãã©ã€ã³ãã©ãŒã«ããã¯ãããã¯ã°ã©ãŠã³ãæŽæ°ãªã©ãååŸã®ã«ã¹ã¿ã åŠçãå¯èœã«ããŸãã
- ããã¯ã°ã©ãŠã³ãåæAPIïŒ ãããã¯ãŒã¯æ¥ç¶ã埩å ããããŸã§ã¿ã¹ã¯ãå»¶æããããå ç¢ãªæ¹æ³ã
- ããã·ã¥éç¥ïŒ ãµãŒããŒã«ãã£ãŠéå§ããããªã¢ã«ã¿ã€ã æŽæ°ãæå¹ã«ããŸãã
ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã¯ãå€ãã®å ŽåããµãŒãã¹ã¯ãŒã«ãŒã掻çšããŠããžãã¯ãå®è¡ããŸãããšã³ãžã³ã®ã¹ã±ãžã¥ãŒã©ãåªå é äœä»ããããã³ãããã¯ãŒã¯ç£èŠã³ã³ããŒãã³ãã¯ããµãŒãã¹ã¯ãŒã«ãŒã®ã©ã€ããµã€ã¯ã«å ã«ååšããŸãã
ç¶æ 管çãšåæ
ããã¯ã°ã©ãŠã³ãæäœãšã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¹ã¬ããå šäœã§äžè²«ããç¶æ ãç¶æããããšãéèŠã§ããæ¬¡ã®ãããªææ³ããããŸãã
- ãããŒããã£ã¹ããã£ãã«APIïŒ ã¿ãéã®éä¿¡ãšããµãŒãã¹ã¯ãŒã«ãŒããã¡ã€ã³ã¹ã¬ãããžã®ããŒã¿ã®åãæž¡ãçšã
- IndexedDBïŒ æ°žç¶åããå¿ èŠãããååŸãããããŒã¿ãä¿åããããã®å ç¢ãªã¯ã©ã€ã¢ã³ãåŽããŒã¿ããŒã¹ã
- Web Locks APIïŒ è€æ°ã®æäœãåãããŒã¿ã«ã¢ã¯ã»ã¹ãŸãã¯å€æŽããããšãããšãã«ç«¶åç¶æ ãé²ãããã
ãããã®ã¡ã«ããºã ã¯ãã¢ããªã±ãŒã·ã§ã³ã®UIãããã¯ã°ã©ãŠã³ãã§ååŸãããææ°ã®æ å ±ãåæ ããããã«ããã®ã«åœ¹ç«ã¡ãŸãã
ããŒã¿ååŸæŠç¥
ãšã³ãžã³ã®æå¹æ§ã¯ãæ¡çšããããŒã¿ååŸæŠç¥ã«çŽæ¥é¢ä¿ããŠããŸããäžè¬çãªæŠç¥ã«ã¯æ¬¡ã®ãã®ããããŸãã
- ãã£ãã·ã¥ãã¡ãŒã¹ãïŒ åžžã«æåã«ãã£ãã·ã¥ããããŒã¿ãæäŸããããšããŸããå©çšã§ããªãå ŽåããŸãã¯å€ããªã£ãŠããå Žåã¯ããããã¯ãŒã¯ããååŸããŸãã
- ãããã¯ãŒã¯ãã¡ãŒã¹ãïŒ åžžã«ãããã¯ãŒã¯ããååŸããããšããŸãããããã¯ãŒã¯ãªã¯ãšã¹ãã倱æããå Žåã¯ããã£ãã·ã¥ã«ãã©ãŒã«ããã¯ããŸãã
- Stale-while-revalidateïŒ ãã£ãã·ã¥ããããã«ããŒã¿ãæäŸããŸãããããã¯ã°ã©ãŠã³ãã§ãããã¯ãŒã¯ããææ°ã®ããŒã¿ãååŸããŠãå°æ¥ã®ãªã¯ãšã¹ãã®ããã«ãã£ãã·ã¥ãæŽæ°ããŸããããã¯å€ãã®å Žåãå€ãã®ã·ããªãªã«é©ããããã©ã«ãã§ãã
- ããã¯ã°ã©ãŠã³ãåæïŒ éèŠãªæäœã§ã¯ãããã®ã®ããããã¯ãŒã¯æ¥ç¶ãè¯å¥œã«ãªããŸã§å»¶æã§ããæäœïŒãŠãŒã¶ãŒãçæããã³ã³ãã³ãã®éä¿¡ãªã©ïŒã
飿ºãšã³ãžã³ã®åœ¹å²ã¯ããªã¯ãšã¹ãã®åªå é äœããããã¯ãŒã¯ç¶æ ãããã³ãŠãŒã¶ãŒã³ã³ããã¹ãã«åºã¥ããŠããããã®æŠç¥ãåçã«éžæããã³é©çšããããšã§ãã
ããŸããŸãªãããã¯ãŒã¯ã¿ã€ãã®åŠç
ãšã³ãžã³ã¯ãããŸããŸãªãããã¯ãŒã¯ã¿ã€ãïŒWi-Fiãã€ãŒãµããããã»ã«ã©ãŒãåŸéå¶èª²éæ¥ç¶ãªã©ïŒãåºå¥ããããã«å¿ããŠåäœã調æŽããã®ã«ååãªã€ã³ããªãžã§ã³ããåããŠããå¿ èŠããããŸããããšãã°ã次ã®ããšãèããããŸãã
- åŸéå¶èª²éãŸãã¯äœéã»ã«ã©ãŒæ¥ç¶ã§ã®å€§èŠæš¡ãªããŠã³ããŒãã®å»¶æã
- é«éWi-Fiã§ã®éèŠãªæŽæ°ã®åªå é äœä»ãã
- ãããã¯ãŒã¯ãäžå®å®ãªå Žåã¯äžå¯æ¬ ãªããŒã¿ã®ã¿ãååŸã
ãã©ãŠã¶ã® `navigator.connection` APIã¯ããããã¯ãŒã¯ããããã£ã«é¢ãã貎éãªæŽå¯ãæäŸã§ããŸãã
ããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã®å®è£
å ç¢ãªãšã³ãžã³ãæåããæ§ç¯ããã®ã¯è€éã«ãªãå¯èœæ§ããããŸãã幞ããããŸããŸãªã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ãæ¯æŽã§ããŸãããã ãã广çãªå®è£ ã«ã¯ãã³ã¢ååãçè§£ããããšãäžå¯æ¬ ã§ãã
ã¹ããã1ïŒååŸã®ããŒãºãšåªå é äœãå®çŸ©ãã
ã¢ããªã±ãŒã·ã§ã³ãããã¯ã°ã©ãŠã³ãã§ååŸãããã¹ãŠã®ãªãœãŒã¹ãèå¥ããŸããæ¬¡ã®åºæºã§åé¡ããŸãã
- éèŠåºŠïŒ ã³ã¢æ©èœã«ãšã£ãŠäžå¯æ¬ ãªããŒã¿ã¯äœã§ããïŒ
- é »åºŠïŒ ãã®ããŒã¿ãæŽæ°ããå¿ èŠãããé »åºŠã¯ïŒ
- ãµã€ãºïŒ ååŸããããªãœãŒã¹ã®ãµã€ãºã¯ïŒ
- äŸåé¢ä¿ïŒ ããååŸãæåã«å®äºããããšã«äŸåããŠããŸããïŒ
ãã®åæã¯ãåªå é äœä»ãããžãã¯ã«åœ¹ç«ã¡ãŸãã
ã¹ããã2ïŒãµãŒãã¹ã¯ãŒã«ãŒã®èšå®ïŒãŠã§ãã®å ŽåïŒ
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããå ŽåããµãŒãã¹ã¯ãŒã«ãŒãäž»èŠãªããŒã«ã§ããç»é²ãããªã¯ãšã¹ããã€ã³ã¿ãŒã»ããããããã®åºæ¬ç㪠`fetch` ã€ãã³ããã³ãã©ãŒãå®è£ ããŸãã
// service-worker.js
self.addEventListener('fetch', event => {
// Your coordination logic will go here
event.respondWith(fetch(event.request));
});
ã¹ããã3ïŒãªã¯ãšã¹ããã¥ãŒãšã¹ã±ãžã¥ãŒã©ã®å®è£
ä¿çäžã®ååŸãªã¯ãšã¹ãã®é åãŸãã¯ãã¥ãŒãç¶æããŸããã¹ã±ãžã¥ãŒã©ã¯ãåªå é äœãšäŸåé¢ä¿ãèæ ®ããŠããã®ãã¥ãŒãåŠçããŸãã
æŠå¿µçãªäŸïŒ
// Within your Service Worker or coordination module
let requestQueue = [];
let activeFetches = 0;
const MAX_CONCURRENT_FETCHES = 3;
function addFetchToQueue(request, priority = 0) {
requestQueue.push({ request, priority, status: 'pending' });
// Sort queue by priority (higher number = higher priority)
requestQueue.sort((a, b) => b.priority - a.priority);
processQueue();
}
async function processQueue() {
while (requestQueue.length > 0 && activeFetches < MAX_CONCURRENT_FETCHES) {
const task = requestQueue.shift(); // Get the highest priority task
if (task.status === 'pending') {
activeFetches++;
task.status = 'fetching';
try {
const response = await fetch(task.request);
// Handle successful fetch (e.g., update cache, notify main thread)
task.status = 'completed';
// Broadcast result or store in IndexedDB
} catch (error) {
task.status = 'failed';
// Implement retry logic or error reporting
} finally {
activeFetches--;
processQueue(); // Try to process the next task
}
}
}
}
ã¹ããã4ïŒãããã¯ãŒã¯ç£èŠã®çµ±å
`navigator.connection`ïŒå©çšå¯èœãªå ŽåïŒãŸãã¯ãã®ä»ã®ã¡ã«ããºã ã䜿çšããŠããããã¯ãŒã¯ã®ã¹ããŒã¿ã¹ã確èªããŸãããã®æ å ±ã¯ãã¹ã±ãžã¥ãŒãªã³ã°ãšååŸã®æ±ºå®ã«åœ±é¿ãäžããå¿ èŠããããŸãã
ã¹ããã5ïŒåªå é äœä»ãããžãã¯ã®å®è£
æ°å€ã®åªå é äœããªã¯ãšã¹ãã«å²ãåœãŠãŸããæ¬¡ã«äŸã瀺ããŸãã
- é«åªå é äœïŒäŸïŒ3ïŒïŒ éèŠãªãŠãŒã¶ãŒããŒã¿ãçŸåšã®ãã¥ãŒã®éèŠãªæŽæ°ã
- äžåªå é äœïŒäŸïŒ2ïŒïŒ ä»åŸã®ãã¥ãŒã«å¿ èŠãªããŒã¿ãããé »åºŠã®äœãæŽæ°ã
- äœåªå é äœïŒäŸïŒ1ïŒïŒ åæãéèŠåºŠã®äœãã¢ã»ãããäºåãã£ãã·ã¥ã
`processQueue` 颿°ã¯ãåžžã«ååŸã§ããæé«ã®åªå é äœã®ã¿ã¹ã¯ãéžæããå¿ èŠããããŸãã
ã¹ããã6ïŒãšã©ãŒåŠçãšå詊è¡ããªã·ãŒã®å®çŸ©
ãããã¯ãŒã¯ãªã¯ãšã¹ãã¯å€±æããå¯èœæ§ããããŸããå ç¢ãªæŠç¥ãå®è£ ããŸãã
- 峿å詊è¡ïŒ äžæçãªãããã¯ãŒã¯ã®äžå ·åã®å Žåã
- ææ°ããã¯ãªãïŒ äžæçã«å©çšã§ããªããµãŒããŒãžã®éè² è·ãé¿ããããã«ãå詊è¡éã®é å»¶ãå¢ãããŸãã
- ãã©ãŒã«ããã¯ã¡ã«ããºã ïŒ å詊è¡ã倱æããå Žåã¯ããã£ãã·ã¥ãããããŒã¿ã䜿çšãããããŠãŒã¶ãŒã«éç¥ããããšãæ€èšããŠãã ããã
ã¹ããã7ïŒãã£ãã·ã¥ã¡ã«ããºã ãšã®çµ±å
飿ºãšã³ãžã³ã¯ããã£ãã·ã¥ã¬ã€ã€ãŒïŒãµãŒãã¹ã¯ãŒã«ãŒã®ãã£ãã·ã¥APIãIndexedDBãªã©ïŒãšé£æºããå¿ èŠããããŸããååŸã«æåããããããŒã¿ãé©åã«ä¿åããŸããååŸããåã«ãææ°ã®ããŒã¿ããã£ãã·ã¥ã§å©çšå¯èœãã©ããã確èªããŸãã
æ€èšãã¹ãã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯
ã«ã¹ã¿ã ãšã³ãžã³ã®æ§ç¯ã¯æå€§ã®æè»æ§ãæäŸããŸãããããã€ãã®æ¢åã®ããŒã«ãéçºãå€§å¹ ã«å éã§ããŸãã
- WorkboxïŒ ãµãŒãã¹ã¯ãŒã«ãŒããã£ãã·ã¥ãããã³ããã¯ã°ã©ãŠã³ãåæã®ç®¡çã容æã«ããGoogleã®ã©ã€ãã©ãªã®ã»ãããWorkboxã¯ãã«ãŒãã£ã³ã°ããã£ãã·ã¥æŠç¥ãããã³ããã¯ã°ã©ãŠã³ãåæã®ããã®ã¢ãžã¥ãŒã«ãæäŸããŸãããããã¯é£æºãšã³ãžã³ã®éèŠãªã³ã³ããŒãã³ãã§ãã
- PouchDB/CouchDBïŒ ããè€éãªãªãã©ã€ã³ããŒã¿åæã·ããªãªã®å Žåãç¹ã«åæ£ããŒã¿ãæ±ãå Žåã
- RxJSïŒReact/Angular/Vueã®å ŽåïŒïŒ ãªã¢ã¯ãã£ãããã°ã©ãã³ã°ã©ã€ãã©ãªã¯ãéåææäœãšã€ãã³ãã¹ããªãŒã ã®ç®¡çã«éåžžã«åŒ·åã§ãããããã¯ããã¯ã°ã©ãŠã³ãååŸã®äžå¿ã§ãã
- Webã¯ãŒã«ãŒã«ããã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ïŒ ãŠã§ã以å€ã®ãã©ãããã©ãŒã ã®å ŽåããŸãã¯è€éãªããã¯ã°ã©ãŠã³ãåŠçãå¿ èŠãªå ŽåãWebã¯ãŒã«ãŒã䜿çšããŠã¡ã€ã³ã¹ã¬ããããã¿ã¹ã¯ããªãããŒãã§ããŸãã
ã°ããŒãã«ãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã«èšèšããå Žåã¯ãããã€ãã®èŠå ã«ç¹å¥ãªæ³šæãæãå¿ èŠããããŸãã
1. åœéåãšããŒã«ãªãŒãŒã·ã§ã³
ååŸã¡ã«ããºã ã«çŽæ¥é¢ä¿ã¯ãããŸããããååŸãããã³ã³ãã³ãã«é¢é£ä»ããããããã¹ããŸãã¯ã¡ã¿ããŒã¿ãããŒã«ã©ã€ãºãããŠããããšã確èªããŠãã ãããããã«ã¯ããšã©ãŒã¡ãã»ãŒãžãã¹ããŒã¿ã¹æŽæ°ãããã³ããã¯ã°ã©ãŠã³ãããŠã³ããŒãã«é¢ãããŠãŒã¶ãŒåãã®éç¥ãå«ãŸããŸãã
2. ã¿ã€ã ãŸãŒã³ãšã¹ã±ãžã¥ãŒãªã³ã°
ããã¯ã°ã©ãŠã³ãååŸãç¹å®ã®æéïŒäžæ©ã®æŽæ°ãªã©ïŒã«ã¹ã±ãžã¥ãŒã«ãããŠããå Žåã¯ãç°ãªãã¿ã€ã ãŸãŒã³ã«æ³šæããŠãã ãããå¯èœãªéããäž»èŠãªãŠãŒã¶ãŒå°åã®ããŒã¯æã«å€§éã®ã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã«ããããšãé¿ãããããŠãŒã¶ãŒãåªå åææéãæ§æã§ããããã«ããŸãã
3. ããŒã¿äžéãšåŸéå¶èª²éæ¥ç¶
äžçäžã®å€ãã®ãŠãŒã¶ãŒãã峿 Œãªå¶éã®ããã¢ãã€ã«ããŒã¿ãã©ã³ã«äŸåããŠããŸãããšã³ãžã³ã¯ãåŸéå¶èª²éæ¥ç¶ã«ææã§ããå¿ èŠããããŸããäžå¯æ¬ ãªããŒã¿ã®ã¿ã®ååŸãåªå ããããã¯ã°ã©ãŠã³ãããŠã³ããŒãã«å¯Ÿãã詳现ãªãŠãŒã¶ãŒã³ã³ãããŒã«ãæäŸããããŒã¿äœ¿çšéãæç¢ºã«äŒããŸãã
å®è¡å¯èœãªæŽå¯ïŒ åŸéå¶èª²éæ¥ç¶ã§å€§èŠæš¡ãªããã¯ã°ã©ãŠã³ãããŠã³ããŒããéå§ããåã«ããŠãŒã¶ãŒã«èš±å¯ãæ±ããŸãããŠãŒã¶ãŒã垯åå¹ ã®å¶éãèšå®ããããç¹å®ã®æéïŒãWi-Fiæ¥ç¶æã®ã¿ããŠã³ããŒãããªã©ïŒã«ããŠã³ããŒããã¹ã±ãžã¥ãŒã«ãããã§ããããã«ããŸãã
4. 倿§ãªããã€ã¹æ©èœ
ãŠãŒã¶ãŒã¯ããã€ãšã³ãã®ã¹ããŒããã©ã³ããå€ããããŸã匷åã§ãªãããã€ã¹ãŸã§ãã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŸãããšã³ãžã³ã¯ãããã€ã¹ã®æ©èœãCPUè² è·ãããã³ã¡ã¢ãªå¶çŽã«åºã¥ããŠãååŸåäœãåçã«èª¿æŽããå¿ èŠããããŸãã
5. å°åãããã¯ãŒã¯ã€ã³ãã©ã¹ãã©ã¯ãã£
ãããã¯ãŒã¯é床ãšä¿¡é Œæ§ã¯ãå°åã«ãã£ãŠå€§ããç°ãªããŸãããšã©ãŒåŠçãšå詊è¡ããžãã¯ã¯ãäžéšã®å°åã§äžè¬çãªäžå®å®ãªæ¥ç¶ã«å¯Ÿå¿ã§ããã»ã©å ç¢ã§ãããšåæã«ãé«éãããã¯ãŒã¯ã§å¹ççã§ããå¿ èŠããããŸãã
6. ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒãšãšããžãã£ãã·ã¥
äž»ã«ããã¯ãšã³ãã®åé¡ã§ãããããã³ããšã³ãæŠç¥ã¯CDNãè£å®ã§ããŸãããã£ãã·ã¥ããããŒãæ£ããæ§æãããŠãããããã¯ã°ã©ãŠã³ãååŸãå°ççã«åæ£ãããCDNãªãœãŒã¹ãã€ã³ããªãžã§ã³ãã«æŽ»çšããŠãããé«éãªååŸãå®çŸããŠããããšã確èªããŠãã ããã
ããã¯ã°ã©ãŠã³ãååŸé£æºã«ãããå°æ¥ã®ãã¬ã³ã
ããã¯ã°ã©ãŠã³ãæäœã®ç¶æ³ã¯çµ¶ããé²åããŠããŸããå°æ¥ã®éçºã«ã¯ã次ã®ãã®ãå«ãŸããå¯èœæ§ããããŸãã
- ããæŽç·ŽãããAIé§åã®åªå é äœä»ãïŒ ãŠãŒã¶ãŒã®è¡åãåŠç¿ããŠã次ã«å¿ èŠãªããŒã¿ãäºæž¬ããŸãã
- 匷åãããããããªãŒæé©åïŒ OSã¬ãã«ã®é»åç®¡çæ©èœãšã®ããç·å¯ãªçµ±åã
- ã¯ãã¹ãã©ãããã©ãŒã åæã®æ¹åïŒ ãŠã§ããã¢ãã€ã«ãããã³ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³å šäœã§ã·ãŒã ã¬ã¹ãªããã¯ã°ã©ãŠã³ãæäœã
- éãåŠçã®ããã®WebAssemblyïŒ ããåªããããã©ãŒãã³ã¹ã®ããã«ãè€éãªããã¯ã°ã©ãŠã³ãåŠçãWebAssemblyã«ç§»è¡ããå¯èœæ§ããããŸãã
- ããã¯ã°ã©ãŠã³ãAPIã®æšæºåïŒ ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®ããã®ãã©ãŠã¶å šäœã§ããå ç¢ã§æšæºåãããAPIã
çµè«
é©åã«èšèšãããããã³ããšã³ãã®ããã¯ã°ã©ãŠã³ãååŸé£æºãšã³ãžã³ã¯ãåãªãããã©ãŒãã³ã¹ã®åäžã§ã¯ãããŸãããããã¯ã仿¥ã®ã°ããŒãã«ãªããžã¿ã«ãšã³ã·ã¹ãã ã§åè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããäžã§åºæ¬çãªèŠä»¶ã§ãããªãœãŒã¹ã®ããŠã³ããŒããã€ã³ããªãžã§ã³ãã«ç®¡çããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯ããããã¯ãŒã¯ã®ç¶æ³ãããã€ã¹ã®æ©èœã«é¢ä¿ãªããäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠãããé«éã§ãããä¿¡é Œæ§ãé«ããããã¢ã¯ã»ã¹ãããããªããŸãã
ãã®ãããªãšã³ãžã³ãå®è£ ããã«ã¯ãã¹ã±ãžã¥ãŒãªã³ã°ãåªå é äœä»ãããããã¯ãŒã¯ç£èŠãããã³ãšã©ãŒåŠçãžã®æŠç¥çãªã¢ãããŒããå¿ èŠã§ãããµãŒãã¹ã¯ãŒã«ãŒãWorkboxãªã©ã®ã©ã€ãã©ãªãªã©ã®ããŒã«ã掻çšãããšãéçºããã»ã¹ãå€§å¹ ã«ç°¡çŽ åã§ããŸããããžã¿ã«äžçããŸããŸãçžäºæ¥ç¶ãããã«ã€ããŠãããã¯ã°ã©ãŠã³ãååŸé£æºãç¿åŸããããšã¯ãã°ããŒãã«ãªæåãç®æãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠãªå·®å¥åèŠå ã«ãªããŸãã
å ç¢ãªé£æºãšã³ãžã³ã«æè³ããããšã§ããŠãŒã¶ãŒæºè¶³åºŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ããããŠæçµçã«ã¯ãã°ããŒãã«èŠæš¡ã§ã®ããžã¿ã«è£œåã®é·æçãªåç¶å¯èœæ§ãšãªãŒãã«æè³ããããšã«ãªããŸãã