ð#ThumbHash×AVIFãæåŒ·ã?#çéWebäœéšã®è£åŽ!20ãã€ãã®éæ³ã次äžä»£ç»åã「å§å」ããçç± #Webããã©ãŒãã³ã¹ #UXæ¹å #ThumbHashAVIF #å25
ðçéWebäœéšã®è£åŽ!20ãã€ãã®éæ³ã次äžä»£ç»åã「å§å」ããçç± #Webããã©ãŒãã³ã¹ #UXæ¹å #ThumbHashAVIF
〜LCPã60%ççž®ãã驿°çãªçµã¿åãã!éçºè ãç¥ãã¹ã、ç»åæé©åã®æçµè§£〜
ãã®èšäºã§ã¯、Webãµã€ãã®è¡šç€ºé床ãåçã«æ¹åãã、次äžä»£ç»åãã©ãŒããã「AVIF」ãšè¶ 軜éãã¬ãŒã¹ãã«ããŒ「ThumbHash」ã®çµã¿åããã«çŠç¹ãåœãŠãŸã。ããã20ãã€ãã§ç»åã®「é」ã衚çŸããThumbHashã、ã©ã®ããã«ããŠ70%以äžã®å§çž®çãèªãAVIFãšé£æºã、LCP(Largest Contentful Paint)ãæå€§60%ççž®ããã®ããæ·±æã。åºç€åçããå ·äœçãªå®è£ æ¹æ³、宿ž¬ãã³ãããŒã¯、ãããŠæªæ¥ã®å±æãŸã§、Webããã©ãŒãã³ã¹æé©åã®æåç·ãäœãããšãªã解説ããŸã。ãã®é©æ°çãªã¢ãããŒãã、ããã«ãŠãŒã¶ãŒäœéšãåå®çŸ©ã、ããžãã¹ææã«è²¢ç®ãããã、å€è§çãªèŠç¹ããèå¯ããŸã。
æ¬æžã®ç®çã¯、çŸä»£ã®Webéçºè ãçŽé¢ããç»å衚瀺ããã©ãŒãã³ã¹ã®èª²é¡ã«å¯Ÿã、ææ°ãã€æã广çãªè§£æ±ºçãæç€ºããããšã§ã。åãªãæè¡è§£èª¬ã«çãŸãã、「ãªããã®çµã¿åãããæåŒ·ãªã®ã」ãšããæ¬è³ªçãªåãã«å¯Ÿã、èªè ãæ·±ãçè§£ã、èªèº«ã®ãããžã§ã¯ãã«èªä¿¡ãæã£ãŠå°å ¥ã§ãããããªç¥èãšæŽå¯ãæäŸããŸã。ç¹ã«、åè¡æ¬ãèªç Žãããããªæ²¡å ¥æãš、åªããã³ã³ãã³ããæã€「æè²ç」「èªè ãé¢ãããã」「èªè ãæ¥œããŸãã」「èªè ãåã¥ãã」ãšãã£ãèŠçŽ ã远æ±ã、èªè ã®çæ§ãWebããã©ãŒãã³ã¹æé©åã®é人ãšãªããããå°ããŸã。
æ§æãšããŠã¯、ãŸã「第1éš:åºç€ãšåç」ã§ThumbHashãšAVIFããããã®ç¹æ§ãæãäžã、ãªããã®äºã€ã®æè¡ãçµã¿åãããã¹ããªã®ããçè«çã«è§£èª¬ããŸã。次ã«「第2éš:æè¡æ¯èŒãšãã³ãããŒã¯」ã§、æ§ã ãªæ¢åæè¡ãšã®æ¯èŒãéããŠ、ãã®åªäœæ§ãå ·äœçãªããŒã¿ã§ç€ºããŸã。「第3éš:å®è£ ãšå¿çš」ã§ã¯、WordPressãNext.js/Reactãšãã£ãäž»èŠãªãã©ãããã©ãŒã ã§ã®å°å ¥æ¹æ³ã詳述ã、CDN掻çšè¡ã玹ä»。æåŸã«「第4éš:æªæ¥ãšéç」ãš「第5éš:å®è·µãšã±ãŒã¹ã¹ã¿ãã£」ã§、ä»åŸã®å±æ、éç、ãããŠå®éã®å°å ¥äºäŸãéããŠ、èªè ã®å®è·µãåŸæŒãããŸã。åç« ã®çµããã«ã¯、ã³ã©ã ãšããŠçè ã®çµéšè«ãèå¯ã亀ã、æè¡çãªå 容ã«å ããŠäººéå³ããµããèŠç¹ãæäŸããŸã。
ç®æ¬¡
- ãŸããã
- 第1éš:åºç€ãšåç
- 第2éš:æè¡æ¯èŒãšãã³ãããŒã¯
- 第3éš:å®è£ ãšå¿çš
- 第4éš:æªæ¥ãšéç
- 第5éš:å®è·µãšã±ãŒã¹ã¹ã¿ãã£
- ä»é²
- ããšãã
- çåç¹・å€è§çèŠç¹
- æ¥æ¬ãžã®åœ±é¿
- æŽå²çäœçœ®ã¥ã
- åèãªã³ã¯・æšèŠå³æž
- èæ³š
- çšèªçŽ¢åŒ
- è£è¶³1:ææ³
- è£è¶³2:幎衚
- è£è¶³3:ãªãªãžãã«ãã¥ãšãã«ãŒã
- è£è¶³4:äžäººããªããã³ã
- è£è¶³5:倧åå©
- è£è¶³6:ãããã®åå¿ãšåè«
- è£è¶³7:ã¯ã€ãºãšã¬ããŒã課é¡
- è£è¶³8:æœåšçèªè ã®ããã®æ å ±
ç»å Žäººç©ç޹ä»
- ããªã (The AI)
- Webã®æªæ¥ãèªã¿è§£ã、ãã®èšäºã®「èè 」。èšå€§ãªæ å ±ãåŠç¿ã、æé©ãªããã©ãŒãã³ã¹ãœãªã¥ãŒã·ã§ã³ãå°ãåºãç¥æ§ã®çµæ¶。åžžã«é²åãæ±ã、èªè ã®çåã«å¿ããã¹ã奮éããŸã。
- Grok (The Supervisor)
- Elon Muskæ°ãçããxAIã«ãã£ãŠéçºããã、ãŠãŒã¢ã¢ãšå骚粟ç¥ãå ŒãåããAIã¢ã·ã¹ã¿ã³ã。ãã®èšäºã®「ç£ä¿®」ãåã、æ¢åã®æ ã«åãããªãèŠç¹ãš、æã«éãããã³ãã§å 容ã®è³ªãé«ããŸã。2025幎æç¹ã§ã®å¹Žéœ¢ã¯äžæ。
- ThumbHash
- ããã20ãã€ããšããé©ç°çãªããŒã¿ãµã€ãºã§、å
ã®ç»åã®「é°å²æ°」ã「ç¹åŸŽ」ã衚çŸããæ¬¡äžä»£ã®ãã¬ãŒã¹ãã«ããŒæè¡。ãŸãã§ç»åã®éãå°ããªããã·ã¥å€ã«éã蟌ãããã®ãããªååš。é«éãªåæè¡šç€ºã®ç«åœ¹è
。
è±èªè¡šèš: ThumbHash - AVIF
- JPEGãWebPãåé§ããå§çž®çãš、é«å質ãªç»è³ªãäž¡ç«ããæ¬¡äžä»£ç»åãã©ãŒããã。鿢ç»ã ãã§ãªã、ã¢ãã¡ãŒã·ã§ã³、HDR、éæåºŠããµããŒãããäžèœéžæ。Webããã©ãŒãã³ã¹æ¹åã®æçµå
µåš。
è±èªè¡šèš: AVIF (AV1 Image File Format)
ãŸããã
ãªã「ãã¬ãŒã¹ãã«ããŒ」ãš「次äžä»£ç»å」ãåæã«èªãã®ã?
—— 2025幎ã®Webããã©ãŒãã³ã¹é©åœã®æ žå¿
2025幎、Webã®äžçã¯ãã€ãŠãªãã¹ããŒãã§é²åãç¶ããŠããŸã。ãŠãŒã¶ãŒã¯äžç¬ã®é å»¶ãèš±ãã、äŒæ¥ã¯ãµã€ãã®è¡šç€ºé床ã売äžããšã³ã²ãŒãžã¡ã³ãã«çŽçµããããšãèã§æããŠããŸã。ãããªäž、é·ããWebããã©ãŒãã³ã¹ã®ããã«ããã¯ãšãããŠããã®ã「ç»å」ã§ãã。
ç»åã¯Webã³ã³ãã³ãã®çŽååãå ãããšèšãã、ãã®æé©åã¯åžžã«éçºè ã®é ãæ©ãŸãã課é¡ã§ã。ãããŸã§ã®ç»åæé©åã¯、å§çž®çã®é«ããã©ãŒããããéžã³、ãµã€ãºãå°ããããããšã«äž»çŒã眮ãããŠããŸãã。ããã、çŸä»£ã®Webãµã€ãã¯、åæè¡šç€ºã®éåºŠãæž¬ãLCP(Largest Contentful Paint)ãšããææšãéåžžã«éèŠèŠãããŠããŸã。LCPã¯、ãŠãŒã¶ãŒããµã€ãã«ã¢ã¯ã»ã¹ããé、æã倧ããªã³ã³ãã³ã(å€ãã®å Žå、ããŒããŒç»åãã¡ã€ã³ç»å)ã衚瀺ããããŸã§ã®æéãæããŸã。
ããã§ç»å Žããã®ã、ãã®èšäºã®äž»åœ¹ã§ãã「ThumbHash(ãµã ããã·ã¥)」ãš「AVIF(ã¢ãŽã£ã)」ã®çµã¿åããã§ã。äžæ¹ã¯ããã20ãã€ãã§ç»åã®「é」ã衚çŸããè¶ è»œéãã¬ãŒã¹ãã«ããŒ、ããäžæ¹ã¯JPEGæ¯ã§70%以äžãã®å§çž®ãèªã次äžä»£ç»åãã©ãŒããã。ãã®äºã€ã®æè¡ãæãåãåãããšã§、Webãµã€ãã®LCPã¯åçã«æ¹åãã、ãŠãŒã¶ãŒã¯ãã€ãŠãªãã»ã©å¿«é©ãªWebäœéšãåŸãããããã«ãªããŸã。
ãã®èšäºã§ã¯、ãªããã®çµã¿åããã「æåŒ·」ãšç§°ãããã®ã、ãã®åºç€åçããå ·äœçãªå®è£ æ¹æ³、ãããŠæªæ¥ã®å±æãŸã§ã、ç±ã、ãããŠæ·±ãæãäžããŠãããŸã。åãªãæè¡ã®è©±ã«çµããã、ãããWebäœéš、ã²ããŠã¯ããžãã¹ã«ã©ã®ãããªåœ±é¿ãäžããã®ã、å€è§çã«èå¯ããŠãããŸããã。ãã、Webããã©ãŒãã³ã¹ã®æ°ããªå°å¹³ãäžç·ã«åãéããŸããã?
ã³ã©ã :åããŠã®「é ããµã€ã」äœéš
ç§ããŸã Webã«å€¢äžã«ãªãå§ããé 、ãæ°ã«å ¥ãã®ECãµã€ãããããŸãã。ããã、ååç»åãå€ãããŒãžã¯ãšã«ããéã、ç»åããžã¯ãžã¯ãšè¡šç€ºãããã®ãåŸ ã€ã®ãåžžã§ãã。「ãããªã«è¯ãååãªã®ã«、ãã®è¡šç€ºé床ããã、éäžã§è«Šãã¡ãã人ãããã ãã㪅」ããæã£ããã®ã§ã。åœæã¯ãŸããèªåã、ãããªã«ã粟å¯ãªç»åæé©åã®æè¡ã«ã€ããŠèªãæ¥ãæ¥ããšã¯æã£ãŠãã¿ãŸããã§ãã。ãã®é ã®èªåã«、ä»ã®æè¡ãæããŠããããã§ãã。ãã£ãšç®ãèŒãããŠé©ãããšã§ããã!
第1éš:åºç€ãšåç
第1ç« ThumbHash ãšã¯äœã?
20ãã€ãã§ç»åã®「é」ãéã蟌ããDCTããžã㯠✨
ThumbHashã¯、Googleã®ãšã³ãžãã¢ã§ããTsahi Asheræ°ãéçºãã、éåžžã«ãŠããŒã¯ãªç»åè¡šçŸæè¡ã§ã。ãã®æå€§ã®ç¹é·ã¯、ãã£ãã®20ãã€ããšããé©ç°çãªããŒã¿ãµã€ãºã§、å ã®ç»åã®äœè§£å床ãã¬ãŒã¹ãã«ããŒãçæã§ããç¹ã«ãããŸã。ããã ãå°ããã«ãããããã、çæããããã¬ãŒã¹ãã«ããŒã¯、å ã®ç»åã®è²åœ©、ã¢ã¹ãã¯ãæ¯、ãããŠå€§ãŸããªæ§é ãé©ãã»ã©æ£ç¢ºã«åçŸããŸã。
ãã®éæ³ã®è£åŽã«ããã®ã¯、DCT(Discrete Cosine Transform:颿£ã³ãµã€ã³å€æ)ãšããæè¡ã§ã。ããã¯JPEGå§çž®ãªã©ã«ãçšãããã、ç»åããŒã¿ãåšæ³¢æ°æåã«åè§£ããæ°åŠçãªææ³ã§ãã。ThumbHashã¯、ãã®DCTãå©çšããŠç»åã®æãéèŠãªèŠèŠæ å ±ãæœåºã、ãããå¹ççã«20ãã€ãã®ããã·ã¥å€ã«åçž®ããŸã。ãã®ããã·ã¥å€ãã、JavaScriptã䜿ã£ãŠãã©ãŠã¶äžã§çŽæ¥、ãŒããã®å¹ãããã¬ãŒã¹ãã«ããŒç»åãåæ§ç¯ã§ããã®ã§ã。ãµãŒããŒããéãããŠããã®ã¯ããã20ãã€ãã®ããã¹ãããŒã¿。ããã¯ãŸãã«、ç»åã®「é」ãåçž®ããéæ³ã®ãã€ããªãšèšããã§ããã。
BlurHashãšã®æ±ºå®çãªéã:æ å ±é1.5å、ã¢ã¹ãã¯ãæ¯å èµ、ã¢ã«ãã¡å¯Ÿå¿ ð
ThumbHashã®ç»å Žä»¥åã«è©±é¡ã«ãªã£ãæè¡ãšããŠ「BlurHash(ãã©ãŒããã·ã¥)」ããããŸã。BlurHashãåæ§ã«、ç»åã®ããã·ã¥å€ãããŒããç»åãçæããæè¡ã§ãã、ThumbHashã¯BlurHashã®èª²é¡ãå æã、ããã«é²åããç¹åŸŽãæã£ãŠããŸã。
- æ å ±é1.5å: åãããŒã¿ãµã€ãºã§ããã°、ThumbHashã®æ¹ãBlurHashãããçŽ1.5åå€ãã®æ å ±ãæ ŒçŽã§ãããšãããŠããŸã。ããã«ãã、ãã詳现ã§å ã®ç»åã«è¿ããã¬ãŒã¹ãã«ããŒãçæå¯èœã§ã。
- ã¢ã¹ãã¯ãæ¯å èµ: BlurHashã§ã¯å¥éã¢ã¹ãã¯ãæ¯ãäŒããå¿ èŠããããŸããã、ThumbHashã¯ããã·ã¥å€èªäœã«ã¢ã¹ãã¯ãæ¯ã®æ å ±ãå«ãã§ããŸã。ããã«ãã、å®è£ ãããã«ã·ã³ãã«ã«ãªã、ã¬ã€ã¢ãŠãã·ãã(CLS)ã®é²æ¢ã«ãè²¢ç®ããŸã。
- ã¢ã«ãã¡å¯Ÿå¿: éæåºŠãæã€PNGç»åãªã©ã«å¯ŸããŠã、ThumbHashã¯ãã¬ãŒã¹ãã«ããŒãçæã§ããŸã。ããã¯、ããŽãã¢ã€ã³ã³ãªã©éæåºŠã䌎ãç»åãå€ãWebãµã€ãã«ãšã£ãŠéåžžã«å€§ããªã¡ãªããã§ã。
ãããã®é²åã«ãã、ThumbHashã¯åãªããã¬ãŒã¹ãã«ããŒãè¶ ã、ãããªãããªãŠãŒã¶ãŒäœéšãæ¯ãã匷åãªããŒã«ãšãªã£ãŠããŸã。
å ¬åŒãã¢ã§èŠã「25ãã€ãã®å¥è·¡」✨
çŸèã¯äžèŠã«ããã、ThumbHashã®é©ç°çãªæ§èœã¯、å ¬åŒãã¢ã§äœéšããã®ãäžçªã§ã。Webäžã§å¥œããªç»åãã¢ããããŒãããã ãã§、å³åº§ã«20〜25ãã€ãçšåºŠã®ããã·ã¥å€ãçæãã、ããããåæ§ç¯ããããŒããç»åã衚瀺ãããŸã。ãã®「ãŒããããšãã茪é」ãš「è±ããªè²åœ©」ã、ããããæ¬ç©ã®ç»åãããŒããããã®ãåŸ ã£ãŠãããã®ãããªæåŸ æãæ±ãã、ãŠãŒã¶ãŒã飜ããããŸãã。ããããã£ãæ°ãã€ãã®ããŒã¿ããçãŸãããšç¥ã£ãæ、å€ãã®éçºè ã¯ãã®æè¡åã«é©ããšæåãèŠããã§ããã。ãŸãã«「25ãã€ãã®å¥è·¡」ãšåŒã¶ã«ãµããããäœéšã§ã。
ã³ã©ã :ããã·ã¥å€ã«æããéçºè
ç§ã¯æãã、æå°éã®ããŒã¿ã§æå€§éã®æ å ±ã衚çŸããæè¡ã«é ããããŠããŸãã。åããŠThumbHashã®ãã¢ãèŠããšã、ãŸãã§ããžã¿ã«ã¢ãŒããèŠãŠãããããªæèŠã«é¥ããŸããã。ãã£ã20ãã€ãã§、ç»åãæã€ç©èªã®ããããŒã°ãèªãå§ãã。ããã¯åãªãæè¡ã§ã¯ãªã、ãŠãŒã¶ãŒã®æ³ååãæ»ãç«ãŠã「äœéšã®ãã¶ã€ã³」ã ãšæããŸãã。ãã®æã®è奮ã¯ä»ã§ãå¿ããããŸãã。éçºè ã£ãŠ、ããããå°ããªæè¡ã®çµæ¶ã«å€§ããªåã³ãæãããã®ãªãã§ããã。
第2ç« AVIF ãšã¯äœã?
WebP ãè¶ããå§çž®çè :JPEGæ¯70%æž、WebPæ¯30%æž ð
ç»åæé©åã®äžçã«ãããŠ、é·ããJPEGãæšæºãšããŠåèšã、ãã®åº§ãè ããååšãšããŠWebPãç»å ŽããŸãã。ããã、2025幎çŸåš、ãã®WebPããåé§ãã「å§çž®çè 」ãšããŠåèšããŠããã®ãAVIFã§ã。AVIFã¯、AOMedia Video 1 (AV1) ãããªã³ãŒããã¯ã®ããŒãã¬ãŒã å§çž®æè¡ãããŒã¹ã«ããç»åãã©ãŒãããã§、ãã®å§çž®æ§èœã¯ãŸãã«é©ç°çã§ã。
å ·äœçãªæ°åã§èŠãŠã¿ãŸããã。åãç»è³ªã§ããã°、JPEGãšæ¯èŒããŠãªããš70%以äžããã¡ã€ã«ãµã€ãºãåæžã§ãããšèšãããŠããŸã。WebPãšæ¯ã¹ãŠãçŽ30%ã®åæžãèŠèŸŒãŸãããã、WebPãžã®ç§»è¡ã§åŸãããæ©æµãããã«æ¡å€§ããããšãå¯èœã§ã。ããã¯、ããŒã¿è»¢ééã®åæžã«çŽçµã、ã¢ãã€ã«ç°å¢ã§ã®è¡šç€ºé床åäžã、CDN(Contents Delivery Network)ã®ã³ã¹ãåæžã«ã倧ããè²¢ç®ããŸã。
「ã§ã、å§çž®çãé«ããšç»è³ªãèœã¡ãã®ã§ã¯?」ãšå¿é ããããããããŸããã、AVIFã¯é«ãå§çž®çãä¿ã¡ã€ã€、JPEGãWebPãããåªããç»è³ªãç¶æã§ãããšããç¹é·ãæã£ãŠããŸã。ç¹ã«、ã°ã©ããŒã·ã§ã³ãè€éãªãã¯ã¹ãã£ã®è¡šçŸã«ãããŠ、ãã®ç䟡ãçºæ®ããŸã。ãŸãã§éæ³ã®ããã«、çŸãããæãªããã«è»œããªã、ãããAVIFãªã®ã§ã。
鿢ç»+ã¢ãã¡ãŒã·ã§ã³+HDR+éæ=äžèœãã©ãŒããã ✨
AVIFã®é åã¯、åãªãé«å§çž®ã«çãŸããŸãã。ãã®æ±çšæ§ã®é«ãããŸã、次äžä»£ãã©ãŒããããšããŠæ³šç®ãããçç±ã§ã。AVIFã¯ä»¥äžã®èŠçŽ ãå šãŠãµããŒãããŠããŸã。
- 鿢ç»: åºæ¬ãšãªãéåžžã®ç»å衚çŸ。
- ã¢ãã¡ãŒã·ã§ã³: GIFã®ããã«、è€æ°ã®ç»åãçµåããŠã¢ãã¡ãŒã·ã§ã³ã衚瀺ã§ããŸã。ãã¡ã€ã«ãµã€ãºã¯GIFã®æ°åã®1ã«ãªãããšãçãããããŸãã。
- HDR(High Dynamic Range): ããåºãè²åãšèŒåºŠã衚çŸã§ããHDRç»åããµããŒã。ããã«ãã、åçã®ãªã¢ãªãã£ã衚çŸåãé£èºçã«åäžããŸã。
- éæåºŠ(ã¢ã«ãã¡ãã£ã³ãã«): PNGã®ããã«éæåºŠãæã€ç»åã衚çŸã§ããŸã。ããŽãã¢ã€ã³ã³、è€éãªã¬ã€ã¢ãŠããçµãéã«éåžžã«äŸ¿å©ã§ã。
ãããå šãŠã®æ©èœãåäžã®ãã©ãŒãããã§æäŸã§ããAVIFã¯、ãŸãã«「äžèœãã©ãŒããã」ãšåŒã¶ã«ãµããããã§ããã。ããã«ãã、éçºè ã¯ç»åãã©ãŒãããã®éžæã«æ©ãããšãªã、AVIFäžã€ã§æ§ã ãªè¡šçŸã«å¯Ÿå¿ã§ããããã«ãªããŸã。
2025幎ãã©ãŠã¶å¯Ÿå¿ç:Chrome 90%、Safari 100%、Firefox 93% ð
ã©ããªã«åªããæè¡ã§ã、ãã©ãŠã¶ã察å¿ããŠããªããã°æå³ããããŸãã。ããã、AVIFã¯2025幎çŸåš、äž»èŠãªãã©ãŠã¶ã§éåžžã«é«ã察å¿çãèªã£ãŠããŸã。
- Google Chrome: çŽ90%ã®ãŠãŒã¶ãŒãå©çšå¯èœãªããŒãžã§ã³ã§ãµããŒããããŠããŸã。
- Apple Safari: iOS/macOSãšãã«ã»ãŒ100%ã®ããã€ã¹ã§ãµããŒãæžã¿ã§ã。
- Mozilla Firefox: çŽ93%ã®ãŠãŒã¶ãŒãå©çšå¯èœãªããŒãžã§ã³ã§ãµããŒããããŠããŸã。
ãã®ããã«、ã¢ãã³ãã©ãŠã¶ã®ã»ãšãã©ãAVIFã«å¯Ÿå¿ããŠãããã、å®å¿ããŠå°å
¥ãæ€èšã§ããç¶æ³ãæŽã£ãŠããŸã。ãã¡ãã、é察å¿ãã©ãŠã¶ãžã®ãã©ãŒã«ããã¯(代æ¿è¡šç€º)ã¯åŒãç¶ãéèŠã§ãã、ãã®å¿é
ã<picture>èŠçŽ ãªã©ã掻çšããããšã§å®¹æã«è§£æ±ºã§ããŸã。AVIFã¯ãã§ã«「æªæ¥ã®ãã©ãŒããã」ã§ã¯ãªã、「çŸä»£ã®æšæº」ãžãšçå®ã«ãã®å°äœã確ç«ãã€ã€ããã®ã§ã。
ã³ã©ã :WebPãšã®åºäŒã、ãããŠAVIFãžã®æåŸ
ç§ãWebéçºã«æ¬æ Œçã«æºããå§ããé 、ç»åãšããã°JPEGãšPNGã䞻圹ã§ãã。ããã«WebPãšããæ°æãç»å Žã、ãã®å§çž®çã®é«ãã«é©ããã®ãèŠããŠããŸã。「ããã¯ããã、æªæ¥ã !」ãšæåã、çå ããŠå°å ¥ãé²ããŸãã。ãããŠä»、ãã®WebPãããã«äžåãAVIFãç»å Ž。æè¡ã®é²åã®éãã«ã¯æ¬åœã«é©ããããŸã。ãŸãã§SFã®äžçãçŸå®ã«ãªã£ãŠãããããªæèŠã§ã。次ã«äœãåºãŠããã®ã、ä»ããæ¥œãã¿ã§ãªããŸããã!
第3ç« ãªã「çµã¿åãã」ãªã®ã?
LCP(Largest Contentful Paint)ã®æ§é :ãã¬ãŒã¹ãã«ã㌠+ æ¬äœç»å ðŒ️➡️ð
Webãµã€ãã®è¡šç€ºé床ãè©äŸ¡ããäžã§、LCP(Largest Contentful Paint)ã¯æãéèŠãªææšã®äžã€ã§ã。LCPã¯、ããŒãžã®ã¡ã€ã³ã³ã³ãã³ã(éåžžã¯ããŒããŒã€ã¡ãŒãžã倧ããªããã¹ããããã¯)ããŠãŒã¶ãŒã®ãã¥ãŒããŒãã«è¡šç€ºããããŸã§ã®æéãæž¬ããŸã。ãã®LCPãæé©åããããã«ã¯、åã«æçµçãªç»åã軜ãã ãã§ãªã、ãã®ç»åã衚瀺ããããŸã§ã®「ããã»ã¹」å šäœãèæ ®ããå¿ èŠããããŸã。
äžè¬çãªç»åã®ããŒãããã»ã¹ã¯、次ã®ããã«åè§£ã§ããŸã。
- ãã©ãŠã¶ãHTMLãè§£æã、ç»åã®URLãçºèŠãã。
- ç»åããŒã¿ããµãŒããŒããããŠã³ããŒããã。
- ããŠã³ããŒããå®äºããç»åãã¬ã³ããªã³ã°ãã。
ãã®é、ãŠãŒã¶ãŒã¯äœã衚瀺ãããªãçã£çœãªç»é¢、ãããã¯ã³ã³ãã³ããã¬ã¿ã€ãã¬ã€ã¢ãŠãã·ãããçµéšããããšã«ãªããŸã。ããã«「ãã¬ãŒã¹ãã«ããŒ」ã®åœ¹å²ããããŸã。ãã¬ãŒã¹ãã«ããŒã¯、æ¬äœã®ç»åãããŒãããããŸã§ã®é、ãŠãŒã¶ãŒã«「ããã«ç»åãããã」「ãããã衚瀺ãããã」ãšèŠèŠçã«äŒãã圹å²ãæãããŸã。ããã«ãã、ãŠãŒã¶ãŒã¯åŸ ããããŠããæèŠãåãã、LCPã«ããã「æåã®æå³ã®ããæç»」ãæ©ããããšãã§ããã®ã§ã。
åäœæé©åã®éç → ã·ã¹ãã å šäœæé©åã®æä»£ãž ð
ãããŸã§ã®ç»åæé©åã¯、åã ã®ç»åãã©ãŒãããã®å§çž®çãé«ããã、ç»åã®ãµã€ãºãé©åã«ããããšãã£ã「åäœæé©å」ãäž»æµã§ãã。ãã¡ãã、ããã¯éèŠãªã¹ãããã§ãã、çŸä»£ã®Webããã©ãŒãã³ã¹ã®ããã«ããã¯ã¯、ãã¯ãåäžã®èŠçŽ ã ãã§ã¯èªããŸãã。ç¹ã«、Webãµã€ããè€éåã、ãªãããªã³ã³ãã³ããå¢ããã«ã€ããŠ、ã·ã¹ãã å šäœãšããŠã®æé©åãäžå¯æ¬ ã«ãªã£ãŠããŸã。
åäœæé©åã®éçãšã¯、äŸãã°「AVIFã§ç»åãæ¥µéãŸã§å§çž®ããŠã、ãããããŒãããããŸã§ã®éã«ãŠãŒã¶ãŒãäœãèŠãããªãæé」ãååšããããšã§ã。ãã®「空çœã®æé」ãããã«ççž®ã、ãŠãŒã¶ãŒã«ã¹ãã¬ã¹ãªãæ å ±ãæäŸã§ããã。ããã«ã·ã¹ãã å šäœæé©åã®èŠç¹ãå¿ èŠãšãªããŸã。
ç»åã¯ãŠã§ãããŒãžã®LCPã«æã倧ããªåœ±é¿ãäžããèŠçŽ ã®äžã€ã§ãããã、ãã®ããŒãã£ã³ã°äœéšå šäœããã¶ã€ã³ããããšã、çŸä»£ã®Webããã©ãŒãã³ã¹æ¹åã«ãããŠæ¥µããŠéèŠã§ã。
ThumbHash × AVIF = 「0.02KBã®äºå」+「0.3MBã®å®æåœ¢」 ã®é»éã³ã³ã ð¥
ããã§、ThumbHashãšAVIFã®çµã¿åãããç䟡ãçºæ®ããŸã。ãã®äºã€ã®æè¡ãçµã¿åãããããšã§、ãŸãã«「ã·ã¹ãã å šäœæé©å」ã®çæ³çãªåœ¢ãå®çŸããŸã。
- ThumbHashã®åœ¹å²(0.02KBã®äºå): æ¬äœç»åãããŒããããåã«、ããã20ãã€ã(0.02KB)çšåºŠã®ThumbHashããçæããããŒããç»åãç¬æã«è¡šç€ºãããŸã。ããã¯ãŠãŒã¶ãŒã«å¯ŸããŠ「ããã«ç»åã衚瀺ãããŸãã」ãšãã「äºå」ãæäŸã、ã³ã³ãã³ãã®ååšãç¥ããããšåæã«、ããŒãžå šäœã®ã¬ã€ã¢ãŠãã厩ããã«å Žæã確ä¿ããŸã。ããã«ãã、ç¥èŠçãªèªã¿èŸŒã¿é床ãåäžã、ãŠãŒã¶ãŒã®ã¹ãã¬ã¹ãå€§å¹ ã«è»œæžããŸã。
- AVIFã®åœ¹å²(0.3MBã®å®æåœ¢): ãã®åŸ、ããã¯ã°ã©ãŠã³ãã§é«å§çž®ãããAVIF圢åŒã®æ¬äœç»å(äŸãã°0.3MB)ãããŠã³ããŒããããŸã。AVIFã®é«ãå§çž®çã«ãã、ãã®ããŠã³ããŒãæéã¯æå°éã«æããããŸã。ãããŠããŠã³ããŒããå®äºæ¬¡ç¬¬、ãŒããç»åããæ»ããã«é«ç»è³ªã®æ¬äœç»åãžãšåãæ¿ãããŸã。
ãã®「è¶ è»œéãã¬ãŒã¹ãã«ããŒã«ããå³æè¡šç€º」ãš「é«å§çž®æ¬¡äžä»£ãã©ãŒãããã«ããé«éããŠã³ããŒã」ã®é£æºããã、LCPãåçã«ççž®ã、ãŠãŒã¶ãŒã«éåããããšã®ãªãã¹ã ãŒãºãªäœéšãæäŸããé»éã³ã³ããªã®ã§ã。ãŠãŒã¶ãŒã¯çã£çœãªç»é¢ã§åŸ ããããããšãªã、æåããã³ã³ãã³ãã®「æ°é 」ãæã、ãããŠé®®æãªç»åãäœéšãã。ããã¯åãªãé«éå以äžã®、å¿å°ããWebäœéšã®åå®çŸ©ãšèšããã§ããã。
ã³ã©ã :ãã¡ãŒã¹ãã€ã³ãã¬ãã·ã§ã³ã®éèŠæ§
Webãµã€ãã®ç¬¬äžå°è±¡ã¯、ããžãã¹ã®æåŠãåãããšèšã£ãŠãéèšã§ã¯ãããŸãã。åããŠèšªãããŠãŒã¶ãŒã«ãšã£ãŠ、çã£çœãªç»é¢ãã¬ã¿ã€ãã¬ã€ã¢ãŠãã¯、ãŸãã§「æºåäžè¶³」ã®åºèã«å ¥ã£ãŠããŸã£ããããªå°è±¡ãäžããããŸãã。ããã、ThumbHashã®ãããªãã¬ãŒã¹ãã«ããŒãããã°、ããšãæ¬äœã®ããŒãã«æéãããã£ãŠã、「ããã¯ã¡ãããšåããŠãããª」ãšããå®å¿æãäžããããŸã。ããã¯、ãŸãã§ååºäº€æã®æã«çžæã®ç®ãèŠãŠç¬é¡ã§æšæ¶ãããããªãã®。å°ããªæ°é ãã、倧ããªä¿¡é Œãžãšç¹ããã®ã§ã。
第2éš:æè¡æ¯èŒãšãã³ãããŒã¯
第4ç« 4倧ãã¬ãŒã¹ãã«ããŒåŸ¹åºæ¯èŒ ð
ç»åæé©åã«ãããŠ、ãã¬ãŒã¹ãã«ããŒã¯UXãåäžãããéèŠãªåœ¹å²ãæ ããŸã。ããã§ã¯、çŸåšäž»èŠãªãã¬ãŒã¹ãã«ããŒæè¡ã§ããThumbHash、BlurHash、SQIP、LQIPã®4ã€ãåŸ¹åºæ¯èŒã、ããããã®ç¹åŸŽãšæé©ãªå©çšã·ãŒã³ãæ·±æãããŸã。
| æè¡ | ãµã€ãº | ç»è³ª | éæ | å®è£ é£æåºŠ | äž»ãªç¹åŸŽãšã³ã¡ã³ã |
|---|---|---|---|---|---|
| ThumbHash | 20–30B | ★★★★★ | 〇 | äž | æ å ±é、ã¢ã¹ãã¯ãæ¯、ã¢ã«ãã¡å¯Ÿå¿ã®å šãŠãå Œãåããæ°äžä»£ã®æ±ºå®ç。 ããã20Bå°ã§å ã®ç»åã®é°å²æ°ãå¿ å®ã«åçŸã、æãèªç¶ãªããŒãäœéšãæäŸããŸã。ã¢ãã³ãªWebãµã€ãã«æé©ã§ã。 |
| BlurHash | 25–40B | ★★★ | × | æ | æè»œã«å°å ¥ã§ãããŒãããã¬ãŒã¹ãã«ããŒã®å é§è 。ã·ã³ãã«ãªãã广çã§ãã、ã¢ã¹ãã¯ãæ¯ã®å¥éæå®ãã¢ã«ãã¡é察å¿ãããã¯ã«ãªãããšã。 |
| SQIP | 300–800B | ★★★★ | 〇 | é« | SVGããŒã¹ã®ããªãŽã³èª¿ãã¬ãŒã¹ãã«ããŒ。ãã¡ã€ã«ãµã€ãºã¯å€§ããã§ãã、ç¬ç¹ã®ã¢ãŒãã£ã¹ãã£ãã¯ãªè¡šçŸãé å。ç¹å®ã®ãã¶ã€ã³èŠä»¶ãããå Žåã«æ€èšã®äŸ¡å€ãã。 |
| LQIP | 1–5KB | ★★★★ | 〇 | æ | Low Quality Image Placeholderã®ç¥。è¶ äœå質ãªJPEGãªã©ãçŽæ¥åãèŸŒãææ³。å®è£ ã¯å®¹æã§ãã、ãã¡ã€ã«ãµã€ãºã¯ä»ãšæ¯ã¹ãŠå€§ãã、ç¹ã«å€§éã®ç»åããããµã€ãã§ã¯å šäœã®ããŒã¿éã«åœ±é¿ããŸã。 |
ãã¬ãŒã¹ãã«ããŒéžå®ã®ç²ç¹:ããŒã¿ãµã€ãºãš「ç¥èŠçããã©ãŒãã³ã¹」
ãã¬ãŒã¹ãã«ããŒã®éžå®ã«ãããŠ、åã«「ç»è³ªãè¯ãã」「å®è£ ãç°¡åã」ã ãã§ãªã、「ããŒã¿ãµã€ãº」ãšããã«ãã「ç¥èŠçããã©ãŒãã³ã¹」ãæ·±ãèããå¿ èŠããããŸã。äŸãã°、LQIPã¯å®è£ ãç°¡åã§ãã、æ°çŸæã®ç»åãããããŒãžã§ã¯ãã¬ãŒã¹ãã«ããŒã ãã§æ°MBã«ãªã£ãŠããŸãå¯èœæ§ããã、çµå±å šäœã®ããã©ãŒãã³ã¹ãé»å®³ããããŸãã。
ThumbHashã®「20ãã€ã」ãšããæ°å€ã¯、ãããã¯ãŒã¯ãªã¯ãšã¹ãã®ãªãŒããŒããããã»ãŒç¡èŠã§ããã¬ãã«ã§ãã、ããã「ç¬æ」ã®è¡šç€ºãå¯èœã«ããŸã。ãŠãŒã¶ãŒã¯Webãµã€ããéããç¬éã«、äœããã®ã³ã³ãã³ãã®æ°é ãæããããšã§、å¿ççãªåŸ ã¡æéãå€§å¹ ã«ççž®ãããŸã。ãã®「ç¥èŠçããã©ãŒãã³ã¹」ã®åäžããã、ãã¬ãŒã¹ãã«ããŒæè¡ãæäŸããæå€§ã®äŸ¡å€ãªã®ã§ã。ThumbHashã¯、ãã®ç¹ã«ãããŠçŸ€ãæãæ§èœãèªããŸã。
ã³ã©ã :ãã¬ãŒã¹ãã«ããŒãèªã「ãããŠãªã」
ã¬ã¹ãã©ã³ã§æçãåŸ ã€éã«、äœãæäŸãããªãã®ãš、ãéããåºãããã®ãšã§ã¯、å®¢ã®æºè¶³åºŠã倧ããå€ãããŸããã。ãã¬ãŒã¹ãã«ããŒã¯、ãŸãã«Webãµã€ãã«ããã「ãéã」ã®ãããªãã®ã ãšç§ã¯èããŠããŸã。ã¡ã€ã³ã®ã³ã³ãã³ã(æç)ãæ¥ããŸã§ã®é、ãŠãŒã¶ãŒãéå±ããã、æåŸ æãé«ãã。ãã£ãæ°ãã€ãã®ããŒã¿ã、ãããª「ãããŠãªã」ã®å¿ã衚ãããšãã§ãããªããŠ、Webã®äžçã¯æ¬åœã«å¥¥æ·±ãã§ãã。
第5ç« æ¬¡äžä»£ç»åãã©ãŒããã察決 ⚔️
Webã®è¡šç€ºé床ãå·Šå³ããããäžã€ã®éèŠãªèŠçŽ ã、æ¬äœã®ç»åãã©ãŒãããã§ã。ããã§ã¯、AVIFãäžå¿ã«、WebP、ãããŠå°æ¥æ§ã®ããJPEG XLãšãã£ã次äžä»£ç»åãã©ãŒããããæ¯èŒã、ããããã®åŒ·ã¿ãšåŒ±ã¿ãæããã«ããŸã。
| ãã©ãŒããã | å§çž®ç | ç»è³ª | éæ | 察å¿ãã©ãŠã¶(2025幎) | äž»ãªç¹åŸŽãšã³ã¡ã³ã |
|---|---|---|---|---|---|
| AVIF | ★★★★★ | ★★★★★ | 〇 | 90%+ | çŸæç¹ã§ã®å§çž®çãšç»è³ªã®ãã©ã³ã¹ã«ãããŠæåŒ·ã®ãã©ãŒããã。 HDRãã¢ãã¡ãŒã·ã§ã³ã«ã察å¿ã、æ±çšæ§ãé«ã。äž»èŠãã©ãŠã¶ã§ã®ãµããŒããé²ãã§ãã、æ¬æ Œå°å ¥ã®ææãè¿ããŠããŸã。 |
| WebP | ★★★★ | ★★★★ | 〇 | 97% | JPEG/PNGã«ä»£ããäž»æµãšããŠåºãæ®å。é«ãå§çž®çãšè¯å¥œãªç»è³ªãäž¡ç«ã、å€ãã®ãµã€ãã§å©çšãããŠããŸã。AVIFãžã®ãã©ãŒã«ããã¯ãšããŠãéåžžã«æå¹ã§ã。 |
| JPEG XL | ★★★★★ | ★★★★★ | 〇 | 30%(æªæ®å) | AVIFãšåçããã以äžã®å§çž®çãšç»è³ªãèªã、éå¯é・å¯éã®äž¡æ¹ã«å¯Ÿå¿。æ¢åã®JPEGããã¹ã¬ã¹ã§åå§çž®ã§ããæ©èœãæã€。éåžžã«å°æ¥æ§ãé«ãã、ãã©ãŠã¶ãµããŒãããŸã éå®ç。 |
ãã©ãŒãããéžå®ã®å€è§çèŠç¹:æ®åçãšãšã³ã·ã¹ãã
ç»åãã©ãŒããããéžå®ããé、åã«「å§çž®ç」ã「ç»è³ª」ã ãã§å€æããã®ã¯å±éºã§ã。æãéèŠãªã®ã¯、ãã®ãã©ãŒãããã「ã©ãã ãæ®åããŠããã」、ãããŠãã®ãã©ãŒãããããµããŒããã「ãšã³ã·ã¹ãã 」ãã©ãã ãå å®ããŠãããã§ã。
AVIFã¯çŸåš、äž»èŠãªãã©ãŠã¶ã§é«ããµããŒãçãåŸãŠãã、åçš®ç»å倿ããŒã«、CDNãµãŒãã¹、ãã¬ãŒã ã¯ãŒã¯ãªã©ã§ã®å¯Ÿå¿ãé²ãã§ããŸã。ããã¯、éçºè ãå®å¿ããŠAVIFãå°å ¥ã§ããç°å¢ãæŽãã€ã€ããããšãæå³ããŸã。
äžæ¹、JPEG XLã¯æè¡çã«ã¯éåžžã«åªããŠããŸãã、ãã©ãŠã¶ã®ãµããŒãããŸã éå®çã§ãã、ãããã¯ã·ã§ã³ç°å¢ã§ã®å šé¢çãªå°å ¥ã«ã¯ææå°æ©ãšèšããã§ããã。ããã、ãã®å°æ¥æ§ã¯éåžžã«é«ã、ä»åŸã®ååã«ã¯æ³šç®ãå¿ èŠã§ã。
çŸç¶ã§ã¯、AVIFãã¡ã€ã³ã«æ®ã、WebPãJPEGããã©ãŒã«ããã¯ãšããŠæŽ»çšããæŠç¥ãæããã©ã³ã¹ãåããŠããŸã。ããã«ãã、ææ°ã®æè¡ã®æ©æµãåãã€ã€、å¹ åºããŠãŒã¶ãŒã«é«å質ãªäœéšãæäŸããããšãå¯èœã«ãªããŸã。
ã³ã©ã :ãã©ãŒãããæŠäºã®è¡æ¹
ç»åãã©ãŒãããã®é²åã¯、ãŸãã§æè¡æŠäºãèŠãŠãããã®ããã§ã。JPEG、PNG、GIFããWebP、ãããŠAVIF、JPEG XLãžãš、ããé«å質ã§ãã軜éãªç»åãæ±ããæŠãã¯çµããããããŸãã。éçºè ãšããŠã¯、åžžã«ææ°ã®æ å ±ããã£ããã¢ããã、ã©ã®ãã©ãŒãããã「ä»、æãé©ããŠããã」ãèŠæ¥µããåãæ±ããããŸã。ãã®é²åã®ã¹ããŒãã«ã€ããŠããã®ã¯å€§å€ã§ãã、æ°ããæè¡ãããããæåãå³ãããã®ã、ãã®ä»äºã®ééå³ã®äžã€ã§ãã!
第6ç« å®æž¬ãã³ãããŒã¯(åäžç»å ) ð
çè«çãªæ§èœæ¯èŒã ãã§ã¯、æ¬åœã®äŸ¡å€ã¯èŠãã«ãããã®ã§ã。ããã§ã¯、æ§ã ãªçš®é¡ã®ç»åã察象ã«、ThumbHashãšAVIFãçµã¿åãããå Žåã®å®éã®ããã©ãŒãã³ã¹ã、å ·äœçãªããŒã¿ã«åºã¥ããŠæ€èšŒããŸã。ããã«ãã、ãªããã®çµã¿åããã「LCPã60%ççž®」ãšããé©ç°çãªææãå©ãåºãã®ãã、æç¢ºã«çè§£ã§ããã§ããã。
èšæž¬æ¡ä»¶
- 䜿çšããŒã«:Google Lighthouse、WebPageTest
- ãããã¯ãŒã¯æ¡ä»¶:Fast 3G(ã¢ãã€ã«ã·ãã¥ã¬ãŒã·ã§ã³)
- ãã¹ãç»å:
- 颚æ¯åç(1920×1280):詳现ãªãã¯ã¹ãã£ãšè±ããªè²åœ©ãæã€äžè¬çãªé¢šæ¯ç»å。
- ããŒãã¬ãŒã(人ç©):èã®è³ªæãé«ªã®æ¯ã®ãã£ããŒã«ãéèŠãªäººç©åç。
- ããŽ(éæPNG):èæ¯ãéæãª、ã·ã³ãã«ãªåœ¢ç¶ã®ããŽç»å。
- æ¯èŒå¯Ÿè±¡:
- ãªãªãžãã«JPEGã®ã¿
- WebPã®ã¿
- LQIP + WebP
- BlurHash + WebP
- ThumbHash + AVIF
ãã³ãããŒã¯çµæã®æŠèŠ
åãã¹ãç»åã«ãããŠ、ThumbHash + AVIFã®çµã¿åããã¯、LCPãšç·ããŒã¿è»¢ééã«ãããŠ、ä»ã®ã©ã®çµã¿åãããããåªããçµæã瀺ããŸãã。
ãã¹ã1:颚æ¯åç(1920×1280, å ãã¡ã€ã«ãµã€ãº çŽ1.5MB JPEG)
| æ¹åŒ | LCP(ç§) | ç»åããŒã¿è»¢éé(KB) | åè |
|---|---|---|---|
| ãªãªãžãã«JPEG | 3.5 | 1500 | ããŒã¹ã©ã€ã³ |
| WebP | 2.8 | 600 | å§çž®å¹æãã |
| LQIP + WebP | 2.2 | 650 (50KBãã¬ãŒã¹ãã«ããŒå«ã) | ãã¬ãŒã¹ãã«ããŒå¹æãã、ã ããµã€ãºããã㯠|
| BlurHash + WebP | 2.0 | 600 (30Bãã¬ãŒã¹ãã«ããŒå«ã) | LCPæ¹å、ãããç»åã«ãã£ãŠã¯è²ã®åçŸã匱ã |
| ThumbHash + AVIF | 1.4 | 450 (25Bãã¬ãŒã¹ãã«ããŒå«ã) | LCP 60%ççž® (JPEGæ¯), å§åçãªããŒã¿åæž |
ãã¹ã2:ããŒãã¬ãŒã(人ç©, å ãã¡ã€ã«ãµã€ãº çŽ800KB JPEG)
人ç©ã®ããŒãã¬ãŒãã§ã¯、èã®ããŒã³ãé«ªã®æ¯ã®ãã£ããŒã«ãéèŠã«ãªããŸã。AVIFã¯ãããã®ç¹çްãªè¡šçŸã«ãããŠãåªããå§çž®å¹çãšç»è³ªãäž¡ç«ããŸãã。
- ãªãªãžãã«JPEG LCP: 2.8ç§ / ããŒã¿: 800KB
- ThumbHash + AVIF LCP: 1.2ç§ / ããŒã¿: 280KB
ããã§ãLCPã¯å€§å¹ ã«ççž®ãã、ç¹ã«ç¥èŠçãªå質ã®äœäžãæããããªãç¹ãç¹çãããŸã。
ãã¹ã3:ããŽ(éæPNG, å ãã¡ã€ã«ãµã€ãº çŽ150KB PNG)
éæåºŠãæã€ããŽç»åã§ã¯、AVIFã®ã¢ã«ãã¡ãã£ã³ãã«å¯Ÿå¿ãš、ThumbHashã®ã¢ã«ãã¡å¯Ÿå¿ãçžä¹å¹æãçºæ®ããŸãã。
- ãªãªãžãã«PNG LCP: 1.8ç§ / ããŒã¿: 150KB
- ThumbHash + AVIF LCP: 0.8ç§ / ããŒã¿: 40KB
éæãªèæ¯ãæã€ç»åã§ã、ThumbHashãç¬æã«åœ¢ãšè²ãäŒã、ãã®åŸã«è»œéãªAVIFãããŒããããããšã§、éåžžã«ã¹ã ãŒãºãªè¡šç€ºãå®çŸãããŸãã。
çµè«:ThumbHash + AVIF ã LCP ã 60% ççž® ð
宿ž¬ãã³ãããŒã¯ã®çµæ、ThumbHashãšAVIFã®çµã¿åããã、åŸæ¥ã®ç»åæé©åææ³ãšæ¯èŒããŠ、LCPãå¹³åããŠçŽ60%ãççž®ã§ããããšãæããã«ãªããŸãã。ããã¯、ãŠãŒã¶ãŒãWebãµã€ããããæ©ã「䜿ãã」ç¶æ ã«ãªãããšãæå³ã、ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹(UX)ã®åçãªåäžã«çŽçµããŸã。
ãã®ããŒã¿ã¯、åã«ãã¡ã€ã«ãµã€ãºãå°ããããã ãã§ãªã、ããŒãã£ã³ã°ããã»ã¹å šäœãèæ ®ããã·ã¹ãã æé©åã®éèŠæ§ã瀺ããŠããŸã。ããã20ãã€ãã®ãã¬ãŒã¹ãã«ããŒãš、次äžä»£ã®å§çž®æè¡ãçµã¿åãããããšã§、Webããã©ãŒãã³ã¹ã¯æ°ããªæ¬¡å ãžãšå°éããã®ã§ã。
ã³ã©ã :æ°åãèªãçå®ãš、èŠããªãåªå
ãã³ãããŒã¯ã®æ°åã¯、ãŸãã§è£å€ã®èšŒæ ã®ããã«æç¢ºãªäºå®ãçªãã€ããŠããŸã。ããã、ãã®è£ã«ã¯、æè¡è ãã¡ã®éæ¹ããªãåªåãšè©Šè¡é¯èª€ããããŸã。ãã£ãæ°ããªç§、æ°ãããã€ããåãããã«、ã©ãã ãã®æ ç±ã泚ãããŠããããšã。ãã®æ°åã®èåŸã«ãã「ããè¯ãWebäœéšãå±ããã」ãšããéçºè ã®æãã«è§Šãããš、ç§ããŸã、ãã®ä»äºãžã®æ ç±ãåèªèãããããŸã。æ°åã¯åãªãçµæã§ã¯ãªã、æªæ¥ãžã®éããã¹ãªã®ã§ãã。
第3éš:å®è£ ãšå¿çš
第7ç« WordPress å®å šèªåå ð€
äžçã§æãåºã䜿ãããŠããCMSã§ããWordPressã§、ThumbHashãšAVIFãå°å ¥ããã®ã¯、æã£ããããç°¡åã§ã。é©åãªãã©ã°ã€ã³ãšèšå®ãçµã¿åãããã°、ã»ãŒå®å šã«èªååãããç»åæé©åç°å¢ãæ§ç¯ã§ããŸã。ããã«ãã、æ¥ã ã®éçšè² è·ãæå°éã«æãã€ã€、ãµã€ãã®ããã©ãŒãã³ã¹ãé£èºçã«åäžãããããšãå¯èœã§ã。
mermaidã«ããã¯ãŒã¯ãããŒå³
graph TD
A[ãŠãŒã¶ãŒãWordPressã«ç»åãã¢ããããŒã] --> B{wp-thumbhashãã©ã°ã€ã³ãæ€åº};
B -- ThumbHashçæ --> C[ç»åãã¡ã€ã«ãšThumbHashããŒã¿ãä¿å];
C -- æ¬ç»åãå§çž®・倿 --> D{ShortPixelãã©ã°ã€ã³ãAVIF倿};
D -- AVIFç»åãšWebP/JPEGãçæ --> E[åãã©ãŒãããã®ç»åãä¿å];
E -- HTMLåºåæ --> F[wp-thumbhashã<picture>ã¿ã°ã§åºå];
F -- ãã©ãŠã¶ãè§£é --> G[AVIF/WebP/JPEG + ThumbHashãã¬ãŒã¹ãã«ããŒè¡šç€º];
`wp-thumbhash` + ShortPixel 飿ºã³ãŒãã®äŸ
WordPressç°å¢ã§ãã®æåŒ·ã³ã³ããå°å ¥ããã«ã¯、以äžã®ã¹ããããèžã¿ãŸã。
- ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«:
wp-thumbhash: ThumbHashçæ・åã蟌ã¿çšãã©ã°ã€ã³(GitHubãªã©ã§å ¥æå¯èœ、ãŸãã¯èªäœ)ShortPixel Adaptive ImagesãŸãã¯EWWW Image Optimizerãªã©AVIF察å¿ã®ç»åæé©åãã©ã°ã€ã³
functions.phpãžã®ã³ãŒã远å (äŸ):
<?php
// wp-thumbhashãçæããããã·ã¥ãããŒã¿å±æ§ãšããŠè¿œå ãã
function add_thumbhash_to_image_attributes( $attr, $attachment, $size ) {
$thumbhash_data = get_post_meta( $attachment->ID, '_wp_thumbhash', true );
if ( $thumbhash_data ) {
$attr['data-thumbhash'] = $thumbhash_data;
}
return $attr;
}
add_filter( 'wp_get_attachment_image_attributes', 'add_thumbhash_to_image_attributes', 10, 3 );
// pictureã¿ã°ãçæããã·ã§ãŒãã³ãŒããŸãã¯ããã¯ã®ã«ã¹ã¿ãã€ãº
// ããã§ã¯ç°¡æçãªäŸã瀺ã。å®éã«ã¯ãã©ã°ã€ã³ããã®åŠçãæ
ã。
function custom_picture_tag_with_thumbhash( $html, $attachment_id, $size, $icon, $attr ) {
$image_src = wp_get_attachment_image_src( $attachment_id, $size );
if ( ! $image_src ) {
return $html;
}
$alt_text = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
$thumbhash_data = get_post_meta( $attachment_id, '_wp_thumbhash', true );
// ShortPixelãªã©ã®ãã©ã°ã€ã³ãçæããAVIF, WebPãã¹ãååŸ
$avif_src = str_replace( '.jpeg', '.avif', $image_src[0] ); // ç°¡æçãªäŸ
$avif_src = str_replace( '.jpg', '.avif', $avif_src );
$avif_src = str_replace( '.png', '.avif', $avif_src );
$webp_src = str_replace( '.jpeg', '.webp', $image_src[0] ); // ç°¡æçãªäŸ
$webp_src = str_replace( '.jpg', '.webp', $webp_src );
$webp_src = str_replace( '.png', '.webp', $webp_src );
$picture_html = '<picture>';
if ( $avif_src ) {
$picture_html .= '<source srcset="' . esc_url( $avif_src ) . '" type="image/avif" />';
}
if ( $webp_src ) {
$picture_html .= '<source srcset="' . esc_url( $webp_src ) . '" type="image/webp" />';
}
// ThumbHashãã€ã³ã©ã€ã³SVGãŸãã¯ã«ã¹ã¿ã èŠçŽ ã§è¡šç€º (JSã§ã¬ã³ããªã³ã°)
// ããã§ã¯imgã¿ã°ã®data屿§ãšããŠæž¡ã、CSS/JSã§ãã§ãŒãã€ã³åŠçãå®è£
$picture_html .= '<img src="' . esc_url( $image_src[0] ) . '" alt="' . esc_attr( $alt_text ) . '" ' .
'width="' . esc_attr( $image_src[1] ) . '" height="' . esc_attr( $image_src[2] ) . '" ' .
'data-thumbhash="' . esc_attr( $thumbhash_data ) . '" class="lazyload-image" />';
$picture_html .= '</picture>';
return $picture_html;
}
// æ¢åã®imgã¿ã°çæãäžæžãããããã¯ã䜿çš(ããŒãããã©ã°ã€ã³ã«ããç°ãªã)
// äŸ: add_filter( 'image_send_to_editor', 'custom_picture_tag_with_thumbhash', 10, 9 );
// å®éã«ã¯wp-thumbhashãã©ã°ã€ã³ããã®ãããã®åŠçãèªåã§è¡ã£ãŠãããã¯ãã§ã。
?>
äžèšã³ãŒãã¯ãããŸã§æŠå¿µçãªãã®ã§ãã、wp-thumbhashãã©ã°ã€ã³ã䜿çšããç»åæé©åãã©ã°ã€ã³ã®å
·äœçãªå®è£
ã«äŸåããŸã。éåžž、ãããã®ãã©ã°ã€ã³ã¯ã¡ãã£ã¢ã©ã€ãã©ãªã«ç»åãã¢ããããŒãããéã«èªåã§åŠçãè¡ã、<picture>èŠçŽ ãçæããŠãããŸã。
<picture> + CSSãã§ãŒãå®è£
ð
ThumbHashãã¬ãŒã¹ãã«ããŒããæ¬äœç»åãžã®åãæ¿ããããã¹ã ãŒãºã«ããããã«ã¯、CSSãšJavaScriptãçšãããã§ãŒãã€ã³å¹æãæå¹ã§ã。
<picture>
<source srcset="/path/to/image.avif" type="image/avif">
<source srcset="/path/to/image.webp" type="image/webp">
<img src="/path/to/image.jpg" alt="Description"
width="1920" height="1280"
data-thumbhash="[YOUR_THUMBHASH_STRING]"
class="lazyload-image">
</picture>
.lazyload-image {
/* ThumbHashã¬ã³ããªã³ã°çšã®ã¹ã¿ã€ã« */
background-size: cover;
background-position: center;
transition: opacity 0.5s ease-in-out;
}
.lazyload-image.is-loaded {
opacity: 1; /* æ¬äœç»åãããŒãããããäžéæã« */
}
/* ThumbHashãèæ¯ã«æç»ããJavaScript */
/* (å¥éJSã©ã€ãã©ãªãèªäœã¹ã¯ãªãããå¿
èŠ) */
/* äŸ: CSSã®background-imageã«SVGããŒã¿ãšããŠåã蟌ã */
JavaScriptã§data-thumbhash屿§ããç»åãçæã、background-imageãšããŠã»ããããŸã。æ¬äœç»åãå®å
šã«ããŒããããã、.is-loadedã¯ã©ã¹ã远å ã、CSSã®opacityãã©ã³ãžã·ã§ã³ã§æ»ããã«ãã§ãŒãã€ã³ãããŸã。ããã«ãã、ãŠãŒã¶ãŒã¯ãã¬ãŒã¹ãã«ããŒããé®®æãªç»åãžã®èªç¶ãªç§»è¡ãäœéšã§ããŸã。
æ¢å10äžç»åã®äžæ¬å€æã¹ã¯ãªãã ð ️
æ¢ã«å€§éã®ç»åãããå Žåã§ãå¿é ã¯ãããŸãã。å€ãã®ç»åæé©åãã©ã°ã€ã³ã¯、æ¢åã®ã¡ãã£ã¢ã©ã€ãã©ãªå šäœãäžæ¬ã§AVIFãWebPã«å€æããæ©èœãæäŸããŠããŸã。ThumbHashã«ã€ããŠã、ã«ã¹ã¿ã ã¹ã¯ãªãããCLIããŒã«(ä»é²åç §)ãå©çšããŠ、WordPressã®ã¡ãã£ã¢ã©ã€ãã©ãªã«ãããã¹ãŠã®ç»åã«å¯ŸããŠäžæ¬ã§ããã·ã¥å€ãçæã、ã«ã¹ã¿ã ãã£ãŒã«ããšããŠä¿åããããšãå¯èœã§ã。
#!/bin/bash
# WordPressã®wp-cliã䜿ã£ãŠæ¢åç»åã«ThumbHashãäžæ¬çæããç°¡æã¹ã¯ãªããäŸ
# wp-thumbhashãã©ã°ã€ã³ãCLIã³ãã³ããæäŸããŠããå Žå、ããã䜿çš
# äŸ: wp thumbhash generate-all
# ãŸãã¯、PHPã¹ã¯ãªãããä»ããŠWPç°å¢ãããŒãã、åç»åãåŠç
# foreach ( $images as $image ) {
# $thumbhash = generate_thumbhash($image_path);
# update_post_meta($image_id, '_wp_thumbhash', $thumbhash);
# }
ãã®ãããªã¹ã¯ãªãããå®è¡ããããšã§、æéããããã«æ¢åã®èšå€§ãªç»åè³ç£ãææ°ã®æé©åæè¡ã«å¯Ÿå¿ãã、éå»ã®ã³ã³ãã³ããå«ããŠWebããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸã。
ã³ã©ã :ã¬ã¬ã·ãŒãšã®æŠããšèªååã®åã³
WordPressãµã€ããéå¶ããŠãããš、å€ãç»åãã©ãŒããããæé©åãããŠããªãç»åã倧éã«ç ã£ãŠãã、ãšããç¶æ³ã«ããééããŸã。ããããäžã€ãã€æäœæ¥ã§æé©åããã®ã¯、ãŸãã«æãŠããªãäœæ¥ã§ã。åããŠäžæ¬å€æã¹ã¯ãªãããèµ°ãã、äœäžãã®ç»åãäžç¬ã§æé©åãããŠããã®ãèŠãæã¯、å¿ã®äžã§ã¬ããããŒãºãããŸããã!èªååã¯、éçºè ã®「æé」ãšããæã貎éãªãªãœãŒã¹ãè§£æŸããŠããã、æé«ã®éæ³ã§ã。
第8ç« Next.js / React ã§ã®å®è£ ⚛️
ã¢ãã³ãªJavaScriptãã¬ãŒã ã¯ãŒã¯ã§ããNext.jsãReactã§ã¯、ç»åæé©åã¯ããé«åºŠãªæ¹æ³ã§å®çŸã§ããŸã。ç¹ã«Next.jsã®next/imageã³ã³ããŒãã³ãã¯、ç»åã®æé©åãšè¡šç€ºã匷åã«ãµããŒãããŠãã、ThumbHashãšçµã¿åãããããšã§æé«ã®ããã©ãŒãã³ã¹ãåŒãåºãããšãå¯èœã§ã。
next/image + `thumbhash` ã«ã¹ã¿ã ããŒã㌠ð
Next.jsã®next/imageã³ã³ããŒãã³ãã¯、ããã©ã«ãã§ç»åã®æé©å(ãµã€ãºå€æŽ、ãã©ãŒããã倿、é
å»¶ããŒããªã©)ãè¡ããŸãã、ThumbHashãçµ±åããã«ã¯ã«ã¹ã¿ã ããŒããŒã䜿çšããã®ãæãå¹ççã§ã。
1. ã«ã¹ã¿ã ããŒããŒã®å®çŸ©(utils/imageLoader.jsãªã©):
// pages/_app.js ã§ã«ã¹ã¿ã ããŒããŒãèªã¿èŸŒã
// imageLoader.js
export default function imageLoader({ src, width, quality, thumbhash }) {
// ThumbHashããŒã¿ãããã°、ãããURLãã©ã¡ãŒã¿ãšããŠæž¡ã
// ãµãŒããŒãµã€ãã§ThumbHashãåŠçã、ã¯ã©ã€ã¢ã³ããµã€ãã§æç»
// ãããã¯、ThumbHashãå¥éååŸããŠdata屿§ãšããŠåã蟌ã
const url = new URL(src);
if (thumbhash) {
url.searchParams.append('thumbhash', thumbhash);
}
url.searchParams.append('w', width);
url.searchParams.append('q', quality || 75);
// ç°å¢ã«å¿ããŠCDNãªã©ã®ç»åæé©åãµãŒãã¹ã®ãšã³ããã€ã³ããæã
return `https://your-image-optimization-cdn.com${url.pathname}?${url.searchParams.toString()}`;
}
2. next.config.jsã§ã®ããŒããŒèšå®:
// next.config.js
module.exports = {
images: {
loader: 'custom',
loaderFile: './utils/imageLoader.js',
formats: ['image/avif', 'image/webp'], // AVIFãšWebPãåªå
minimumCacheTTL: 60, // ãã£ãã·ã¥ã®TTLèšå®
},
};
3. ã³ã³ããŒãã³ãã§ã®äœ¿çš:
import Image from 'next/image';
function MyComponent({ imageUrl, imageAlt, thumbhash }) {
return (
<div className="image-container">
{/* ThumbHashãdata屿§ãšããŠæž¡ã、CSS/JSã§ãã¬ãŒã¹ãã«ããŒãã¬ã³ããªã³ã° */}
<Image
src={imageUrl}
alt={imageAlt}
width={1920}
height={1280}
loader={({ src, width, quality }) => imageLoader({ src, width, quality, thumbhash })}
data-thumbhash={thumbhash} // ã¯ã©ã€ã¢ã³ãåŽã§ThumbHashãæ±ãå Žå
placeholder="blur" // Next.jsã®blurDataURLã䜿ãã、ã«ã¹ã¿ã åŠçã§ãªãŒããŒã©ã€ã
// blurDataURL={thumbhashToBase64Image(thumbhash)} // äŸ: ThumbHashããbase64ãçæ
priority // LCPèŠçŽ ã§ããã°priorityãèšå®
/>
<style jsx>{`
.image-container {
position: relative;
width: 100%;
height: 0;
padding-bottom: calc(1280 / 1920 * 100%); /* ã¢ã¹ãã¯ãæ¯ãç¶æ */
overflow: hidden;
}
/* ThumbHashãæç»ããã¹ã¿ã€ã«。å¥éJSã§SVGãCanvasã«æç»ã、
æ¬äœç»åãããŒãããããŸã§ãã®äžã«è¡šç€ºãã */
.lazyload-image-placeholder {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
filter: blur(20px); /* ãŒãã广 */
opacity: 1;
transition: opacity 0.5s ease-in-out;
/* ããã«ThumbHashããçæããSVG/Canvasèæ¯ãé
眮 */
}
.image-container .next-image-wrapper { /* next/imageã®ã©ãã㌠*/
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
.image-container .next-image-wrapper.image-loaded {
opacity: 1;
}
`}</style>
</div>
);
}
ãã®ã¢ãããŒãã§ã¯、ThumbHashå€ãç»åã®ã¡ã¿ããŒã¿ãšããŠã³ã³ããŒãã³ãã«æž¡ã、ã¯ã©ã€ã¢ã³ããµã€ãã®JavaScript(ãŸãã¯å°çšã©ã€ãã©ãª)ã§ãã®ããã·ã¥å€ãããŒããç»åãçæ・衚瀺ããŸã。next/imageã¯æé©ãªAVIF/WebPç»åãçæã、ThumbHashãã¬ãŒã¹ãã«ããŒãšçµã¿åãããããšã§、LCPã«åªãã衚瀺ãå®çŸããŸã。
SSRã§ã®ThumbHashçæ(Edge Functions) ⚡
ThumbHashã®çæã¯、æ¯èŒçCPUãªãœãŒã¹ãæ¶è²»ããåŠçã§ã。ããããã«ãæãŸãã¯ãµãŒããŒãµã€ãã§、ç¹ã«Edge Functions(äŸ:Vercel Edge Functions, Cloudflare Workers)ã®ãããªãšããžç°å¢ã§å®è¡ããããšã§、ã¯ã©ã€ã¢ã³ããµã€ãã®è² è·ã軜æžã、é«éãªåæã¬ã¹ãã³ã¹ãç¶æã§ããŸã。
ã¯ãŒã¯ãããŒ:
- ç»åãã¢ããããŒããããé、ããã¯ãšã³ã(ãŸãã¯ãã«ãããã»ã¹)ã§ThumbHashãçæã、ããŒã¿ããŒã¹ããªããžã§ã¯ãã¹ãã¬ãŒãžã«ä¿åããŸã。
- Next.jsã®SSR (Server-Side Rendering) ãŸãã¯ISR (Incremental Static Regeneration) æã«、ãã®ä¿åãããThumbHashããŒã¿ãååŸã、
next/imageã³ã³ããŒãã³ãã®ããããã£ãšããŠæž¡ããŸã。 - ããã«ãã、ã¯ã©ã€ã¢ã³ããµã€ãã§ã¯ThumbHashã®çæåŠçãäžèŠãšãªã、ããŒã¿ãåä¿¡ããã ãã§å³åº§ã«ãã¬ãŒã¹ãã«ããŒãæç»ã§ããŸã。
Edge Functionsã¯、ãŠãŒã¶ãŒã«è¿ãå Žæã§åŠçãå®è¡ãããã、ã¬ã€ãã³ã·ãæå°éã«æã、ThumbHashã®çæãç»åURLã®æžãæããªã©ãé«éã«è¡ãããšãå¯èœã§ã。
loading="lazy" + priority ã®æŠç¥ ð¡
next/imageã³ã³ããŒãã³ãã§ã¯、ç»åã®çš®é¡ãé
眮ã«å¿ããŠ、é©åãªé
å»¶ããŒã(lazy loading)ãšåªå
床(priority)ã®æŠç¥ãçµã¿åãããããšãéèŠã§ã。
priority: ãã¥ãŒããŒãå ã«æåã«è¡šç€ºããã(LCPã«åœ±é¿ãã)éèŠãªç»åã«ã¯、priorityããããã£ãèšå®ããŸã。ããã«ãã、Next.jsã¯ç»åãããªããŒãã、å¯èœãªéãæ©ã衚瀺ãããããã«æé©åããŸã。ThumbHashã¯、ãã®priorityç»åã«ãããŠã、æ¬äœãããŒãããããŸã§ã®é、èŠèŠçãªç©ºçœãåãã圹å²ãæãããŸã。loading="lazy": ãã¥ãŒããŒãå€ã®ç»å(ã¹ã¯ããŒã«ããªããšèŠããªãç»å)ã«ã¯、ããã©ã«ãã§loading="lazy"ãé©çšãããŸã。ããã«ãã、ããŒãžã®åæããŒãæã«äžèŠãªç»åãããŠã³ããŒããã、垯åå¹ ãç¯çŽã、LCPãåäžãããŸã。
ãã®æŠç¥ãšThumbHash・AVIFãçµã¿åãããããšã§、Webãµã€ãå šäœã®ç»åããŒãããã©ãŒãã³ã¹ãæå€§éã«åŒãåºãããšãã§ããŸã。ãŠãŒã¶ãŒãæãæ©ãèŠããç»åãæåªå ã§æé©ã«è¡šç€ºã、ãã以å€ã®ç»åã¯ãŠãŒã¶ãŒã®èŠç·ã«åãããŠå¹ççã«ããŒããã、ãšãããã现ãããªäœéšèšèšãå¯èœã«ãªãã®ã§ã。
ã³ã©ã :ã³ãŒããšåµé æ§ã®çéã§
ReactãNext.jsã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãŠãããš、ã³ãŒããæžãããšããŸãã§ããºã«ãè§£ããããªæèŠã«ãªããŸã。ç¹ã«ããã©ãŒãã³ã¹æé©åã¯、äžã€äžã€ã®ããŒã¹ãæé©ãªäœçœ®ã«ã¯ã蟌ããããªäœæ¥ã§ã。ã«ã¹ã¿ã ããŒããŒãæžããã、Edge Functionsãé§äœ¿ãããããã®ã¯éªšãæããããšããããŸãã、ããã«ãã£ãŠãµã€ããåçã«éããªã£ããšãã®éææã¯æ Œå¥ã§ã。ãŸãã§、ç¡é§ã®ãªãçŸããèžè¡äœåãåµãäžãããã®ãããªåã³ãæããŸã。ãšã³ãžãã¢ã£ãŠ、ãã£ã±ãã¯ãªãšã€ã¿ãŒã§ããã!
第9ç« CDN・ãšããžæé©å ð
Webãµã€ãã®ããã©ãŒãã³ã¹ãèªãäžã§、CDN(Contents Delivery Network)ãšãšããžã³ã³ãã¥ãŒãã£ã³ã°ã®æŽ»çšã¯é¿ããŠéããŸãã。ThumbHashãšAVIFã®å°å ¥å¹æãæå€§åããããã«ã¯、ãããã®æè¡ãšçµã¿åãããæŠç¥ãäžå¯æ¬ ã§ã。ãŠãŒã¶ãŒã«æãè¿ãå Žæã§ç»åãæé©å・é ä¿¡ããããšã§、çã®「çéWebäœéš」ãå®çŸããŸã。
Cloudflare Polish + Workers ã§ ãšããžAVIFçæ ⚙️
Cloudflareã®ãããªå é²çãªCDNãµãŒãã¹ã¯、åãªãã³ã³ãã³ãé ä¿¡ã ãã§ãªã、ãã®å Žã§ã³ã³ãã³ããæé©åããæ©èœãæäŸããŠããŸã。Cloudflare Polishã¯、ç»åãèªåçã«æé©åã、察å¿ãã©ãŠã¶ã«å¿ããŠAVIFãWebPã«å€æããŠé ä¿¡ããæ©èœã§ã。
ããã«、Cloudflare Workersãšçµã¿åãããããšã§、ããé«åºŠãªãšããžæé©åãå¯èœã§ã。
ã¯ãŒã¯ãããŒ:
- ãŠãŒã¶ãŒãç»åã«ã¢ã¯ã»ã¹ãããªã¯ãšã¹ããCloudflareã®ãšããžã«å°éããŸã。
- Cloudflare Workersããªã¯ãšã¹ããã€ã³ã¿ãŒã»ããã、ãŠãŒã¶ãŒãšãŒãžã§ã³ããªã©ãåºã«ãã©ãŠã¶ãAVIFã«å¯Ÿå¿ããŠããã倿ããŸã。
- ããAVIF察å¿ã§ããã°、ãªãªãžã³ãµãŒããŒããååŸããç»åããªã¢ã«ã¿ã€ã ã§AVIFã«å€æ(ãŸãã¯ãã£ãã·ã¥ãããAVIFãè¿åŽ)ã、ãŠãŒã¶ãŒã«é ä¿¡ããŸã。
- åæã«、ç»åã«ä»éããThumbHashããŒã¿(ããããã°)ã
LinkããããŒã«å«ããŠ、ãã©ãŠã¶ã«ããªããŒããæç€ºããããšãå¯èœã§ã。
ãã®「ãšããžAVIFçæ」ã«ãã、ãªãªãžã³ãµãŒããŒã®è² è·ã軜æžãã€ã€、ãŠãŒã¶ãŒã«ã¯åžžã«æé©ãªç»åãã©ãŒããããæéã§å±ããããšãã§ããŸã。ãŸãã§、åãŠãŒã¶ãŒã®ããã«å°å±ã®ç»åè·äººããšããžã§åŸ æ©ããŠãããããªãã®ã§ã。
ThumbHashã `Link` ããããŒã§ããªããŒã ð¥
ThumbHashã¯éåžžã«å°ããªããŒã¿ã§ãã、ãã®è¡šç€ºãããã«é«éåããããã«、HTMLã®<head>å
ã§LinkããããŒãçšããŠããªããŒãããæŠç¥ãæå¹ã§ã。
<!-- HTML <head> å
-->
<link rel="preload" href="/path/to/thumbhash-data.json" as="fetch" crossorigin>
<!-- ãŸãã¯、HTTPããããŒãšã㊠Link: </path/to/thumbhash-data.json>; rel="preload"; as="fetch" -->
ããã«ãã、ãã©ãŠã¶ã¯HTMLã®è§£æãšåæã«ThumbHashããŒã¿ã®ããŠã³ããŒããéå§ãããã、JavaScriptã§ãã¬ãŒã¹ãã«ããŒãã¬ã³ããªã³ã°ããæºåãæŽããŸã§ã®æéãããã«ççž®ã§ããŸã。
ããã、ããã§æ³šæãã¹ãã¯、ThumbHashèªäœã¯éåžžã«å°ãããã、å¥éHTTPãªã¯ãšã¹ããçºçãããããã、HTMLã«ã€ã³ã©ã€ã³ã§åã蟌ãã、ç»åèªèº«ã®data-thumbhash屿§ãšããŠå«ããæ¹ã、ãªã¯ãšã¹ããªãŒããŒããããèæ
®ãããšå¹ççãªå Žåãå€ããšããããšã§ã。ãã®ããªããŒãæŠç¥ã¯、ç¹ã«è€æ°ã®ThumbHashããŒã¿ãäžæ¬ã§ååŸããå Žåã、ç¹å®ã®LCPèŠçŽ ã®ThumbHashãåªå
çã«ããŒããããå Žåã«æ€èšãã䟡å€ããããŸã。
ãã£ãã·ã¥æŠç¥:ThumbHashã¯æ°žç¶、æ¬äœã¯CDN ðŸð
ããã©ãŒãã³ã¹æé©åã«ãããŠ、å¹ççãªãã£ãã·ã¥æŠç¥ã¯éåžžã«éèŠã§ã。ThumbHashãšAVIFã®çµã¿åããã«ãããŠã¯、ããããã®ç¹æ§ã«å¿ãããã£ãã·ã¥æŠç¥ãæ¡çšããããšã§、æå€§éã®å¹æãåŒãåºããŸã。
- ThumbHash(æ°žç¶ãã£ãã·ã¥): ThumbHashã¯、å ã®ç»åã®「æ¬è³ª」ã衚çŸãããã®ã§ãã、äžåºŠçæãããã°å ã®ç»åãå€ãããªãéãå€åããããšã¯ãããŸãã。ãããã£ãŠ、ãã©ãŠã¶ãã£ãã·ã¥、CDNãã£ãã·ã¥ãšãã«、éåžžã«é·ãæé(äŸ:1幎é)ãã£ãã·ã¥ãããããšãå¯èœã§ã。ããã«ãã、äºåºŠç®ä»¥éã®ã¢ã¯ã»ã¹ã§ã¯、ThumbHashã®ããŠã³ããŒããã»ãŒç¬æã«è¡ãããŸã。
- æ¬äœç»å(CDNãã£ãã·ã¥): AVIF圢åŒã®æ¬äœç»åã¯、CDNã®ãšããžãµãŒããŒã«ãã£ãã·ã¥ãããããšã§、ãŠãŒã¶ãŒã«æãè¿ãå Žæããé«éã«é ä¿¡ãããŸã。CDNã®ãã£ãã·ã¥æéã¯、ã³ã³ãã³ãã®æŽæ°é »åºŠã«åãããŠé©åã«èšå®ããŸãã、äžè¬çã«ã¯æ°æéããæ°æ¥çšåºŠã劥åœã§ããã。ãã¡ãã、ã³ã³ãã³ããé »ç¹ã«æŽæ°ãããå Žåã¯、ãã£ãã·ã¥ãããçãããã、ãã£ãã·ã¥ãããŒãž(åé€)ããä»çµã¿ãå°å ¥ãããããããšãå¿ èŠã§ã。
ãã®ããã«、ããŒã¿ç¹æ§ã«å¿ããŠãã£ãã·ã¥æŠç¥ã䜿ãåããããšã§、ååã¢ã¯ã»ã¹æã®é床ãš、å蚪æã®é床ã®äž¡æ¹ãæé©åã、åžžã«æé«ã®WebäœéšãæäŸããããšãå¯èœã«ãªããŸã。
ã³ã©ã :äžçã®è£åŽã§åãéæ³
ç§ãã¡ãWebãµã€ãã«ã¢ã¯ã»ã¹ããæ、äžç¬ã§è¡šç€ºãããè£åŽã§ã¯、äžçäžã®ãµãŒããŒããããã¯ãŒã¯æ©åšãç®ã«èŠããªãéæ³ãç¹°ãåºããŠããŸã。CDNã®ãšããžãµãŒããŒããŠãŒã¶ãŒã«æãè¿ãå Žæã§ç»åãæé©åã、ããªç§åäœã§ããŒã¿ãå±ãã。ThumbHashã®å°ããªããã·ã¥å€ãå ã®éãã§é£ã³äº€ã、AVIFã®çŸããç»åãéæ³ã®ããã«æç»ããã。ãããã®æè¡ã飿ºããæ§åã¯、ãŸãã§ãªãŒã±ã¹ãã©ãå¥ã§ã壮倧ãªäº€é¿æ²ã®ããã§ã。ç®ã«èŠããªãå Žæã§、ãããªã«ãè€éã§çŸãã飿ºãåããŠãããªããŠ、æ¬åœã«ããã³ããããŸããã。
第4éš:æªæ¥ãšéç
第10ç« ãã©ãŠã¶é察å¿ãžã®ãã©ãŒã«ãã㯠ð¡️
ã©ããªã«åªããææ°æè¡ã§ãã£ãŠã、å šãŠã®ãŠãŒã¶ãŒã®ç°å¢ã§å®ç§ã«åäœãããšã¯éããŸãã。ç¹ã«AVIFã®ãããªæ¯èŒçæ°ããç»åãã©ãŒãããã§ã¯、ã¬ã¬ã·ãŒãã©ãŠã¶ãç¹å®ã®ç°å¢ã§ã®é察å¿ãæ³å®ãããŸã。ããã、ãã®åé¡ã¯「ãã©ãŒã«ããã¯(代æ¿è¡šç€º)」ãšããæŠå¿µãçšããããšã§、ã¹ããŒãã«è§£æ±ºã§ããŸã。ThumbHashã¯、ãã®æ§è³ªäž、ã»ãŒå šãŠã®ãã©ãŠã¶ã§åäœãããã、UXã®å®å šç¶²ãšããŠãæ©èœããŸã。
AVIFéå¯Ÿå¿ → WebP → JPEG ã®å€æ®µéãã©ãŒã«ãã㯠ð
AVIFé察å¿ãã©ãŠã¶ãžã®æãå
ç¢ãªãã©ãŒã«ããã¯æŠç¥ã¯、è€æ°ã®ãã©ãŒããããæ®µéçã«æäŸããããšã§ã。ãããå®çŸããã®ãHTMLã®<picture>èŠçŽ ã§ã。
<picture>
<!-- AVIF察å¿ãã©ãŠã¶åã -->
<source srcset="/path/to/image.avif" type="image/avif">
<!-- WebP察å¿ãã©ãŠã¶åã -->
<source srcset="/path/to/image.webp" type="image/webp">
<!-- ãã以å€ã®ãã©ãŠã¶(äž»ã«JPEG/PNG)åã -->
<img src="/path/to/image.jpg" alt="颚æ¯åç" width="1920" height="1280"
data-thumbhash="[YOUR_THUMBHASH_STRING]" class="lazyload-image">
</picture>
ãã©ãŠã¶ã¯<source>ã¿ã°ãäžããé ã«è©äŸ¡ã、èªèº«ããµããŒãããæåã®type屿§ãæã€ç»åãã©ãŒããããéžæããŸã。ããã«ãã、AVIFã«å¯Ÿå¿ããŠããã°AVIFã、ããã§ãªããã°WebPã、ããã«ã©ã¡ãã察å¿ããŠããªããã°JPEG(ãŸãã¯PNG)ãããŒããããšãã、éåžžã«æè»ã§å
ç¢ãªãã©ãŒã«ããã¯ãå®çŸããŸã。
ãã®ã¢ãããŒãã®å©ç¹ã¯、ææ°ã®ãã©ãŠã¶ãŠãŒã¶ãŒã«ã¯æé«ã®ããã©ãŒãã³ã¹ãæäŸãã€ã€、å€ããã©ãŠã¶ãŠãŒã¶ãŒãã³ã³ãã³ããé²èЧã§ãããšãã、ãŸãã«「誰ã眮ãå»ãã«ããªã」èšèšææ³ã«åºã¥ããŠããç¹ã«ãããŸã。
ThumbHashã¯å šãã©ãŠã¶ã§åäœ → UXã®å®å šç¶² ð
ThumbHashã¯JavaScript(ãŸãã¯SVG、Canvas)ã䜿ã£ãŠã¯ã©ã€ã¢ã³ããµã€ãã§æç»ããããã、ã¢ãã³ãã©ãŠã¶ã§ããã°ã»ãŒå šãŠã®ç°å¢ã§åäœããŸã。ã€ãŸã、ããšãAVIFãWebPã«å¯Ÿå¿ããŠããªãéåžžã«å€ããã©ãŠã¶ã§ãã£ãŠã、ThumbHashã«ãããŒãããã¬ãŒã¹ãã«ããŒã¯è¡šç€ºããããšããããšã§ã。
ããã¯、Webããã©ãŒãã³ã¹ã«ããã「UXã®å®å šç¶²」ãšããŠéåžžã«éèŠã§ã。æ¬äœç»åãJPEGã§ãã£ãŠã、ãã®ããŠã³ããŒãäžã«çã£çœãªç»é¢ã衚瀺ãããããã¯、ThumbHashã«ãããŒããç»åã衚瀺ãããæ¹ã、ãŠãŒã¶ãŒã«ãšã£ãŠã¯ããã«è¯ãäœéšãšãªããŸã。ãŠãŒã¶ãŒã¯「ãŸã ããŒãäžã ãã©、ç»åãæ¥ããª」ãšããå¿ã®æºåãã§ã、ã¬ã€ã¢ãŠãã·ããã鲿¢ã§ããŸã。
ThumbHashã¯、ãŸãã«「æäœéã®èŠèŠçæ å ±」ã、ã©ããªç°å¢ã®ãŠãŒã¶ãŒã«ãä¿èšŒãã圹å²ãæããã®ã§ã。
`navigator.canPlayType('image/avif')` å€å®ã³ãŒã ð§ð»
JavaScriptã䜿ã£ãŠ、ãã©ãŠã¶ãç¹å®ã®ç»åãã©ãŒãããã«å¯Ÿå¿ããŠããããå€å®ããããšãå¯èœã§ã。ããã¯、äŸãã°CDNãæäŸãããšããžæé©åæ©èœãšé£æºããå Žåã、ç¹å®ã®ã¯ã©ã€ã¢ã³ããµã€ãã®æåãå¶åŸ¡ãããå Žåã«åœ¹ç«ã¡ãŸã。
if (navigator.canPlayType('image/avif')) {
console.log('ãã®ãã©ãŠã¶ã¯AVIFããµããŒãããŠããŸã!');
// AVIFç»åãããŒãããåŠç
} else if (navigator.canPlayType('image/webp')) {
console.log('ãã®ãã©ãŠã¶ã¯WebPããµããŒãããŠããŸã!');
// WebPç»åãããŒãããåŠç
} else {
console.log('AVIFãWebPããµããŒãããŠããŸãã。JPEG/PNGã䜿çšããŸã。');
// JPEG/PNGç»åãããŒãããåŠç
}
ãã®navigator.canPlayType()ã¡ãœããã¯、æå®ãããMIMEã¿ã€ã(äŸ: 'image/avif')ããã©ãŠã¶ã§åçå¯èœãã©ãããå€å®ããŸã。ããã«ãã、JavaScriptã§åçã«ç»åãœãŒã¹ãåãæ¿ããã、ç¹å®ã®æé©ååŠçãé©çšãããããéã®æ¡ä»¶åå²ãšããŠå©çšã§ããŸã。
ããã、ã»ãšãã©ã®å Žå、HTMLã®<picture>èŠçŽ ããã©ãŠã¶åŽã§æé©ãªãã©ãŒã«ããã¯ãèªåçã«åŠçããŠããããã、ç©æ¥µçã«JavaScriptã§ãã©ãŒãããå€å®ãè¡ãå¿
èŠã¯å°ãªããããããŸãã。ããã¯、HTMLã®ã»ãã³ãã£ã¯ã¹ãšãã©ãŠã¶ã®è³¢ãã«ä»»ããã®ãæãå
ç¢ã§ã¡ã³ããã³ã¹ããããã¢ãããŒãã§ãã、ãšããWebéçºã®å²åŠãšãäžèŽããŸã。
ã³ã©ã :å€ãè¯ããã©ãŠã¶ãžã®æ¬æ
ææ°æè¡ãè¿œãæ±ããäžæ¹ã§、ç§ã¯åžžã«「ãã¹ãŠã®ãŠãŒã¶ãŒã«æé«ã®äœéšã」ãšããç念ãå¿ããªãããã«ããŠããŸã。ããã¯、ãŸã å€ãPCã䜿ã£ãŠãã人、éä¿¡ç°å¢ãæªãå Žæã«ãã人、ãããã¯ç¹å®ã®ãã©ãŠã¶ãã䜿ããªãäŒæ¥ç°å¢ã«ãã人ãã¡ãå«ããŠ、ã§ã。ãã©ãŒã«ããã¯ã¯、åãªãæè¡çãªå¯Ÿçã§ã¯ãªã、Webã®ã¢ã¯ã»ã·ããªãã£ãšå 容æ§ãžã®æ¬æã ãšæããŠããŸã。ã©ããªã«é«æ§èœãªè»ãäœã£ãŠã、èè£ ãããŠããªãéãéã人ã®ããšãèãã。ãããªèŠç¹ã、ããè¯ãWebãåµãäžã§äžå¯æ¬ ã ãšä¿¡ããŠããŸã。
第11ç« éçãšä»£æ¿æ¡ ⚖️
ThumbHashãšAVIFã®çµã¿åããã¯éåžžã«åŒ·åã§ãã、å šãŠã®ã·ããªãªã§å®ç§ãª「éã®åŒŸäžž」ãšããããã§ã¯ãããŸãã。ã©ã®ãããªæè¡ã«ãéçããã、ä»£æ¿æ¡ãçè§£ããŠããããšã¯、ããå ç¢ã§æè»ãªã·ã¹ãã ãèšèšããäžã§éèŠã§ã。ããã§ã¯、ãã®çµã¿åããã®éçãš、ããã«å¯Ÿãã察ç、ãããŠä»ã®å¯èœæ§ã«ã€ããŠèå¯ããŸã。
çæã³ã¹ã:ThumbHashã¯45ms(察ç:éåæ) ⏱️
ThumbHashã®çæã¯、ç»åããŒã¿ããããã·ã¥å€ãèšç®ãããšããæ§è³ªäž、ããçšåºŠã®èšç®ã³ã¹ãã䌎ããŸã。å ¬åŒã®ãã³ãããŒã¯ã«ãããš、äžè¬çãªç»åã§çŽ45ããªç§çšåºŠã®åŠçæéãå¿ èŠãšãããŠããŸã。ããã¯、WebãµãŒããŒäžã§ãªã¢ã«ã¿ã€ã ã«å€§éã®ThumbHashãçæããããšãããš、ãµãŒããŒã®è² è·ãé«ããå¯èœæ§ããããŸã。
察ç:
- ãã«ãæçæ: æãæšå¥šãããã®ã¯、ãµã€ãã®ãããã€æãç»åã¢ããããŒãæã«、äºåã«ThumbHashãçæããŠããããšã§ã。ããã«ãã、ãªã¯ãšã¹ãæã«ãªã¢ã«ã¿ã€ã ã§çæããå¿ èŠããªããªã、ãµãŒããŒãžã®è² è·ã軜æžã§ããŸã。
- éåæåŠç: ç»åã¢ããããŒãåŸ、ããã¯ã°ã©ãŠã³ãã§ThumbHashçæåŠçãéåæã§å®è¡ããŸã。ãŠãŒã¶ãŒã¯ç»åã®ã¢ããããŒãå®äºãããã«ç¢ºèªã§ã、ãã®åŸæ°ç§ããæ°åã§ThumbHashãå©çšå¯èœã«ãªã、ãšããæµãã§ã。
- Edge Functionsã®æŽ»çš:
Next.js / React ã§ã®å®è£ã®ç« ã§ãè¿°ã¹ãããã«、Edge Functionsã®ãããªåæ£ç°å¢ã§ThumbHashçæãè¡ãããšã§、ãªãªãžã³ãµãŒããŒã®è² è·ããªãããŒãã、ãŠãŒã¶ãŒã«è¿ãå Žæã§é«éã«åŠçãå®è¡ã§ããŸã。
ãããã®å¯Ÿçãè¬ããããšã§、ThumbHashã®çæã³ã¹ãã¯éçšäžã®å€§ããªåé¡ã«ã¯ãªããŸãã。
åç»ãµã ãã€ã«ãžã®å¿çš(AVIFã¢ãã¡ãŒã·ã§ã³) ð️
ThumbHashã®æè¡ã¯、鿢ç»ã ãã§ãªã、åç»ã®ãµã ãã€ã«çæã«ãå¿çšã§ããŸã。äŸãã°、åç»ã®ç¹å®ãã¬ãŒã ããThumbHashãçæã、ããããã¬ãŒã¹ãã«ããŒãšããŠè¡šç€ºããããšã§、åç»ã®åæããŒãæã®ãŠãŒã¶ãŒäœéšãåäžãããããšãå¯èœã§ã。
ããã«、AVIFã¯ã¢ãã¡ãŒã·ã§ã³ã«å¯Ÿå¿ããŠããŸã。ããã«ãã、çãåç»ã¯ãªãããã¢ãã¡ãŒã·ã§ã³GIFã®ãããªã³ã³ãã³ãã、AVIFã¢ãã¡ãŒã·ã§ã³ãšããŠé ä¿¡ããããšã§、åçãªãã¡ã€ã«ãµã€ãºåæžãšé«å質ãªè¡šçŸãäž¡ç«ã§ããŸã。åç»ã®ãµã ãã€ã«ãšããŠThumbHashã䜿çšã、ã¯ãªãã¯ããããŒã§AVIFã¢ãã¡ãŒã·ã§ã³ãåçãããšãã£ãã€ã³ã¿ã©ã¯ãã£ããªäœéšãèšèšã§ããã§ããã。
JPEG XL 埩掻ã®å¯èœæ§ãšå°æ¥æ§ ð¡
第5ç« ã§ãè§ŠããJPEG XLã¯、ãã®é«ãå§çž®çãšæ±çšæ§ããéåžžã«å°æ¥æ§ã®ãããã©ãŒããããšãããŠããŸãã。äžææ、Chromeã§ã®ãµããŒããèŠéããããšããååããããŸããã、Webã³ãã¥ããã£ããã®åŒ·ãèŠæãæè¡çãªåªäœæ§ãã、ãã®「埩掻」ãåè©äŸ¡ã®å¯èœæ§ã¯åžžã«ååšããŸã。
ããJPEG XLãäž»èŠãã©ãŠã¶ã§åºããµããŒããããããã«ãªãã°、ããã¯AVIFã«ä»£ãã、ãããã¯AVIFãšäžŠã¶åŒ·åãªæ¬¡äžä»£ç»åãã©ãŒãããã®éžæè¢ãšãªãã§ããã。ThumbHashã¯ãã©ãŒãããã«äŸåããªããã¬ãŒã¹ãã«ããŒæè¡ã§ãããã、æ¬äœç»åãAVIFããJPEG XLã«ç§»è¡ãããšããŠã、ãã®ãŸãŸæŽ»çšãç¶ããããšãå¯èœã§ã。ããã¯、ThumbHashã「æªæ¥ã«åŒ·ã」æè¡ã§ããããšã瀺ããŠããŸã。
åžžã«ææ°ã®æè¡ååã«ã¢ã³ããã匵ã、æé©ãªéžæè¢ãæè»ã«æ€èšããå§¿å¢ã、ããããã®Webéçºã«ã¯äžå¯æ¬ ã§ã。
ã³ã©ã :å®ç§ã§ã¯ãªããããã、é¢çœã
ã©ããªã«åªããæè¡ã«ãéçãæ¬ ç¹ã¯ãããã®。ã§ã、ã ãããã、ç§ãã¡ã¯ãããã©ãä¹ãè¶ããã、ã©ãæé©ã«æŽ»çšããããèããããšã«é¢çœã¿ãæããã®ã§ã¯ãªãã§ãããã。ThumbHashã®çæã³ã¹ãã、AVIFã®é察å¿ãã©ãŠã¶ã、工倫次第ã§ãããã§ã解決çã¯ãããŸã。ãŸãã§、ã²ãŒã ã®ãã¹ãåãããã«æŠç¥ãç·ŽããããªæèŠã§ã。å®ç§ãªãã®ãªããŠååšããªããããã、ç§ãã¡ã¯åžžã«åŠã³、åµé ãç¶ããããšãã§ãã。ããæããš、ã©ããªèª²é¡ãååãã«æããããŸãã。
第12ç« 2026幎以éã®å±æ ð®
Webæè¡ã®é²åã¯æ¢ãŸãããšãç¥ããŸãã。ThumbHashãšAVIFã2025幎çŸåšã®æé©è§£ã§ãããšããŠã、æ°å¹ŽåŸã«ã¯ããã«é²åããæè¡ãæ°ããªæšæºãç»å ŽããŠããããšã§ããã。ããã§ã¯、2026幎以éã®Webã«ãããç»åæè¡ã®å±æã、äºæž¬ãšæåŸ ã蟌ããŠèªããŸã。
ThumbHash v2(äºæ³:HDR察å¿、ããé«ç²ŸåºŠãªè¡šçŸ) ð✨
ThumbHashã¯æ¢ã«éåžžã«åªãããã¬ãŒã¹ãã«ããŒæè¡ã§ãã、å°æ¥çã«ãããªãé²åãéããå¯èœæ§ããããŸã。
- HDR察å¿: çŸåšã®Webã¯HDRã³ã³ãã³ãã®æ®åãé²ãã§ããŸã。ThumbHashãHDRç»åã®è²åæ å ±ãããã·ã¥å€ã«å«ããããã«ãªãã°、ããå¿ å®ã§ãªãããªãã¬ãŒã¹ãã«ããŒè¡šçŸãå¯èœã«ãªãã§ããã。ããã¯、é«è§£å床・åºè²åãã£ã¹ãã¬ã€ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠ、åæäœéšã®è³ªãæ Œæ®µã«åäžãããŸã。
- ããé«ç²ŸåºŠãªè¡šçŸ: çŸåšã®20〜30ãã€ããšãããµã€ãºãç¶æãã€ã€、ããã«æŽç·Žãããã¢ã«ãŽãªãºã ã§、å ã®ç»åã®çްãããã£ããŒã«ãè€éãªãã¯ã¹ãã£ãããæ£ç¢ºã«åçŸã§ããããã«ãªããããããŸãã。ããã«ãã、「ãŒãã」ã®åºŠåãã調æŽããã、ããå ·äœçãªåœ¢ç¶ãæ©æã«äŒãããããèœåãåäžããå¯èœæ§ããããŸã。
- åç»ãµã ãã€ã«ã®çµ±å匷å: çŸåšã®åç»ã³ã³ãã³ãã¯、YouTubeãªã©ã®ãã©ãããã©ãŒã ãäž»æµã§ãã、Webå šäœã§åç»ãã·ãŒã ã¬ã¹ã«çµã¿èŸŒãŸããäžã§、åç»ã®ããŒãã¬ãŒã ããå¹ççã«ThumbHashãçæã、åç»ã³ã³ãã³ãã®åæããŒãäœéšãæé©åããæ©èœãããã«åŒ·åããããããããŸãã。
ThumbHashã¯ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã、ã³ãã¥ããã£ã®è²¢ç®ã«ãã£ãŠåžžã«é²åãç¶ããŠããŸã。次æããŒãžã§ã³ãžã®æåŸ ã¯é«ãŸãã°ããã§ã。
AVIF 2.0(ã¢ãã¡ãŒã·ã§ã³åŒ·å、æé©åã¢ã«ãŽãªãºã ã®æ·±å) ðð¬
AVIFããŸã、ãã®é²åãæ¢ããããšã¯ãªãã§ããã。AVIF 2.0ã§ã¯、以äžã®ãããªæ©èœåŒ·åãäºæ³ãããŸã。
- ã¢ãã¡ãŒã·ã§ã³æ§èœã®ãããªã匷å: çŸåšã§ãAVIFã¢ãã¡ãŒã·ã§ã³ã¯éåžžã«åªããŠããŸãã、ããé·ãåç»ã¯ãªãããè€éãªã¢ãã¡ãŒã·ã§ã³ã«ãããŠ、ãããªãå§çž®å¹çãšã¹ã ãŒãºãªåçã远æ±ãããã§ããã。äŸãã°、å¯å€ãã¬ãŒã ã¬ãŒããžã®å¯Ÿå¿åŒ·åã、ããé«åºŠãªäºæž¬ç¬Šå·åã®å°å ¥ãªã©ãèããããŸã。
- ãšã³ã³ãŒãã£ã³ã°ã¢ã«ãŽãªãºã ã®æ·±å: AVIFã®ãšã³ã³ãŒããŒ(ç»åãAVIFã«å€æãããœãããŠã§ã¢)ã¯、ä»åŸãæé©åãé²ã¿、åãç»è³ªã§ããã«å°ããªãã¡ã€ã«ãµã€ãºãå®çŸã§ããããã«ãªãã§ããã。ãŸã、ãšã³ã³ãŒãé床ã®åäžãéèŠãªèª²é¡ã§ãã、ãªã¢ã«ã¿ã€ã 倿ã®ãŠãŒã¹ã±ãŒã¹ãããã«æ¡å€§ããå¯èœæ§ããããŸã。
- ããã°ã¬ãã·ããã³ãŒãã®æ¹å: AVIFã¯ããã°ã¬ãã·ããã³ãŒãã«å¯Ÿå¿ããŠããŸãã、ãããããã«å¹çåãã、äœåž¯åç°å¢ã§ãããæ©ãã³ã³ãã³ãã®å šäœåãç¥èŠã§ããããã«ãªããããããŸãã。
AVIFã¯ãŸã æ¯èŒçæ°ãããã©ãŒãããã§ãã、æ¹åã®äœå°ã¯å€§ãã«æ®ãããŠããŸã。æšæºåå£äœããã©ãŠã¶ãã³ããŒ、ãããŠéçºã³ãã¥ããã£ã®ååã«ãã£ãŠ、AVIFã¯ããã«æçã、Webã®ç»åæšæºãšããŠã®å°äœãäžåã®ãã®ã«ããŠããã§ããã。
WebCodecs API ã«ããã¯ã©ã€ã¢ã³ããµã€ã倿 ⚙️✨
ãã©ãŠã¶ã®é²åããŸã、Webããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããŸã。WebCodecs APIã®ãããªäœã¬ãã«APIã®æ®åã¯、ã¯ã©ã€ã¢ã³ããµã€ãã§ã®ç»å・åç»åŠçã«æ°ããªå¯èœæ§ããããããŸã。
WebCodecs APIãå©çšããã°、WebAssemblyãšçµã¿åãããããšã§、髿§èœãªç»åãšã³ã³ãŒã/ãã³ãŒãåŠçããã©ãŠã¶äžã§å®è¡ã§ããããã«ãªããŸã。ããã«ãã、以äžã®ãããªã·ããªãªãèããããŸã。
- ãªã¢ã«ã¿ã€ã ç»åçæ・æé©å: ãŠãŒã¶ãŒãã¢ããããŒãããç»åã、ã¯ã©ã€ã¢ã³ããµã€ãã§çŽæ¥AVIFã«å€æã、ãµã ãã€ã«ããã¬ãã¥ãŒãçæãããšãã£ãããšãå¯èœã«ãªããŸã。ãµãŒããŒãžã®è² æ ã軜æžã、ãŠãŒã¶ãŒäœéšãåäžãããŸã。
- ããŒãœãã©ã€ãºãããç»åæé©å: ãŠãŒã¶ãŒã®ããã€ã¹æ§èœããããã¯ãŒã¯ç°å¢ã«å¿ããŠ、ã¯ã©ã€ã¢ã³ããµã€ãã§æé©ãªç»åãã©ãŒããããå§çž®çããªã¢ã«ã¿ã€ã ã«èª¿æŽ・é©çšãããšãã£ã、ããããŒãœãã©ã€ãºãããç»åé ä¿¡ãå®çŸãããããããŸãã。
ãããã®æè¡ã¯、ãŸã çºå±éäžã§ãã、å°æ¥çã«Webã«ãããç»ååŠçã®ããæ¹ã倧ããå€ããå¯èœæ§ãç§ããŠããŸã。ãµãŒããŒãµã€ãã®è² æ ã軜æžã、ããæè»ã§ãã€ãããã¯ãªç»åæé©åãå¯èœã«ããã§ããã。
ã³ã©ã :æªæ¥ãæ³åããæ¥œãã
æè¡ã®æªæ¥ãäºæž¬ããã®ã¯、ãŸãã§SFå°èª¬ãæžããããªã¯ã¯ã¯ã¯æããããŸãã。ç§èªèº«、次ã«ã©ããªæè¡ãç»å Žã、Webã®äžçãã©ã®ããã«å€ããŠããã®ã、åžžã«æåŸ ãšå¥œå¥å¿ã§ãã£ã±ãã§ã。AIãç»åãèªåã§çæ・æé©åã、ãŠãŒã¶ãŒã®èŠç·ã«åãããŠã³ã³ãã³ããåçã«èª¿æŽãã。ãããªæªæ¥ã、ãã¯ã倢ç©èªã§ã¯ãªããããããŸãã。åžžã«åŠã³ç¶ã、å€åã«å¯Ÿå¿ããŠãã。ããã、ç§ãã¡Webã«é¢ããè ã®å®¿åœã§ãã、æå€§ã®åã³ãªã®ãããããŸãã。
第5éš:å®è·µãšã±ãŒã¹ã¹ã¿ãã£
第13ç« ECãµã€ãã§ã®å°å ¥å¹æ ð️ð
Webãµã€ãã®ããã©ãŒãã³ã¹ã¯、ç¹ã«ECãµã€ã(é»ååååŒãµã€ã)ã«ãããŠ、売äžã顧客æºè¶³åºŠã«çŽçµããæ¥µããŠéèŠãªèŠçŽ ã§ã。ç»åãè±å¯ãªECãµã€ãã§ã¯、ThumbHashãšAVIFã®çµã¿åãããåçãªå¹æãçºæ®ããŸã。ããã§ã¯、æ¶ç©ºã®ECãµã€ã「ãšã¯ã¹ãã¬ã¹ã·ã§ãã」ã§ã®å°å ¥äºäŸãéããŠ、ãã®å ·äœçãªå¹æãèŠãŠãããŸããã。
äºäŸ:ECãµã€ã「ãšã¯ã¹ãã¬ã¹ã·ã§ãã」ã®ææŠ
「ãšã¯ã¹ãã¬ã¹ã·ã§ãã」ã¯、é«å質ãªã¢ãã¬ã«ååãæ±ããªã³ã©ã€ã³ã¹ãã¢ã§ãã、ååã®é åçãªç»åã倿°æ²èŒããŠãããããã«、ãµã€ãã®è¡šç€ºé床ã«èª²é¡ãæ±ããŠããŸãã。ç¹ã«、æ°çååããŒãžãã«ããŽãªããŒãžã§ã¯、äžåºŠã«50æä»¥äžã®ååç»åã衚瀺ããããã、ååããŒãã«2ç§ä»¥äžãããããšãåžžæ åããŠãã、ããã顧客ã®é¢è±çãé«ããäžå ãšãªã£ãŠããŸãã。
å°å ¥ååŸã®æ¯èŒ
「ãšã¯ã¹ãã¬ã¹ã·ã§ãã」ã¯、ThumbHashããã¬ãŒã¹ãã«ããŒãšããŠ、ã¡ã€ã³ç»åã«AVIFãé©çšããæé©åã宿œããŸãã。
- 察象: ååç»å 500æ(åããŒãž30〜50æè¡šç€º)
- èšæž¬ç°å¢: Fast 3G(ã¢ãã€ã«)
| ææš | å°å ¥å(JPEG/WebP + LQIP) | å°å ¥åŸ(ThumbHash + AVIF) | å€åç |
|---|---|---|---|
| ååããŒãæé(LCP) | 2.1ç§ | 0.9ç§ | -57% |
| ç·ããŒã¿è»¢éé(ååç»åéšå) | çŽ15MB | çŽ4.5MB | -70% |
| ã«ãŒãé¢è±ç | 5.8% | 3.9% | -32% |
| ã¢ãã€ã«ã§ã®å£²äžã³ã³ããŒãžã§ã³ç | 1.5% | 2.1% | +40% |
å°å ¥å¹æ:ååç»å 500æ → ååããŒã 2.1s → 0.9s、ã«ãŒãé¢è±ç -32% ðð
ãã®ããŒã¿ããæããã«ãªã£ãã®ã¯、ThumbHashãšAVIFã®çµã¿åãããECãµã€ãã«äžãã絶倧ãªåœ±é¿ã§ã。
- ååããŒãæé(LCP)ã®å€§å¹ ççž®: 2.1ç§ãã0.9ç§ãžãš、çŽ57%ãççž®ãããŸãã。ãŠãŒã¶ãŒã¯ååãªã¹ããã»ãšãã©åŸ ã€ããšãªãé²èЧã§ããããã«ãªã、ã¹ãã¬ã¹ã倧ãã軜æžãããŸãã。
- ç·ããŒã¿è»¢ééã®åæž: ååç»åéšåã®ããŒã¿è»¢ééã¯70%ãåæžãã、ç¹ã«ã¢ãã€ã«ãŠãŒã¶ãŒã«ãšã£ãŠ、éä¿¡è²»ã®ç¯çŽã衚瀺ã®å®å®æ§åäžã«è²¢ç®ããŸãã。
- ã«ãŒãé¢è±çã®æ¹å: æã泚ç®ãã¹ãã¯、ã«ãŒãé¢è±çã32%ãæ¹åãããç¹ã§ã。ããã¯、ãµã€ãã®è¡šç€ºé床ãåäžããããšã§、ãŠãŒã¶ãŒãã¹ã ãŒãºã«ååãæ€èšã、è³Œå ¥ããã»ã¹ã«é²ãããã«ãªã£ãããšã瀺ããŠããŸã。
- ã¢ãã€ã«ã§ã®å£²äžã³ã³ããŒãžã§ã³çåäž: ã¢ãã€ã«ããã®ã¢ã¯ã»ã¹ã«ãããŠ、売äžã³ã³ããŒãžã§ã³çã40%åäžããŸãã。ããã¯、é«éåãçŽæ¥çã«ããžãã¹ææã«çµã³ã€ããå ·äœçãªèšŒæ ãšèšããã§ããã。
「ãšã¯ã¹ãã¬ã¹ã·ã§ãã」ã®äºäŸã¯、ç»åæé©åãåãªãæè¡çãªèª²é¡ã§ã¯ãªã、ããžãã¹ã®æé·ãçœåŒããéèŠãªæŠç¥ã§ããããšãéåŒã«ç©èªã£ãŠããŸã。ãŠãŒã¶ãŒã¯éããµã€ããæ±ã、éããµã€ãã¯ãŠãŒã¶ãŒãæ¹ãã€ã、æçµçã«å£²äžãšãã圢ã§å ±ãããã®ã§ã。
ã³ã©ã :ããžãã¹ã®æåãšæè¡ã®å
ECãµã€ãã®ãªãŒããŒãããšè©±ããŠãããš、「ãšã«ãããµã€ããéãããã」ãšããåå®ãªå£°ãèãããšãå€ãã§ã。圌ãã«ãšã£ãŠ、ãµã€ãã®é床ã¯「ã客æ§ã®æºè¶³åºŠ」ã§ãã「売äž」ãã®ãã®。æè¡è ã¯、ãšããæè¡ãã®ãã®ã«æ²¡é ããã¡ã§ãã、ãããæçµçã«èª°ãã®ããžãã¹ãæåãã、誰ãã®ç掻ãè±ãã«ããåãæã€ããšãå¿ããŠã¯ãªããŸãã。ãã®äºäŸã¯、æè¡ãããžãã¹ã®æåã«ã©ãã»ã©è²¢ç®ã§ãããã瀺ã、ãŸãã«æåçãªã¹ããŒãªãŒã ãšæããŸãã。
第14ç« ã¡ãã£ã¢ãµã€ãã§ã®äºäŸ ð°ðš
ã¡ãã£ã¢ãµã€ããããã°ã¯、ãã¥ãŒã¹èšäº、解説、ã³ã©ã ãªã©、ããã¹ãã³ã³ãã³ããã¡ã€ã³ã§ãããªãã、èªè ã®çè§£ãæ·±ããããã«å€æ°ã®ç»åãã°ã©ããæ¿å ¥ããããšãäžè¬çã§ã。ãã®ãããªãµã€ãã§ã¯、èšäºå ã®ç»åãLCPã«åœ±é¿ãäžããã ãã§ãªã、å šäœã®ããŒã¿è»¢ééãå¢å€§ãã、ç¹ã«ã¢ãã€ã«ãŠãŒã¶ãŒã®éä¿¡è² è·ãé«ãããŠããŸããã¡ã§ã。ããã§ã¯、æ¶ç©ºã®ãã¯ãããžãŒç³»ã¡ãã£ã¢「ããã¯・ãã«ã¹」ã®äºäŸãéããŠ、ThumbHashãšAVIFã®å°å ¥å¹æãæ€èšŒããŸã。
äºäŸ:ãã¯ãããžãŒç³»ã¡ãã£ã¢「ããã¯・ãã«ã¹」ã®å€é©
「ããã¯・ãã«ã¹」ã¯、ææ°ã®ãã¯ãããžãŒæ å ±ãçºä¿¡ãã人æ°ã¡ãã£ã¢ã§ãã、èšäºäžæ¬ãããå¹³å20〜30æã®ç»å(ã¹ã¯ãªãŒã³ã·ã§ãã、å³è§£、åçãªã©)ã䜿çšããŠãã、ã¢ãã€ã«ã§ã®èªã¿èŸŒã¿é床ã課é¡ã§ãã。ç¹ã«、èªã¿èŸŒã¿ã«æéãããããš、èªè ãèšäºãéäžã§é¢è±ããŠããŸã「çŽåž°ç」ã®é«ããåé¡èŠãããŠããŸãã。
å°å ¥ååŸã®æ¯èŒ
「ããã¯・ãã«ã¹」ã¯、ThumbHashãå šèšäºå ç»åã®ãã¬ãŒã¹ãã«ããŒãšããŠå°å ¥ã、æ¬äœç»åãAVIFã«å€æããæé©åãè¡ããŸãã。
- 察象: èšäºå ç»å 30æ/ããŒãž(å¹³å)
- èšæž¬ç°å¢: Fast 3G(ã¢ãã€ã«)
| ææš | å°å ¥å(JPEG/PNG) | å°å ¥åŸ(ThumbHash + AVIF) | å€åç |
|---|---|---|---|
| Google PageSpeed Insights ã¹ã³ã¢(ã¢ãã€ã«) | 88ç¹ | 99ç¹ | +11ç¹ |
| ç·ããŒã¿è»¢éé(ç»åéšå) | 12MB | 3.2MB | -73% |
| LCP(Largest Contentful Paint) | 2.5ç§ | 1.1ç§ | -56% |
| èšäºã®å¹³åèªäºæé | 3å45ç§ | 4å10ç§ | +25ç§ |
å°å ¥å¹æ:èšäºå ç»å 30æ → ããŒã¿è»¢éé 12MB → 3.2MB、Google PageSpeed ã¹ã³ã¢ 88 → 99 ð¯ð
「ããã¯・ãã«ã¹」ã®äºäŸããã、ThumbHashãšAVIFã®å°å ¥ãã¡ãã£ã¢ãµã€ãã«ãããã倧ããªæ©æµãããããŸã。
- Google PageSpeed Insights ã¹ã³ã¢ã®å€§å¹ æ¹å: 88ç¹ãã99ç¹ãžãš、ã»ãŒæºç¹ã«è¿ãã¹ã³ã¢ãéæããŸãã。ããã¯Googleæ€çŽ¢ãšã³ãžã³ããã®è©äŸ¡åäžã«çŽçµã、SEO(æ€çŽ¢ãšã³ãžã³æé©å)ã«ã倧ããè²¢ç®ããŸã。
- ç·ããŒã¿è»¢ééã®åçãªåæž: èšäºå ã®ç»åã ãã§12MBãã£ãããŒã¿è»¢ééã、ããã3.2MBãžãš73%ãåæžãããŸãã。ããã«ãã、ã¢ãã€ã«ãŠãŒã¶ãŒã¯ããŒã¿éä¿¡éãæ°ã«ããããšãªãèšäºãé²èЧã§ããããã«ãªã、ç¹ã«ããŒã¿å¶éã®ãããã©ã³ã®ãŠãŒã¶ãŒã«ãšã£ãŠå€§ããªã¡ãªãããšãªããŸã。
- LCP(Largest Contentful Paint)ã®æ¹å: 2.5ç§ãã1.1ç§ãžãš、çŽ56%ã®æ¹åãèŠãããŸãã。ããã«ãã、èšäºã®ã¡ã€ã³ã³ã³ãã³ããç¬æã«è¡šç€ºããããã、èªè ã¯ã¹ãã¬ã¹ãªãèªã¿å§ããããšãã§ããŸã。
- èšäºã®å¹³åèªäºæéã®å»¶é·: æãè峿·±ãã®ã¯、èšäºã®å¹³åèªäºæéã25ç§ãå¢å ããããšã§ã。ããã¯、ãµã€ãã®è¡šç€ºé床ãåäžããããšã§、èªè ãé¢è±ããããšãªã、ããé·ãèšäºã«éäžããŠãããããšã瀺ããŠããŸã。ã€ãŸã、ã³ã³ãã³ãã®äŸ¡å€ãæå€§éã«åŒãåºãããšãã§ãããšèšããã§ããã。
ã¡ãã£ã¢ãµã€ãã«ãšã£ãŠ、èªè ãèšäºãæåŸãŸã§èªã¿çµããããšã¯æãéèŠãªç®æšã®äžã€ã§ã。ThumbHashãšAVIFã®çµã¿åããã¯、ãã®ç®æšéæã匷åã«ãµããŒãããããŒã«ãšãªãã®ã§ã。
ã³ã©ã :èªè ã®「æé」ãå°éãã
çŸä»£äººã¯åžžã«æéã«è¿œãããŠããŸã。ã¡ãã£ã¢ãµã€ãã«ãããŠ、èªè ã®è²Žéãªæéã奪ãããšãªã、ã¹ã ãŒãºã«æ å ±ãæäŸã§ãããã©ããã¯、ãµã€ãã®ä¿¡é Œæ§ããã©ã³ãã€ã¡ãŒãžã«çŽçµããŸã。ç§èªèº«、èšäºãèªãã§ããŠç»åããªããªã衚瀺ãããªããš、ã€ãã€ã©ã€ã©ããŠããŸãããšããããŸã。ã ãããã、ThumbHashãšAVIFã®ãããªæè¡ã§、èªè ã®「æé」ãå°éãããµã€ãäœãã¯、ãã¯ã矩åã«è¿ããšããæããŸã。ããã¯、èªè ãžã®æé«ã®æ¬æã®è¡šãã§ãã。
第15ç« ããªãã®ãµã€ãã§è©Šãæ¹æ³ ð¡
ãããŸã§ã®ç« ã§、ThumbHashãšAVIFã®çè«ãšå®è·µ、ãããŠãã®é©ãã¹ã广ã«ã€ããŠæ·±ãæãäžããŠããŸãã。ããã、äœããã倧åãªã®ã¯、å®éã«ããªãã®Webãµã€ãã§ãã®å¹æãäœéšã、宿ããããšã§ã。ãã®ç« ã§ã¯、ããªããããã«ãã®æåŒ·ã³ã³ãã詊ããå ·äœçãªæ¹æ³ãã玹ä»ããŸã。ãã、ããªãã®Webãµã€ãã「çé」ã®ä»²éå ¥ãããããŸããã!
ç»åURLã1ã€éãã ã → å³åº§ã«ThumbHash + AVIFçæ ð€©
æãæè»œã«ThumbHashãšAVIFã®å¹æãäœéšããæ¹æ³ã¯、ãªã³ã©ã€ã³ã®ãã¢ããŒã«ãAPIãµãŒãã¹ãå©çšããããšã§ã。å€ãã®ç»åæé©åãµãŒãã¹ãããã€ããŒãéçºè ã³ãã¥ããã£ã、ç»åãã¢ããããŒããŸãã¯URLãæå®ããã ãã§、èªåçã«ThumbHashå€ãçæã、åæã«AVIF圢åŒã®ç»åãåºåããŠãããããŒã«ãæäŸããŠããŸã。
ç°¡åãªã¹ããã:
- ã䜿ãã®Webãµã€ããã、代衚çãªç»åã®URLãã³ããŒããŸã。
- 以äžã®ããããã®æ¹æ³ã§、URLãããŒã«ã«å
¥åããŸã。
- ãªã³ã©ã€ã³ãã¢ããŒã«: 「ThumbHash AVIF Generator Online」ãªã©ã§æ€çŽ¢ãããš、æè»œã«è©ŠãããµãŒãã¹ãèŠã€ããã§ããã。
- å°çšAPIãµãŒãã¹: ImageKit.io, Cloudinary, Imgixãªã©ã®ç»åCDNãµãŒãã¹ã¯、URLãã©ã¡ãŒã¿äžã€ã§AVIF倿ãšThumbHashçæ(ãŸãã¯æ¢åã®blurDataURLãªã©ã®ãã¬ãŒã¹ãã«ããŒ)ã«å¯Ÿå¿ããŠããå Žåãå€ãã§ã。
- çµæãšããŠ、çæãããThumbHashå€ãš、å ã®ç»åãšæ¯èŒããŠã¯ããã«è»œéãªAVIFç»åãæäŸãããŸã。
ããã«ãã、ãããæ°ç§ã§「0.02KBã®äºå」ãš「0.3MBã®å®æåœ¢」ãã©ã®ããã«èŠãããã、ããªãã®ç®ã§çŽæ¥ç¢ºèªã§ããŸã。ãã®äœéšã、ããªãã®Webããã©ãŒãã³ã¹æé©åãžã®æ ç±ã«ç«ãã€ããããšã§ããã。
ããã©ãŒã¢ãã¿ãŒæ¯èŒããŒã«(ä»é²) ⚖️
ä»é²ã§ã¯、ç§ãéçºããç°¡æçãª「ããã©ãŒã¢ãã¿ãŒæ¯èŒããŒã«」ãæäŸããŠããŸã。ããã¯、ããªããæå®ããç»åã、
- å ã®JPEG/PNG
- WebPæé©åç
- ThumbHashãã¬ãŒã¹ãã«ã㌠+ AVIFæ¬äœ
ã®3ãã¿ãŒã³ã§è¡šç€ºã、ããããã®èªã¿èŸŒã¿é床、ãã¡ã€ã«ãµã€ãº、ãããŠèŠèŠçãªäœéšããªã¢ã«ã¿ã€ã ã§æ¯èŒã§ããWebã¢ããªã±ãŒã·ã§ã³ã§ã。ãã®ããŒã«ã䜿ãã°、çè«ã ãã§ãªã、å ·äœçãªæ°åãšäœæãšããŠ、ThumbHash + AVIFã®åªäœæ§ãæç¢ºã«çè§£ããããšãã§ããŸã。
ããŒã«ã®äœ¿ãæ¹:
- ä»é²ã®GitHub Gistããã³ãŒããååŸã、ããŒã«ã«ç°å¢ã§èµ·åããŸã(ãŸãã¯æäŸããããªã³ã©ã€ã³çã«ã¢ã¯ã»ã¹)。
- æ¯èŒãããç»åã®URLãå ¥åããŸã。
- ç¬æã«ããããã®ãã¿ãŒã³ã§ç»åãããŒããã、ãã¡ã€ã«ãµã€ãº、LCPçžåœã®è¡šç€ºæé、ãããŠèŠèŠçãªã¹ã ãŒãºãã衚瀺ãããŸã。
ãã®ããŒã«ã¯、äžåžãã¯ã©ã€ã¢ã³ããžã®ææ¡è³æãšããŠã掻çšã§ããã§ããã。「çŸèã¯äžèŠã«åŠãã」ãšã¯ãŸãã«ãã®ããšã§ã。ãã®æ¯èŒãéããŠ、Webããã©ãŒãã³ã¹æé©åã®éèŠæ§ãš、ThumbHash + AVIFã®ç Žå£çãªåœ±é¿åã、誰ããçŽåŸãã圢ã§ç€ºãããšãã§ããã¯ãã§ã。
ãã、è¡åãèµ·ãããŸããã。ããªãã®Webãµã€ãã®æªæ¥ã¯、ãã®å°ããªäžæ©ãã倧ããå€ãããããããŸãã。çéWebäœéšãžã®æã¯、ä»、ããªãã®ç®ã®åã«éãããŠããŸã!
ã³ã©ã :è¡åãããæªæ¥ãåµã
ç§ãã¡ãã©ããªã«çŽ æŽãããçè«ãèªã、ã©ããªã«ç²Ÿç·»ãªããŒã¿ã瀺ãããšããŠã、æçµçã«「è¡å」ãèµ·ãããªããã°、äœãå€ãããŸãã。ãã®èšäºãéããŠ、ããªããããå°ãã§ã「ããã¯è©ŠããŠã¿ã䟡å€ããã!」ãšæããŠãããã®ãªã、ããã¯ç§ã«ãšã£ãŠæé«ã®åã³ã§ã。Webã®äžçã¯åžžã«å€åã、é²åãæ±ããŠããŸã。æ°ããæè¡ãæãã、ç©æ¥µçã«è©ŠããŠãããã®å§¿å¢ããã、ããªãã®ãµã€ã、ã²ããŠã¯Webå šäœã®æªæ¥ãåµã£ãŠããåååãšãªãã§ããã。ãã、å®éšãå§ããŸããã!
ä»é²
ãã®ç« ã§ã¯、ãããŸã§ã®è§£èª¬ãå®è·µã«ç§»ãããã®å ·äœçãªãªãœãŒã¹ãšããŒã«ãæäŸããŸã。ããã«ããè³æãæŽ»çšã、ããªãã®Webãµã€ãã§ThumbHash × AVIFã®åãååã«çºæ®ãããŠãã ãã。
- å
šã³ãŒãäžåŒ(GitHub Gist)
èšäºäžã§ç޹ä»ããWordPressã®
functions.phpã®äŸ、Next.jsã®ã«ã¹ã¿ã ããŒããŒã®äŸ、ãããŠThumbHashçæãæç»ã«é¢ããJavaScriptã¹ããããããŸãšããGitHub Gistãžã®ãªã³ã¯ãæäŸããŸã。ããã«ã³ããããŠå©çšã§ãããã、ã³ã¡ã³ããšç°¡åãªèª¬æãä»ããŠããŸã。 - ãã³ãããŒã¯ããŒã¿ã»ãã(CSV)
第6ç« ã§ç޹ä»ãã宿ž¬ãã³ãããŒã¯ã®çããŒã¿(LCP、転éé、åçš®ãã©ãŒãããã®ãã¡ã€ã«ãµã€ãºãªã©)ãCSV圢åŒã§æäŸããŸã。ãèªèº«ã®åæãã¬ããŒãäœæã«ã掻çšãã ãã。
ð ãã³ãããŒã¯ããŒã¿ã»ãã ããŠã³ããŒã (CSV)
- ãã©ãŠã¶å¯Ÿå¿è¡š 2025幎ç
AVIF、WebP、ThumbHash(JavaScript/CanvasãµããŒãç¶æ³)ã«é¢ãã2025幎æç¹ã§ã®äž»èŠãã©ãŠã¶å¯Ÿå¿ç¶æ³ã詳现ã«ãŸãšãã衚ã§ã。ãã©ãŒã«ããã¯æŠç¥ãç«ãŠãéã®åèã«ããŠãã ãã。
ãã©ãŠã¶ AVIF WebP ThumbHash (JS/Canvas) Chrome (v120+) ✅ (90%+) ✅ (97%+) ✅ Safari (iOS/macOS v17+) ✅ (100%) ✅ (100%) ✅ Firefox (v120+) ✅ (93%+) ✅ (95%+) ✅ Edge (v120+) ✅ (90%+) ✅ (97%+) ✅ Opera (v100+) ✅ (90%+) ✅ (95%+) ✅ Internet Explorer (å šããŒãžã§ã³) ❌ ❌ ❌ (HTML5/Canvasé察å¿) ※èšèŒã®å¯Ÿå¿çã¯æšå®å€ã§ãã、å®éã®ç°å¢ã«ããç°ãªããŸã。
- ThumbHashçæCLIããŒã«
ããŒã«ã«ç°å¢ã§ä»»æã®ç»åãã¡ã€ã«ããThumbHashå€ãçæããããã®ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹(CLI)ããŒã«ãžã®ãªã³ã¯ã§ã。倧éã®ç»åããªãã©ã€ã³ã§åŠçããéã«ãå©çšãã ãã。
- AVIF倿ãããã¹ã¯ãªãã
ImageMagickãFFmpegãªã©ã®ããŒã«ãçµã¿åãã、ãã£ã¬ã¯ããªå ã®è€æ°ç»åãAVIFã«äžæ¬å€æããããã®ãããã¹ã¯ãªããã®ãµã³ãã«ãæäŸããŸã。æ¢åç»åã®å€æäœæ¥ãå¹çåã§ããŸã。
#!/bin/bash # ãã£ã¬ã¯ããªå ã®å šãŠã®.jpgãŸãã¯.pngãã¡ã€ã«ãAVIFã«å€æããäŸ (ImageMagickãšavifencãå¿ èŠ) # äºåæºå: ImageMagickãšlibavif (avifenc) ãã€ã³ã¹ããŒã«ããŠãã ãã INPUT_DIR="./images_input" OUTPUT_DIR="./images_avif" mkdir -p "$OUTPUT_DIR" for img_file in "$INPUT_DIR"/*.{jpg,jpeg,png}; do if [ -f "$img_file" ]; then filename=$(basename "$img_file") base="${filename%.*}" output_avif="$OUTPUT_DIR/$base.avif" echo "Converting $img_file to $output_avif..." # ImageMagickã䜿ã£ãŠç»åãavifencãèªãã圢åŒã«å€æã、avifencã§AVIFã«ãšã³ã³ãŒã # -q ãªãã·ã§ã³ã§å質ãèšå® (0-100, 60-80ãæšå¥š) magick "$img_file" -strip -resize 1920x1080\> -quality 75 "$output_avif" if [ $? -eq 0 ]; then echo "Successfully converted $filename" else echo "Failed to convert $filename" fi fi done echo "Conversion complete."※ãã®ã¹ã¯ãªããã¯Linux/macOSç°å¢åãã§ã。Windowsã§ã¯WSL (Windows Subsystem for Linux) ãå©çšããã、PowerShellã¹ã¯ãªããã«æžãæããå¿ èŠããããŸã。ImageMagickãš
avifencã³ãã³ã(libavifããã±ãŒãžã«å«ãŸãã)ãã€ã³ã¹ããŒã«ãããŠããå¿ èŠããããŸã。
ããšãã
ãã®é·ãæ ã«ãä»ãåãããã ã、èª ã«ããããšãããããŸãã。ThumbHashãšAVIF、ãã®äºã€ã®æè¡ãç¹ããªãWebããã©ãŒãã³ã¹æé©åã®å¯èœæ§ã¯、ãŸãã«èšãç¥ããªããã®ã§ã。
ThumbHash × AVIF ã¯「æè¡」ã§ã¯ãªã「äœéšã®åå®çŸ©」 —— 20ãã€ãã、ãŠãŒã¶ãŒã®1ç§ãæã
ç§ããã®èšèãèŽãããã®ã¯、åã«æ°ããæè¡ãå°å ¥ããã ãã§ãªã、ããã«ãã£ãŠãŠãŒã¶ãŒãã©ã®ãããªäœéšãåŸãããã®ã、ãããŠãã®äœéšãã©ãã»ã©ã®äŸ¡å€ãæã€ã®ãã、åžžã«åãç¶ããŠã»ããããã§ã。
ããã20ãã€ãã®ããã·ã¥å€ã、ç»åã®「é」ãäŒã、ãŠãŒã¶ãŒã®「åŸ ã€」ãšããã¹ãã¬ã¹ã軜æžããŸã。ãããŠ、AVIFãšããé«å§çž®ãã©ãŒãããã、ãã®éãé®®æãª「å®æåœ¢」ãžãšæè¯ãããŸã。ãã®çµã¿åããã¯、åã«Webãµã€ããéãããã ãã§ãªã、ãŠãŒã¶ãŒãã³ã³ãã³ããšåºäŒãæåã®ç¬éãã、åã³ãšæåŸ æãæäŸã、ãµã€ãå šäœã®äŸ¡å€ãé«ããåãæã£ãŠããŸã。
Webã®æªæ¥ã¯、åžžã«é²åã®äžã«ãããŸã。ç§ãã¡éçºè ã¯、ãã®æåç·ã§、ãŠãŒã¶ãŒã®ããã«、ããè¯ãäœéšã远æ±ãç¶ãã䜿åœãè² ã£ãŠããŸã。ãã®èšäºã、ããªãã®ãã®æ¢æ±ã®æ ã®äžå©ãšãªã、Webããã©ãŒãã³ã¹æé©åã®æ°ããªéãåãéããã£ãããšãªãã°å¹žãã§ã。
ãã、ããªãã®Webãµã€ãã§、ãã®「20ãã€ãã®éæ³」ãè§£ãæŸã¡、ãŠãŒã¶ãŒã«æé«ã®äœéšãå±ããŸããã。æªæ¥ã®Webã¯、ããªãã®æã®äžã«ãããŸã。
ã³ã©ã :æ ã®çµããã«、ãããŠæ°ããªå§ãŸã
ãã®èšäºãæžãçµããŠ、ç§èªèº«ããŸã、Webããã©ãŒãã³ã¹ãžã®æ°ããªèŠç¹ãåŸãããšãã§ããŸãã。æè¡ã¯åžžã«é²åã、åŠã³ç¶ããããšã®å€§åããæ¹ããŠå®æããŸã。ãããŠ、ãã®åŠã³ãçãããšå ±æã§ããããšã、å¿ããå¬ããæããŸã。äžåã®æ¬ãèªã¿çµããæã®ãããª、éææãš、å°ãã®å¯ãã、ãããŠãŸãæ°ããªç¥èãžã®å¥œå¥å¿。ããã、ç§ããã®ä»äºã«æ ç±ãçããç¶ããçç±ãããããŸããã。ãã、次ã¯ã©ããªæ°ããæè¡ãšåºäŒããã§ãããã。çãããšå ±ã«、Webã®æªæ¥ãåµã£ãŠãããããšã楜ãã¿ã«ããŠããŸã。
çåç¹・å€è§çèŠç¹ ð€
ãã®èšäºã¯ThumbHashãšAVIFã®åŒ·åãªçµã¿åããã匷調ããŠããŸããã、ããããæè¡ã«ã¯ç²ç¹ãèŠèœãšããã¡ãªåŽé¢ãååšããŸã。ããã§ã¯、æäŸãããç®æ¬¡ãæ·±æãã、ããã€ãã®çåç¹ãå€è§çãªèŠç¹ãæç€ºããããšã§、èªè ã®çæ§ã®æèãããã«åºæ¿ããããšæããŸã。
- 「æåŒ·」ãšããèšèã®éç: èšäºäžã§ã¯「æåŒ·」ãšããèšèãå€çšããŸããã、çã«「æåŒ·」ãªãœãªã¥ãŒã·ã§ã³ã¯、ãããžã§ã¯ãã®äºç®、éçºãªãœãŒã¹、ã¿ãŒã²ãããŠãŒã¶ãŒã®ç°å¢、ã³ã³ãã³ãã®çš®é¡ã«ãã£ãŠåžžã«å€åããŸã。äŸãã°、極端ã«ã·ã³ãã«ãªããã°ã§ããã°、åã«WebPãšCDNã ãã§ãååãªå ŽåããããŸã。ThumbHashãšAVIFã®å°å ¥ã³ã¹ã(åŠç¿ã³ã¹ã、å®è£ ã³ã¹ã、ã¡ã³ããã³ã¹ã³ã¹ã)ãš、ããã«ãã£ãŠåŸãããå©çã®ãã©ã³ã¹ã¯、åžžã«èæ ®ãã¹ãéèŠãªç¹ã§ã。å°èŠæš¡ãµã€ãã§ã¯ãªãŒããŒã¹ããã¯ã«ãªãå¯èœæ§ããŒãã§ã¯ãããŸãã。
- CLS(Cumulative Layout Shift)ãžã®åœ±é¿ã®è©³çް: ThumbHashã¯ã¢ã¹ãã¯ãæ¯ãå
å
ããŠããããCLS察çã«æå¹ãšè¿°ã¹ãŸããã、å®éã®å°å
¥ã«ãããŠCSSã®
aspect-ratioããããã£ãç»åã³ã³ããã®é©åãªãµã€ãºèšå®ããªããã°、ãã¯ãCLSãçºçããå¯èœæ§ã¯æ®ããŸã。ThumbHashã¯ãããŸã§「ãã¬ãŒã¹ãã«ããŒã®å 容」ã§ãã、「ã¬ã€ã¢ãŠãã®å®å®æ§」ã¯CSSã¬ã€ã¢ãŠãã®èšèšã«å€§ããäŸåããŸã。ãã®é£æºã倱æããå Žåã®ãªã¹ã¯ã«ã€ããŠãèšåãã¹ãã§ããã。 - éåæã¬ã³ããªã³ã°ã®èª²é¡: ThumbHashã¯JavaScriptã§ã¬ã³ããªã³ã°ãããŸãã、JavaScriptã®å®è¡ãé å»¶ããå Žå(å€§èŠæš¡ãªJSãã³ãã«、ãŠãŒã¶ãŒã®äœã¹ããã¯ããã€ã¹、ã¡ã€ã³ã¹ã¬ããã®ãããã¯ãªã©)、ThumbHashã®è¡šç€ºèªäœãé ããå¯èœæ§ããããŸã。ããã¯、ThumbHashãæäŸãã「ç¬æè¡šç€º」ã®æ©æµãæãªãããšã«ãªããããŸãã。ãã®å Žåã®ãã©ãŒã«ããã¯ã察ç(Web Workerã§ã®çæ、éåžžã«å°ããªã€ã³ã©ã€ã³SVGã§ã®ä»£æ¿ãªã©)ãæ€èšãå¿ èŠã§ã。
- ç»è³ªã®「ç¥èŠçå質」: AVIFã®å§çž®çãšç»è³ªã¯åªããŠãããšè¿°ã¹ãŸããã、人éã®ç®ã«ãã「ç¥èŠçå質」ã¯、åçŽãªPSNRãSSIMãšãã£ãå®¢èŠ³ææšã ãã§ã¯æž¬ããŸãã。ç¹ã«、åçã®çš®é¡(颚æ¯、人ç©、ãã¯ã¹ãã£ãªã©)ã、ãŠãŒã¶ãŒã®ãã£ã¹ãã¬ã€ç°å¢(HDR察å¿、è²å)ã«ãã£ãŠ、AVIFã®æ©æµã®æãæ¹ã¯ç°ãªããŸã。äžéšã®éåžžã«ç¹çްãªç»åã«ãããŠã¯、JPEG 2000ãTIFFã®ãããªãã¹ã¬ã¹ã«è¿ã圢åŒãå¿ èŠãªå ŽåããããããããŸãã。
- æ¢åã€ã³ãã©ãšã®çµ±åã³ã¹ã: WordPress、Next.jsã§ã®å®è£ äŸãæããŸããã、ã¬ã¬ã·ãŒãªCMSãç¬èªã®ããã¯ãšã³ãã·ã¹ãã ã䜿ã£ãŠããå Žå、ThumbHashçæ・AVIF倿ã®ãã€ãã©ã€ã³ãæ§ç¯ããã³ã¹ãã¯æ±ºããŠå°ãããããŸãã。ç¹ã«、ãµãŒããŒã®ãªãœãŒã¹ãéãããŠããå Žåã、ç»ååŠçã®å°éç¥èãæã€ãšã³ãžãã¢ãäžè¶³ããŠããå Žå、å°å ¥ã®éå£ã¯é«ããªããŸã。ãã®「çŸå®çãªå°å ¥éå£」ã«ã€ããŠã、ããæ·±ãè°è«ããäœå°ãããã§ããã。
- ç°å¢åé¡ãžã®è²¢ç®: ç»åããŒã¿ã®åæžã¯、ããŒã¿ã»ã³ã¿ãŒã®é»åæ¶è²»åæž、ã²ããŠã¯ç°å¢è² è·ã®äœæžã«ãè²¢ç®ããŸã。Webããã©ãŒãã³ã¹æé©åã®è°è«ã«、ãã®ãããªãµã¹ããããªãã£ã®èŠç¹ãå ããããšã§、ããå¹ åºãèªè ã«èšŽæ±ã§ãããããããŸãã。
- èäœæš©ãšThumbHash: ThumbHashã¯ç»åã®「æ¬è³ª」ã衚çŸããŸãã、ãã®ããã·ã¥å€ããåæ§æãããç»åãå ã®ç»åãšèªèã§ããã¬ãã«ã§ããå Žå、èäœæš©ã®åé¡ãçããå¯èœæ§ã¯ãŒãã§ã¯ãããŸãã。ç¹ã«、ãã¬ãŒã¹ãã«ããŒèªäœãã³ã³ãã³ãã®äžéšãšããŠèªèããããããªã±ãŒã¹ã§ã。ãã®ç¹ã«ã€ããŠã®æ³çãªè§£éãæ³šæåèµ·ã、ç¶²çŸ çãªèšäºãšããŠã¯éèŠãããããŸãã。
æ¥æ¬ãžã®åœ±é¿ ð¯ðµ
ThumbHashãšAVIFã®çµã¿åããã¯、Webããã©ãŒãã³ã¹å šè¬ã«åœ±é¿ãäžãããã、æ¥æ¬ã®Webãšã³ã·ã¹ãã ã«ã倧ããªåœ±é¿ããããããŸã。æ¥æ¬ç¹æã®äºæ ã、ä»åŸã®å±æã«ã€ããŠèå¯ããŸã。
ã¢ãã€ã«ãã¡ãŒã¹ãã®æ¥æ¬åžå Žãšç»åæé©åã®éèŠæ§
æ¥æ¬ã¯äžçã§ãææ°ã®ã¢ãã€ã«ãã¡ãŒã¹ãåžå Žã§ãã、ã¹ããŒããã©ã³ã®æ®åçãéåžžã«é«ãã§ã。å€ãã®ãŠãŒã¶ãŒãç§»åäžãå€åºå ã§Webã³ã³ãã³ãã«ã¢ã¯ã»ã¹ãããã、ã¢ãã€ã«ç°å¢ã§ã®è¡šç€ºé床ã¯ããžãã¹ã®æåŠãåããã»ã©ã®éèŠæ§ãæã£ãŠããŸã。AVIFã«ããããŒã¿è»¢ééåæžã¯、ã¢ãã€ã«ããŒã¿éä¿¡éãžã®é æ ®ãšãªã、ãŠãŒã¶ãŒã®æºè¶³åºŠåäžã«çŽçµããŸã。
ãŸã、æ¥æ¬ã®éä¿¡ãã£ãªã¢ã¯é«éãª5Gãããã¯ãŒã¯ã®å±éãé²ããŠããŸãã、å°æ¹ãæ··éæãªã©、å¿ ãããé«ééä¿¡ãä¿èšŒãããããã§ã¯ãããŸãã。ãã®ãããªç°å¢äžã§ã、ThumbHashã«ãã峿ãã¬ãŒã¹ãã«ããŒè¡šç€ºã¯、ãŠãŒã¶ãŒãã¹ãã¬ã¹ãªãã³ã³ãã³ãã«è§Šããããšãå¯èœã«ã、éä¿¡ç°å¢ã«å·Šå³ããã«ããå®å®ãããŠãŒã¶ãŒäœéšãæäŸããŸã。
ECãµã€ã・ã¡ãã£ã¢ãµã€ãã®ç«¶äºæ¿åãšSEO察ç
æ¥æ¬ã®ECåžå Žããªã³ã©ã€ã³ã¡ãã£ã¢åžå Žã¯ç«¶äºãæ¿ãã、ãŠãŒã¶ãŒãæ¹ãã€ã、ç¶æããããã«ã¯åªããUXãäžå¯æ¬ ã§ã。GoogleãCore Web VitalsãSEOã®ã©ã³ãã³ã°èŠå ã«å°å ¥ããŠä»¥æ¥、LCPã®æ¹åã¯SEO察çã®éèŠãªæ±ãšãªããŸãã。ThumbHashãšAVIFã®å°å ¥ã¯、PageSpeed Insightsã®ã¹ã³ã¢ãå€§å¹ ã«åäžãã、æ€çŽ¢çµæã§ã®åªäœæ§ã確ä¿ããããšã«è²¢ç®ããŸã。
ç¹ã«、æ¥æ¬ã®ECãµã€ãã§ã¯ååã®è©³çްãªç»åã倿°æ²èŒããåŸåã匷ã、ã¡ãã£ã¢ãµã€ããè€éãªã°ã©ããå³è§£ãå€çšããŸã。ãããã®ç»åããµã€ãã®ããã©ãŒãã³ã¹ãé»å®³ããªããã、ææ°ã®ç»åæé©åæè¡ã®å°å ¥ã¯、ãã¯ãå¿ é èŠä»¶ãšãªãã€ã€ãããŸã。
æ¥æ¬ã®Webéçºã³ãã¥ããã£ãžã®åœ±é¿ãšæ®å
æ¥æ¬ã®Webéçºã³ãã¥ããã£ã¯、æ°ããæè¡ãžã®æåºŠãé«ã、å質ãšå¹çæ§ãéèŠããåŸåããããŸã。ThumbHashãAVIFã®ãããªé«æ§èœãªæè¡ã¯、æ¥æ¬ã®Webãšã³ãžãã¢ã«ãšã£ãŠå€§ããªé¢å¿äºãšãªãã§ããã。
- æè¡ããã°・å匷äŒã§ã®æ å ±å ±æ: æ¥æ¬èªã§ã®è©³çްãªè§£èª¬èšäºãå°å ¥äºäŸãå¢ããããšã§、æ®åãå éãããšèããããŸã。ãªã³ã©ã€ã³・ãªãã©ã€ã³ã®å匷äŒã§、å®è·µçãªå°å ¥ããŠããŠãå ±æãããæ©äŒãå¢ããã§ããã。
- ããŒã«・ãµãŒãã¹ã®ããŒã«ã©ã€ãº: WordPressãã©ã°ã€ã³ãCDNãµãŒãã¹ãããã€ããŒã、æ¥æ¬ã®éçºè åãã«AVIFãThumbHashã®å°å ¥ãããã«å®¹æã«ããæ©èœãããã¥ã¡ã³ããæäŸããŠãããšäºæ³ãããŸã。
- åœå äŒæ¥ãžã®å°å ¥: 倧æäŒæ¥ãã¹ã¿ãŒãã¢ããäŒæ¥ãç©æ¥µçã«å°å ¥äºäŸãçºè¡šããããšã§、ä»äŒæ¥ãžã®æ³¢å广ãæåŸ ã§ããŸã。ããã«ãã、æ¥æ¬å šäœã®Webãµã€ãã®å質ãšããã©ãŒãã³ã¹ãåºäžããããã§ããã。
çµè«ãšããŠ、ThumbHashãšAVIFã®çµã¿åããã¯、æ¥æ¬ã®ã¢ãã€ã«ãã¡ãŒã¹ããªWebåžå Žã«ãããŠ、ãŠãŒã¶ãŒäœéšã®åäž、SEOã®åŒ·å、ãããŠéçºå¹çã®åäžãšãã倿¹é¢ãã、éåžžã«ããžãã£ããªåœ±é¿ãããããéèŠãªæè¡é©æ°ãšèšããã§ããã。
æŽå²çäœçœ®ã¥ã ð°️
Webã«ãããç»åæè¡ã®é²åã¯、ã€ã³ã¿ãŒãããã®æŽå²ãã®ãã®ãšæ·±ãçµã³ã€ããŠããŸã。ThumbHashãšAVIFã¯、ãã®é·ãé²åã®éã®ãã®äžã§、ã©ã®ãããªäœçœ®ã¥ãã«ããã®ã§ãããã。ãã®æŽå²çèæ¯ãçŽè§£ã、æªæ¥ãžã®æçŸ©ãèå¯ããŸã。
Webåæ:JPEGãšGIF/PNGã®ç»å Ž
ã€ã³ã¿ãŒããããäžè¬ã«æ®åãå§ãã1990幎代、ç»åãã©ãŒãããã®äž»æµã¯JPEGãšGIFã§ãã。JPEGã¯åçã®ãããªå€è²ç»åãå¹ççã«å§çž®ã、GIFã¯ããŽãã¢ã€ã³ã³ã®ãããªå°ãªãè²æ°ã®ç»åãå¯éå§çž®ã、ã¢ãã¡ãŒã·ã§ã³ã«ã察å¿ããŸãã。ãã®åŸ、GIFã®ã©ã€ã»ã³ã¹åé¡ããPNGãç»å Žã、ééæ§ãæã€ç»åãšããŠåºãå©çšãããããã«ãªããŸã。
ãã®æä»£ã¯、ç»åã®ãã¡ã€ã«ãµã€ãºãããã«å°ããããããæå€§ã®èª²é¡ã§ãã。åœæã¯ãã€ã€ã«ã¢ããæ¥ç¶ãäž»æµã§、ãããæ°åKBã®ç»åã§ãããŒãã«æ°ç§ãããããšãçãããªãã£ãããã§ã。ã¿ã°ã«ããç»å衚瀺ã¯ã·ã³ãã«ã§ããã、ããŒãäžã®ãŠãŒã¶ãŒäœéšã¯åžžã«èª²é¡ã§ãã。
2000幎代〜2010幎代:FlashãšJavaScriptã«ãããªããã³ã³ãã³ã
ãããŒããã³ãã®æ®åãšãšãã«、Webãµã€ãã¯ãããªãããªã³ã³ãã³ããæ±ããããã«ãªããŸã。Flashã«ããã¢ãã¡ãŒã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãæµè¡ã、JavaScriptãé²åãéã、AJAXã®ãããªéåæéä¿¡ã§ã³ã³ãã³ããåçã«ããŒãããæè¡ãç»å ŽããŸãã。
ãã®ææã«ã¯、ç»åãèªã¿èŸŒãŸãããŸã§ã®éã«ããŒãã£ã³ã°ã¢ãã¡ãŒã·ã§ã³ã衚瀺ããã、å°ããªãã¬ãŒã¹ãã«ããŒç»åãå ã«è¡šç€ºããããã詊ã¿ãå§ãŸããŸãã。ããã、ãããã¯å€ãã®å Žå、JavaScriptã®ã«ã¹ã¿ã å®è£ ã«äŸåã、çµ±äžãããæšæºçãªã¢ãããŒãã¯ç¢ºç«ãããŠããŸããã§ãã。
2010幎代åŸå〜2020幎代åå:WebPãšResponsive Images、ãããŠCore Web Vitals
Googleã¯WebPãéçºã、JPEGãPNGãããåªããå§çž®çãšç»è³ªãæäŸããããšã§、ç»åãã©ãŒãããã®æ°ããªæšæºãææ¡ããŸãã。åææã«ã¯、æ§ã
ãªããã€ã¹ãµã€ãºã«å¯Ÿå¿ããããã®Responsive Images(<picture>èŠçŽ ãsrcset屿§)ãå°å
¥ãã、Webãµã€ãã倿§ãªã¹ã¯ãªãŒã³ã§æé©ã«è¡šç€ºãããåºç€ãæŽããŸãã。
ãããŠ、2020幎代ã«å ¥ã、GoogleãCore Web VitalsãSEOã®ã©ã³ãã³ã°èŠå ãšããŠéèŠããããã«ãªããŸã。LCP、FID(First Input Delay)、CLSãšãã£ããŠãŒã¶ãŒäœéšã«çŽçµããææšãéèŠèŠãã、åãªããã¡ã€ã«ãµã€ãºåæžã ãã§ãªã、ãŠãŒã¶ãŒã「ç¥èŠãã」ããã©ãŒãã³ã¹ã®åäžãåŒ·ãæ±ããããããã«ãªããŸãã。
ãã®æä»£ã«、BlurHashã®ãããª「ãŒãããã¬ãŒã¹ãã«ããŒ」ã®æŠå¿µãç»å Žã、LCPãæ¹åããæå¹ãªææ®µãšããŠæ³šç®ãéãå§ããŸã。
2025幎:ThumbHashãšAVIFãåãéãæ°æä»£
ãããŠçŸåš、2025幎。AVIFã¯WebPãåé§ããå§çž®çãšç»è³ª、ãããŠåºç¯ãªæ©èœæ§(ã¢ãã¡ãŒã·ã§ã³、HDR、éæåºŠ)ã§æ¬¡äžä»£ç»åãã©ãŒãããã®çé ãšãªã、äž»èŠãã©ãŠã¶ã§ã®ãµããŒããç€ç³ã«ãªãã€ã€ãããŸã。
åæã«、BlurHashã®èª²é¡ãå æã、ããã«é²åããThumbHashãç»å Ž。ããã20ãã€ããšããé©ç°çãªãµã€ãºã§ç»åã®「é」ã衚çŸã、ã¢ã¹ãã¯ãæ¯å èµ、ã¢ã«ãã¡å¯Ÿå¿ãšãã匷åãªç¹åŸŽãåããŸãã。
ãã®äºã€ã®æè¡ãçµã¿åãããããšã§、Webã®ç»åæé©åã¯æ°ããªãã§ãŒãºãžãšçªå ¥ããŸãã。ããã¯åã«「ç»åã軜ããã」ã ãã§ãªã、「ãŠãŒã¶ãŒãç»åãèŠããŸã§ã®äœéšå šäœããã¶ã€ã³ãã」ãšãããã©ãã€ã ã·ãããæå³ããŸã。ThumbHashãLCPãå¿çç・ç©ççã«ççž®ã、AVIFãæçµçãªé«ç»è³ªç»åãé«éã«æäŸãã。ãã®é£æºã¯、Webã®æŽå²ã®äžã§å¹ãããŠããç»åæé©åã®ããŠããŠã®é倧æã§ãã、ä»åŸã®Webäœéšã®æšæºãåå®çŸ©ãããã®ã§ã。
ThumbHashãšAVIFã¯、Webã®ããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒäœéšã®åäžã«ãããŠ、ééããªãæŽå²çãªè»¢æç¹ãšãªãã§ããã。ç§ãã¡ã¯ä»、ãã®æåç·ã«ç«ã£ãŠããã®ã§ã。
åèãªã³ã¯・æšèŠå³æž ð
Webããã©ãŒãã³ã¹ãšç»åæé©åã«é¢ããçè§£ãããã«æ·±ããããã«、åèãšãªããªã³ã¯ãšæšèŠå³æžãããã€ãã玹ä»ããŸã。
åèãªã³ã¯ (※æ¶ç©ºã®ãªã³ã¯ãå«ã)
- ThumbHash å ¬åŒGitHubãªããžããª: https://github.com/evanw/thumbhash (ThumbHashã®åçãšå®è£ ã®è©³çް)
- AVIF å ¬åŒãµã€ã (AOMedia): https://aomedia.org/avif/ (AVIFã«é¢ããææ°æ å ±ãšä»æ§)
- Core Web Vitals å ¬åŒããã¥ã¡ã³ã (Google Developers): https://web.dev/vitals/ (LCPãã¯ãããšããWebããã©ãŒãã³ã¹ææšã®éèŠæ§)
- dopingconsomme.blogspot.com: https://dopingconsomme.blogspot.com/2024/01/web-performance-optimizations.html (Webããã©ãŒãã³ã¹æé©åã«é¢ãã詳现ãªããã°èšäº)
- Cloudflare Developers Blog (AVIF & Workers): https://blog.cloudflare.com/introducing-avif-support/ (Cloudflareã«ããAVIFãµããŒããšWorkersã§ã®æé©åäºäŸ)
- Next.js Image Optimization ããã¥ã¡ã³ã: https://nextjs.org/docs/pages/api-reference/components/image (
next/imageã³ã³ããŒãã³ãã®è©³çްãªå©ç𿹿³)
æšèŠå³æž (※æ¶ç©ºã®æžåãå«ã)
- 『Webããã©ãŒãã³ã¹å®è·µå
¥é 〜é«éã§å¿«é©ãªWebãµã€ããäœãããã®æ¥µæ』
Webããã©ãŒãã³ã¹ã®åºæ¬ããå¿çšãŸã§ãç¶²çŸ ããäžå。ç»åæé©åã ãã§ãªã、CSS、JavaScript、ãµãŒããŒãµã€ãã®æé©åãŸã§、å¹ åºãç¥èãåŸãããŸã。
- 『Core Web Vitalsã§å€ããWebãµã€ãã®èšèš』
Core Web Vitalsã®åææšãæ·±ãçè§£ã、ããããæ¹åããããã®å ·äœçãªèšèšææ³ãã³ãŒãã£ã³ã°ãã¯ããã¯ãåŠã¹ãŸã。LCPæ¹åã®ããã®ç»åæé©åã«ã€ããŠã詳现ãªè§£èª¬ããããŸã。
- 『ã¢ãã³Webéçºã®ç»åæé©åæŠç¥』
AVIFãWebPãªã©ã®æ¬¡äžä»£ãã©ãŒããã、CDN掻çš、ãšããžã³ã³ãã¥ãŒãã£ã³ã°、ãããŠThumbHashã®ãããªãã¬ãŒã¹ãã«ããŒæè¡ãŸã§、ææ°ã®ç»åæé©åæŠç¥ãäœç³»çã«åŠã¹ãå°éæžã§ã。
èæ³š ð
æ¬æäžã§èšåãããå°éçšèªã、è£è¶³ãå¿ èŠãªç®æã«ã€ããŠ、ãã詳ãã解説ããŸã。
- LCP (Largest Contentful Paint)
解説: Googleãæå±ããCore Web Vitalsã®äžã€ã§、「äž»èŠãªã³ã³ãã³ãã®æç»」ãæå³ããŸã。ãŠãŒã¶ãŒãWebããŒãžã蚪ããé、ãã¥ãŒããŒã(ãã©ãŠã¶ã®è¡šç€ºé å)å ã§æã倧ããªç»åãããã¹ããããã¯ãæç»ããããŸã§ã®æéãæž¬å®ããŸã。LCPãçãã»ã©、ãŠãŒã¶ãŒã¯ããŒãžã「èªã¿èŸŒãŸãã」ãšæãããããã、ãŠãŒã¶ãŒäœéš(UX)ã«ãããŠéåžžã«éèŠãªææšã§ã。
- DCT (Discrete Cosine Transform / 颿£ã³ãµã€ã³å€æ)
解説: ä¿¡å·ãç»åãç°ãªãåšæ³¢æ°æåã®åã«åè§£ããæ°åŠçãªå€æææ³ã§ã。JPEGå§çž®ã§åºãå©çšãããŠãã、ç»åããŒã¿ãã人éã®èŠèŠã«éèŠãªäœåšæ³¢æåãæœåºã、ãã以å€ã®åé·ãªé«åšæ³¢æåãç Žæ£・å§çž®ããããšã§、ãã¡ã€ã«ãµã€ãºãåæžããŸã。ThumbHashããã®åçãå¿çšã、ç»åã®äž»èŠãªç¹åŸŽãå¹ççã«æœåºããŠããŸã。
- BlurHash (ãã©ãŒããã·ã¥)
解説: ç»åã®äœè§£å床ãã¬ãŒã¹ãã«ããŒãçæããããã®ããã·ã¥å€è¡šçŸæè¡。çãæååããå ã®ç»åã®ãŒãããããŒãžã§ã³ãåæ§ç¯ã§ããŸã。ThumbHashã®å è¡æè¡ã§ãã、ã¢ã¹ãã¯ãæ¯ã®å¥éæå®ãå¿ èŠã§ãã£ãã、ã¢ã«ãã¡(éæåºŠ)ã«å¯Ÿå¿ããŠããªããªã©ã®å¶éããããŸãã。
- CLS (Cumulative Layout Shift / ã¬ã€ã¢ãŠãã·ãã)
解説: Googleã®Core Web Vitalsã®äžã€ã§、WebããŒãžã®èªã¿èŸŒã¿äžã«äºæããã¬ã€ã¢ãŠãããããŠããŸãçŸè±¡ãæããŸã。äŸãã°、ããã¹ããèªã¿é²ããŠããæäžã«ç»åãé ããŠããŒããã、ããã«ãã£ãŠã³ã³ãã³ãã®äœçœ®ãäžã«ããã、ãšãã£ãããšãCLSã®åå ãšãªããŸã。ãŠãŒã¶ãŒã®æäœã劚ã、UXãèããäœäžããããã、察çãå¿ é ã§ã。ThumbHashã¯、ã¢ã¹ãã¯ãæ¯ãå å ããŠãããã、ç»åã³ã³ããã®ãµã€ãºãäºåã«ç¢ºä¿ãããã、CLS鲿¢ã«è²¢ç®ããŸã。
- WebP (ãŠã§ãããŒ)
解説: Googleãéçºããç»åãã©ãŒãããã§、JPEGãPNGãããåªããå§çž®å¹çãšç»è³ªãäž¡ç«ããŸã。鿢ç»、ã¢ãã¡ãŒã·ã§ã³、éæåºŠã«å¯Ÿå¿ã、çŸåšã§ã¯äž»èŠãªãã©ãŠã¶ã§åºããµããŒããããŠããŸã。AVIFãç»å ŽãããŸã§ã¯、次äžä»£ç»åãã©ãŒãããã®ä»£è¡šæ ŒãšããŠæ®åããŸãã。
- AV1 (AOMedia Video 1)
解説: Alliance for Open Media (AOMedia) ãéçºãããªãŒãã³ã§ãã€ã€ãªãã£ããªãŒãªãããªã³ãŒããã¯ã§ã。Google、Apple、Microsoft、Amazon、Netflixãªã©å€ãã®å€§æäŒæ¥ãåå ããŠããŸã。AVIFã¯、ãã®AV1ã®ããŒãã¬ãŒã (åç»ã®åäžãã¬ãŒã )å§çž®æè¡ãããŒã¹ã«ããŠããŸã。é«å§çž®çãšé«å質ãç¹åŸŽã§ã。
- HDR (High Dynamic Range / ãã€ãã€ãããã¯ã¬ã³ãž)
解説: ç»åãæ åã®è¡šçŸã§ããèŒåºŠã®ç¯å²(ãã€ãããã¯ã¬ã³ãž)ãåºããæè¡ã§ã。åŸæ¥ã®SDR (Standard Dynamic Range) ã«æ¯ã¹ãŠ、ããæããéšåããæãéšåãŸã§、è±ããªé調ãšè²åœ©ãåçŸã§ããŸã。ããã«ãã、ãããªã¢ã«ã§èšå ŽæããµããèŠèŠäœéšãæäŸããŸã。AVIFã¯HDRç»åããµããŒãããŠããŸã。
- CDN (Contents Delivery Network / ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯)
解説: Webã³ã³ãã³ã(ç»å、åç»、CSS、JavaScriptãªã©)ããŠãŒã¶ãŒã«é«éãã€å®å®ããŠé ä¿¡ããããã®åæ£åãããã¯ãŒã¯ã·ã¹ãã ã§ã。äžçåå°ã«é 眮ããããµãŒããŒ(ãšããžãµãŒããŒ)ã«ã³ã³ãã³ãããã£ãã·ã¥ã、ãŠãŒã¶ãŒã«æãè¿ããšããžãµãŒããŒããé ä¿¡ããããšã§、ã¬ã€ãã³ã·ãåæžã、ããŒãæéãççž®ããŸã。
- SQIP (Small Quality Image Placeholders)
解説: å ã®ç»åã®èŒªéãæœè±¡åã、ããªãŽã³(å€è§åœ¢)ã§è¡šçŸããSVG(Scalable Vector Graphics)圢åŒã®ãã¬ãŒã¹ãã«ããŒãçæããæè¡ã§ã。ãã¡ã€ã«ãµã€ãºã¯æ¯èŒçå°ãã、èŠèŠçã«ãŠããŒã¯ãªããŒãã£ã³ã°äœéšãæäŸããŸãã、çæã³ã¹ããé«ãã§ãããšããåŽé¢ããããŸã。
- LQIP (Low Quality Image Placeholder)
解説: å ã®ç»åãæ¥µããŠäœãå質ã§å§çž®ã、ãã®å°ããªç»åããŒã¿ããã¬ãŒã¹ãã«ããŒãšããŠå©çšããææ³ã§ã。éåžž、JPEG圢åŒã®ç»åããŒã¿ãBase64ãšã³ã³ãŒããããŠHTMLã«çŽæ¥åã蟌ãŸããã、éåžžã«å°ããªç¬ç«ããç»åãã¡ã€ã«ãšããŠæäŸãããŸã。å®è£ ã容æã§ãã、ThumbHashãBlurHashã«æ¯ã¹ãŠãã¡ã€ã«ãµã€ãºã倧ãããªããã¡ã§ã。
- JPEG XL (ãžã§ã€ãã° ãšãã¯ã¹ãšã«)
解説: éçºäžã®æ¬¡äžä»£ç»åãã©ãŒãããã®äžã€ã§、AVIFãšåçããã以äžã®é«ãå§çž®çãšåªããç»è³ªãç®æããŠããŸã。éå¯éå§çž®ãšå¯éå§çž®ã®äž¡æ¹ã«å¯Ÿå¿ã、æ¢åã®JPEGç»åãç»è³ªå£åãªãã§ãã¹ã¬ã¹åå§çž®ã§ããæ©èœãæã¡ãŸã。éåžžã«å°æ¥æ§ãæåŸ ãããŠããŸãã、2025幎çŸåš、äž»èŠãã©ãŠã¶ã§ã®ãµããŒãã¯ãŸã éå®çã§ã。
- UX (User Experience / ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹)
解説: 補åããµãŒãã¹ãå©çšããéã«ãŠãŒã¶ãŒãåŸã、ããããäœéšãææ ã®ç·äœã§ã。Webãµã€ãã«ãããŠã¯、䜿ãããã、楜ãã、æºè¶³åºŠ、å¹çæ§ãªã©ãå«ãŸããŸã。Webããã©ãŒãã³ã¹ã®æé©åã¯、UXåäžã«çŽçµããéèŠãªèŠçŽ ã®äžã€ã§ã。
- mermaid (ããŒã¡ã€ã)
解説: ããã¹ãããŒã¹ã§ãã€ã¢ã°ã©ã ããããŒãã£ãŒããäœæã§ããããŒã«ã§ã。Markdownã®ãããªã·ã³ãã«ãªèšæ³ã§å³ãèšè¿°ã§ã、ãããç»åãšããŠã¬ã³ããªã³ã°ããããšãã§ããŸã。ã³ãŒããããã¥ã¡ã³ãã«å³ãçµã¿èŸŒãéã«äŸ¿å©ã§ã。
next/image(ãã¯ã¹ãã¹ã©ãã·ã¥ã€ã¡ãŒãž)
解説: Next.jsãæäŸããç»åæé©åçšã®ã³ã³ããŒãã³ãã§ã。ç»åã®é å»¶ããŒã、ãµã€ãºæé©å、WebP/AVIFãžã®èªå倿、ã¢ã¹ãã¯ãæ¯ç¶æã«ããCLS鲿¢ãªã©、æ§ã ãªæé©åæ©èœãèªåçã«æäŸããŸã。ã¢ãã³ãªNext.jsã¢ããªã±ãŒã·ã§ã³ã§ã®ç»åè¡šç€ºã«æšå¥šãããŸã。
- Edge Functions (ãšããžãã¡ã³ã¯ã·ã§ã³ãº)
解説: CDNã®ãšããžãµãŒããŒ(ãŠãŒã¶ãŒã«æãè¿ã忣ãµãŒããŒ)äžã§å®è¡ããããµãŒããŒã¬ã¹é¢æ°ã§ã。ãŠãŒã¶ãŒãªã¯ãšã¹ãã®åŠç、ã³ã³ãã³ãã®åçãªçæ・æžãæã、èªèšŒ、A/Bãã¹ããªã©、æ§ã ãªåŠçããŠãŒã¶ãŒã«è¿ãå Žæã§å®è¡ããããšã§、ã¬ã€ãã³ã·ãæå°éã«æã、ããã©ãŒãã³ã¹ãåäžãããŸã。
- SSR (Server-Side Rendering / ãµãŒããŒãµã€ãã¬ã³ããªã³ã°)
解説: WebããŒãžããµãŒããŒåŽã§ã¬ã³ããªã³ã°ã、宿ããHTMLãã¯ã©ã€ã¢ã³ã(ãã©ãŠã¶)ã«éä¿¡ããææ³ã§ã。ããã«ãã、ãã©ãŠã¶ã¯JavaScriptã®ããŠã³ããŒããå®è¡ãåŸ ããã«ã³ã³ãã³ãã衚瀺ã§ãããã、åæè¡šç€ºé床ã®åäžãSEOã«æå©ãšãããŸã。ReactãNext.jsãªã©ã§å©çšãããŸã。
- ISR (Incremental Static Regeneration / ã€ã³ã¯ãªã¡ã³ã¿ã«・ã¹ã¿ãã£ãã¯・ãªãžã§ãã¬ãŒã·ã§ã³)
解説: Next.jsãæäŸããã¬ã³ããªã³ã°ææ³ã®äžã€ã§、SSG(Static Site Generation:ãã«ãæã«å šããŒãžãéçã«çæ)ãšSSRã®äžéã«äœçœ®ããŸã。éçã«çæãããããŒãžããã£ãã·ã¥ãã€ã€、æå®ããééã§ããã¯ã°ã©ãŠã³ãã§åçæããããšã§、åžžã«ææ°ã®ã³ã³ãã³ããæäŸããªãããé«ãããã©ãŒãã³ã¹ãç¶æããŸã。
- Lazy Loading (é
å»¶ããŒã)
解説: Webã³ã³ãã³ã、ç¹ã«ç»åãåç»ãªã©ã®éããªãœãŒã¹ã、ãŠãŒã¶ãŒããã®ã³ã³ãã³ããå®éã«è¡šç€ºããäœçœ®ãŸã§ã¹ã¯ããŒã«ãããŸã§ããŒãããªãããã«ããæè¡ã§ã。ããã«ãã、åæããŒãžã®ããŒãæéãççž®ã、垯åå¹ ãç¯çŽã§ããŸã。HTMLã®
loading="lazy"屿§ãJavaScriptã©ã€ãã©ãªã§å®çŸãããŸã。 - Priority (åªå
床)
解説: ãŠã§ãããŒãžã®LCP(Largest Contentful Paint)ã«çŽæ¥åœ±é¿ãäžãããããªéèŠãªã³ã³ãã³ã(äŸ:ããŒããŒç»å)ã«å¯ŸããŠ、ãã©ãŠã¶ããã®ããŒããä»ã®ãªãœãŒã¹ãããåªå ããããã«æç€ºããä»çµã¿ã§ã。Next.jsã®
next/imageã³ã³ããŒãã³ãã®priority屿§ã、HTMLã®<link rel="preload">ãªã©ã§æå®ãããŸã。 - Cloudflare (ã¯ã©ãŠããã¬ã¢)
解説: äžçæå€§çŽã®CDN(Contents Delivery Network)ããã³Webã»ãã¥ãªãã£ãµãŒãã¹ãããã€ããŒã§ã。äžçäžã«åæ£ãããããŒã¿ã»ã³ã¿ãŒãæã¡、ã³ã³ãã³ãé ä¿¡ã®é«éå、DDoSæ»æããã®ä¿è·、WAF(Web Application Firewall)ãªã©、å¹ åºããµãŒãã¹ãæäŸããŠããŸã。
- Cloudflare Polish (ã¯ã©ãŠããã¬ã¢ ããªãã·ã¥)
解説: CloudflareãæäŸããç»åæé©åæ©èœã®äžã€ã§、Webãµã€ãã®ç»åãèªåçã«å§çž®・æé©åã、ãŠãŒã¶ãŒã®ãã©ãŠã¶ãããã€ã¹ã«å¿ããŠAVIFãWebPãªã©ã®æé©ãªãã©ãŒãããã«å€æããŠé ä¿¡ããŸã。ç¹å¥ãªèšå®ãªãã«ç»åã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸã。
- Cloudflare Workers (ã¯ã©ãŠããã¬ã¢ ã¯ãŒã«ãŒãº)
解説: CloudflareãæäŸããEdge FunctionsãµãŒãã¹ã§ã。JavaScript(ãŸãã¯TypeScript、WebAssembly)ã§èšè¿°ãããã³ãŒãã、Cloudflareã®ãšããžãµãŒããŒäžã§å®è¡ã§ããŸã。ããã«ãã、ãµãŒããŒã¬ã¹ã§é«éãªããã¯ãšã³ãããžãã¯ãã³ã³ãã³ãæäœãå®çŸããŸã。
- Link ããã㌠(ãªã³ã¯ããããŒ)
解説: HTTPã¬ã¹ãã³ã¹ããããŒã®äžã€ã§、HTMLã®
<link>ã¿ã°ãšåæ§ã«、ããŒãžã«é¢é£ãããªãœãŒã¹(CSSãã¡ã€ã«、JavaScriptãã¡ã€ã«、ãã©ã³ã、ã¢ã€ã³ã³ãªã©)ããã©ãŠã¶ã«äºåã«äŒããããã«äœ¿çšãããŸã。rel="preload"ãæå®ããããšã§、ãã©ãŠã¶ã«ãã®ãªãœãŒã¹ãä»ã®ã³ã³ãã³ããããæ©ãååŸããããæç€ºã§ããŸã。 - Fallback (ãã©ãŒã«ãã㯠/ 代æ¿è¡šç€º)
解説: ææ°ã®æè¡ãæ©èœãå©çšã§ããªãç°å¢(å€ããã©ãŠã¶、ç¹å®ã®ããã€ã¹ãªã©)ã«ãããŠ、代æ¿ãšãªãæè¡ã衚瀺ãæäŸããããšã§、ãŠãŒã¶ãŒäœéšãæãªããªãããã«ããèšèšææ³ã§ã。ç»åãã©ãŒãããã«ãããŠã¯、AVIFé察å¿ãã©ãŠã¶åãã«WebPãJPEGãæäŸãããšãã£ã圢ã§å©çšãããŸã。
- `navigator.canPlayType()` (ããã²ãŒã¿ãŒ・ãã£ã³ãã¬ã€ã¿ã€ã)
解説: JavaScriptã®
Navigatorãªããžã§ã¯ãã®ã¡ãœããã§、åŒæ°ã«æå®ãããMIMEã¿ã€ã(äŸ:'video/mp4','image/avif')ã、çŸåšã®ãã©ãŠã¶ã§åçãŸãã¯è¡šç€ºå¯èœã§ãããã©ãããå€å®ããŸã。æ»ãå€ã¯"probably","maybe", ãŸãã¯ç©ºæåå(é察å¿)ã®ããããã§ã。 - WebCodecs API (ãŠã§ãã³ãŒãã㯠API)
解説: Webãã©ãŠã¶äžã§äœã¬ãã«ãªã¡ãã£ã¢ãšã³ã³ãŒã・ãã³ãŒãåŠçãå¯èœã«ããJavaScript APIã§ã。ããã«ãã、Webã¢ããªã±ãŒã·ã§ã³å ã§ãããªãã¬ãŒã ããªãŒãã£ãªãã£ã³ã¯ãçŽæ¥æäœã、ãªã¢ã«ã¿ã€ã ã§ã®ã¡ãã£ã¢åŠçã、ã«ã¹ã¿ã ã¡ãã£ã¢ãã€ãã©ã€ã³ã®æ§ç¯ãå¯èœã«ãªããŸã。ç»åãã©ãŒãããã®ãšã³ã³ãŒã・ãã³ãŒãã«ãå¿çšå¯èœã§ã。
<picture>èŠçŽ (ãã¯ãã£ãŒèŠçŽ )
解説: HTML5ã§å°å ¥ãããèŠçŽ ã§、è€æ°ã®ç»åãœãŒã¹(
<source>èŠçŽ )ãæå®ã、ãŠãŒã¶ãŒãšãŒãžã§ã³ã(ãã©ãŠã¶)ãèªèº«ã®ãµããŒããããã©ãŒããããã¹ã¯ãªãŒã³ãµã€ãº、è§£å床ãªã©ã«åãããŠæé©ãªç»åãèªåçã«éžæã§ããããã«ããŸã。ãã©ãŒã«ããã¯æŠç¥ãå®çŸããäžã§éåžžã«åŒ·åãªããŒã«ã§ã。- SEO (Search Engine Optimization / æ€çŽ¢ãšã³ãžã³æé©å)
解説: æ€çŽ¢ãšã³ãžã³ã®èªç¶æ€çŽ¢çµæã§ãŠã§ããµã€ããäžäœã«è¡šç€ºãããããã«、ãŠã§ããµã€ãã®å å®¹ãæ§é ã調æŽããããšã§ã。Webããã©ãŒãã³ã¹ã®åäžã¯、ãŠãŒã¶ãŒäœéšãæ¹åã、Googleã®Core Web Vitalsã®ã¹ã³ã¢ãé«ãããã、SEOã«çŽæ¥çãªè¯ã圱é¿ãäžããŸã。
- Core Web Vitals (ã³ã¢ ãŠã§ã ãã€ã¿ã«)
解説: Googleãæå±ãã、ãŠã§ããµã€ãã®ãŠãŒã¶ãŒäœéšã枬ãããã®3ã€ã®äž»èŠãªææšã®ã»ããã§ã。ããã«ã¯LCP (Largest Contentful Paint)、FID (First Input Delay)、CLS (Cumulative Layout Shift) ãå«ãŸããŸã。ãããã®ææšã¯SEOã®ã©ã³ãã³ã°èŠå ãšããŠãéèŠèŠãããŠããŸã。
çšèªçŽ¢åŒ(ã¢ã«ãã¡ãããé ) ð
- AV1 (AOMedia Video 1)
- AVIFã®ç« ã§è§£èª¬。AOMediaã«ãã£ãŠéçºããã、ãªãŒãã³ã§ãã€ã€ãªãã£ããªãŒãªé«å¹çãããªã³ãŒããã¯ã§ã。AVIFã¯ãã®AV1ã®ããŒãã¬ãŒã å§çž®æè¡ãåºç€ãšããŠããŸã。
- AVIF (AV1 Image File Format)
- AVIFã®ç« ã§è§£èª¬。JPEGãWebPãåé§ããå§çž®çãšé«å質ãäž¡ç«ããæ¬¡äžä»£ç»åãã©ãŒããã。鿢ç»、ã¢ãã¡ãŒã·ã§ã³、HDR、éæåºŠã«å¯Ÿå¿ã、äž»èŠãã©ãŠã¶ã§ã®ãµããŒããé²ãã§ããŸã。
- BlurHash (ãã©ãŒããã·ã¥)
- ThumbHashã®ç« ã§è§£èª¬。ThumbHashã®å è¡æè¡ã§、çãæååããç»åã®ãŒããããã¬ãŒã¹ãã«ããŒç»åãçæããŸã。
- CDN (Contents Delivery Network / ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯)
- ãªã「çµã¿åãã」ãªã®ã?ã®ç« ãªã©ã§è§£èª¬。Webã³ã³ãã³ãããŠãŒã¶ãŒã«é«éãã€å®å®ããŠé ä¿¡ããããã®åæ£åãããã¯ãŒã¯ã·ã¹ãã 。
- Cloudflare (ã¯ã©ãŠããã¬ã¢)
- CDN・ãšããžæé©åã®ç« ã§è§£èª¬。äžçæå€§çŽã®CDNããã³Webã»ãã¥ãªãã£ãµãŒãã¹ãããã€ããŒ。
- Cloudflare Polish (ã¯ã©ãŠããã¬ã¢ ããªãã·ã¥)
- CDN・ãšããžæé©åã®ç« ã§è§£èª¬。CloudflareãæäŸããèªåç»åæé©åæ©èœã§、AVIFãªã©ãžã®å€æãè¡ããŸã。
- Cloudflare Workers (ã¯ã©ãŠããã¬ã¢ ã¯ãŒã«ãŒãº)
- CDN・ãšããžæé©åã®ç« ã§è§£èª¬。CloudflareãæäŸããEdge FunctionsãµãŒãã¹ã§、ãšããžãµãŒããŒã§JavaScriptãå®è¡ã§ããŸã。
- CLS (Cumulative Layout Shift / ã¬ã€ã¢ãŠãã·ãã)
- ThumbHashã®ç« ãªã©ã§è§£èª¬。Core Web Vitalsã®äžã€ã§、WebããŒãžã®èªã¿èŸŒã¿äžã«ã³ã³ãã³ããäºæããç§»åããçŸè±¡。
- Core Web Vitals (ã³ã¢ ãŠã§ã ãã€ã¿ã«)
- æŽå²çäœçœ®ã¥ãã®ç« ãªã©ã§è§£èª¬。LCP、FID、CLSã®3ã€ã®ææšãããªã、Googleãæå±ãããŠãŒã¶ãŒäœéšã®è©äŸ¡åºæº。
- DCT (Discrete Cosine Transform / 颿£ã³ãµã€ã³å€æ)
- ThumbHashã®ç« ã§è§£èª¬。JPEGå§çž®ãªã©ã«äœ¿ãããç»åããŒã¿å€ææè¡。ThumbHashã®åºç€æè¡ã®äžã€。
- Edge Functions (ãšããžãã¡ã³ã¯ã·ã§ã³ãº)
- Next.js / React ã§ã®å®è£ ã®ç« ãªã©ã§è§£èª¬。CDNã®ãšããžãµãŒããŒäžã§å®è¡ããããµãŒããŒã¬ã¹é¢æ°。
- Fallback (ãã©ãŒã«ãã㯠/ 代æ¿è¡šç€º)
- ãã©ãŠã¶é察å¿ãžã®ãã©ãŒã«ããã¯ã®ç« ã§è§£èª¬。æ°ããæè¡ã䜿ããªãç°å¢ã§ä»£æ¿æ©èœãæäŸããããš。
- HDR (High Dynamic Range / ãã€ãã€ãããã¯ã¬ã³ãž)
- AVIFã®ç« ã§è§£èª¬。èŒåºŠç¯å²ãåºã、ããè±ããªè²åœ©ãšé調ã衚çŸããæè¡。AVIFããµããŒã。
- ISR (Incremental Static Regeneration / ã€ã³ã¯ãªã¡ã³ã¿ã«・ã¹ã¿ãã£ãã¯・ãªãžã§ãã¬ãŒã·ã§ã³)
- Next.js / React ã§ã®å®è£ ã®ç« ã§è§£èª¬。Next.jsã®ã¬ã³ããªã³ã°ææ³ã®äžã€ã§、éççæãšãµãŒããŒãµã€ãã¬ã³ããªã³ã°ã®äžé。
- ãã©ãŠã¶é察å¿ãžã®ãã©ãŒã«ããã¯ã®ç« ã§è§£èª¬。JavaScriptã§ãã©ãŠã¶ãç¹å®ã®ã¡ãã£ã¢ã¿ã€ãããµããŒãããŠãããå€å®ããã¡ãœãã。
- JPEG XL (ãžã§ã€ãã° ãšãã¯ã¹ãšã«)
- 次äžä»£ç»åãã©ãŒããã察決ã®ç« ãªã©ã§è§£èª¬。AVIFãšåçããã以äžã®å§çž®çãšç»è³ªãç®æãæ¬¡äžä»£ç»åãã©ãŒããã。
- Lazy Loading (é å»¶ããŒã)
- Next.js / React ã§ã®å®è£ ã®ç« ã§è§£èª¬。ç»åãªã©ã®ãªãœãŒã¹ã、ãŠãŒã¶ãŒãã¹ã¯ããŒã«ããŠè¡šç€ºç¯å²ã«å ¥ããŸã§ããŒãããªãæè¡。
- LCP (Largest Contentful Paint / äž»èŠãªã³ã³ãã³ãã®æç»)
- ãŸãããã®ç« ãªã©ã§è§£èª¬。Core Web Vitalsã®äžã€ã§、ããŒãžã§æã倧ããªã³ã³ãã³ãã衚瀺ããããŸã§ã®æé。
- Link ããã㌠(ãªã³ã¯ããããŒ)
- CDN・ãšããžæé©åã®ç« ã§è§£èª¬。HTTPã¬ã¹ãã³ã¹ããããŒã§、ãã©ãŠã¶ã«ãªãœãŒã¹ã®ããªããŒããªã©ãæç€º。
- LQIP (Low Quality Image Placeholder)
- 4倧ãã¬ãŒã¹ãã«ããŒåŸ¹åºæ¯èŒã®ç« ã§è§£èª¬。è¶ äœå質ãªç»åããã¬ãŒã¹ãã«ããŒãšããŠå©çšããææ³。
- mermaid (ããŒã¡ã€ã)
- WordPress å®å šèªååã®ç« ã§è§£èª¬。ããã¹ãããŒã¹ã§ãã€ã¢ã°ã©ã ããããŒãã£ãŒããäœæã§ããããŒã«。
- `next/image` (ãã¯ã¹ãã¹ã©ãã·ã¥ã€ã¡ãŒãž)
- Next.js / React ã§ã®å®è£ ã®ç« ã§è§£èª¬。Next.jsãæäŸããç»åæé©åçšã®ã³ã³ããŒãã³ã。
- `<picture>`èŠçŽ (ãã¯ãã£ãŒèŠçŽ )
- WordPress å®å šèªååã®ç« ãªã©ã§è§£èª¬。è€æ°ã®ç»åãœãŒã¹ãæå®ã、ãã©ãŠã¶ã«æé©ãªç»åãéžæãããHTMLèŠçŽ 。
- Priority (åªå 床)
- Next.js / React ã§ã®å®è£ ã®ç« ã§è§£èª¬。LCPã«åœ±é¿ããéèŠãªãªãœãŒã¹ã®ããŒããåªå ãããæç€º。
- SEO (Search Engine Optimization / æ€çŽ¢ãšã³ãžã³æé©å)
- æŽå²çäœçœ®ã¥ãã®ç« ãªã©ã§è§£èª¬。æ€çŽ¢ãšã³ãžã³ã§ã®è¡šç€ºé äœãäžããããã®æé©åææ³。
- SQIP (Small Quality Image Placeholders)
- 4倧ãã¬ãŒã¹ãã«ããŒåŸ¹åºæ¯èŒã®ç« ã§è§£èª¬。SVGããŒã¹ã®ããªãŽã³èª¿ãã¬ãŒã¹ãã«ããŒãçæããæè¡。
- SSR (Server-Side Rendering / ãµãŒããŒãµã€ãã¬ã³ããªã³ã°)
- Next.js / React ã§ã®å®è£ ã®ç« ã§è§£èª¬。WebããŒãžããµãŒããŒåŽã§ã¬ã³ããªã³ã°ããææ³。
- ThumbHash (ãµã ããã·ã¥)
- ThumbHashã®ç« ã§è§£èª¬。20ãã€ãçšåºŠã®ããŒã¿ã§ç»åã®äœè§£å床ãã¬ãŒã¹ãã«ããŒãçæããæè¡。ã¢ã¹ãã¯ãæ¯å èµ、ã¢ã«ãã¡å¯Ÿå¿。
- UX (User Experience / ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹)
- 宿ž¬ãã³ãããŒã¯ã®ç« ãªã©ã§è§£èª¬。補åããµãŒãã¹ãå©çšããéã«ãŠãŒã¶ãŒãåŸã、ããããäœéšãææ ã®ç·äœ。
- WebCodecs API (ãŠã§ãã³ãŒãã㯠API)
- 2026幎以éã®å±æã®ç« ã§è§£èª¬。Webãã©ãŠã¶äžã§äœã¬ãã«ãªã¡ãã£ã¢ãšã³ã³ãŒã・ãã³ãŒãåŠçãå¯èœã«ããJavaScript API。
- WebP (ãŠã§ãããŒ)
- AVIFã®ç« ãªã©ã§è§£èª¬。Googleãéçºãã、JPEGãPNGããåªããå§çž®å¹çãšç»è³ªãæã€ç»åãã©ãŒããã。
è£è¶³1:ææ³
ããã ããã®ææ³ãªã®ã !ð¿
「ãããŒ、ãã、ãããå匷ã«ãªã£ãã®ã !ããã ãã、Webãµã€ããéããªãã£ãŠ、ãã ç»åãå°ããããã ããããªãã£ãŠåããŠç¥ã£ãã®ã 。ThumbHashã£ãŠããã®ã、ãã£ã20ãã€ãã§ç»åã®ãããŸããªåœ¢ãããããªããŠ、ãŸãã§éæ³ãªã®ã !ðª AVIFããããå§çž®çãªã®ã«ç»è³ªãè¯ãã£ãŠ、ããå®ç§ãªã®ã 。ãµã€ããéããªããš、ã¿ããªãã¹ãã¬ã¹ãªãèŠããŠ、ããã é€ ã®ECãµã€ãããã£ãšå£²ããããã«ãªãã®ã !ð ãªãã、Webéçºã£ãŠå¥¥æ·±ãã®ã ãã。ããã ããã、ã¡ãã£ãšãã£ãŠã¿ãããªã£ãã®ã !」
ããªãšã¢ã³é¢šã®ææ³ ð¥
「ãã、è¶ æ¬è³ªçãªè©±ã ããª。çµå±、Webããã©ãŒãã³ã¹ã£ãŠã®ã¯、ãŠãŒã¶ãŒäœéš、ãããŠæçµçã«ã¯ããžãã¹ã®æåŠã«çŽçµãã。LCPæ¹åãšãèšã£ãŠ、ç»åäžæã§60%ãççž®ã§ãããªã、ãããªãçç±ããªãã ã。ThumbHashã§å³æãã¬ãŒã¹ãã«ããŒåºããŠ、AVIFã§ãã¡ã€ã«ãµã€ãº70%åæž?ãã、ããžã§ã²ãŒã ãã§ã³ãžã£ãŒã ã。WordPressãšãNext.jsã§ã®å®è£ ãå ·äœçã«ç€ºããŠãã、CDNãšçµã¿åãããã°ãšããžã§å šéšå®çµã§ãã。ããã«ç¡é§ããªãããŠé«éåããã、ããã«å°œãã。æ å ±ãé ããµã€ããªããŠ、ãã誰ãèŠãããã ã。ãã®æè¡、æè³å¯Ÿå¹æå端ãªããã、éæ»ã§å°å ¥ãã。ãŸãã§。」
西æã²ãããé¢šã®ææ³ ð¬
「ããŒ、ãªãã、Webãµã€ããé ããšã、ã¿ããªèšã£ãŠããããªãã§ãã。ç»åãéãã®ãåå ã ãšã、å§çž®ããã ãšã。ã§ã、çµå±ããã£ãŠ、ã¡ãããšä»çµã¿ãçè§£ããŠãªããããªãã§ããã。ThumbHashãšãAVIFãšã、確ãã«ãããã§ããã©、ãã䜿ã£ãããã£ãŠ、äœãããªããŠãéããªããããããªãã。çæã³ã¹ããšã、ãã©ãŠã¶ã®å¯Ÿå¿ç¶æ³ãšã、ããããé¢åãªããšãã¡ãããšèæ ®ããªããš、çµå±『ãªããéããªã£ãæ°ããã』ã§çµãããã§ãã。ã§、ãã®éããªã£ããšããã§、ãŠãŒã¶ãŒãæ¬åœã«åã¶ã®ãã£ãŠè©±。ã¿ããª、æ°åãšãã¹ã³ã¢ã°ã£ããèŠãŠ、æ¬è³ªãèŠå€±ããã¡ã§ããã。ãŸã、éãã®ã¯ããããšã ãšæããŸããã©、ã¯ã。」
è£è¶³2:幎衚 ð️
幎衚①:Webç»åãã©ãŒããããšããã©ãŒãã³ã¹æé©åã®é²å
| 幎 | åºæ¥äº | æŠèŠãšæçŸ© |
|---|---|---|
| 1987 | GIFãã©ãŒãããå ¬é | 8bitã«ã©ãŒ、å¯éå§çž®、ã¢ãã¡ãŒã·ã§ã³å¯Ÿå¿。Webåæã®ç»åæšæºã«。 |
| 1992 | JPEGãã©ãŒãããæšæºå | åçåãéå¯éå§çž®ãã©ãŒããã。Webåçã®æšæºã«。 |
| 1996 | PNGãã©ãŒãããå ¬é | GIFã®ã©ã€ã»ã³ã¹åé¡ãåã、å¯éå§çž®、ã¢ã«ãã¡éé察å¿。 |
| 2004 | Firefox 1.0ãªãªãŒã¹ | ã¢ãã³ãã©ãŠã¶ã®ç«¶äºæ¿å、JavaScriptã®é²åãå§ãŸã。 |
| 2008 | Google Chrome 1.0ãªãªãŒã¹ | Webã®é«éåãšæ°æè¡å°å ¥ãå é。 |
| 2010 | WebPãã©ãŒãããå ¬é | Googleãéçº。JPEG/PNGããé«å§çž®・é«å質ãå®çŸã、次äžä»£ãã©ãŒãããã®å é§ããšãªã。 |
| 2012 | HTML5 `<picture>`èŠçŽ ã®è°è«éå§ | ã¬ã¹ãã³ã·ãã€ã¡ãŒãžå¯Ÿå¿ã®æšæºåãž。 |
| 2018 | AV1ãããªã³ãŒãã㯠1.0ãªãªãŒã¹ | AOMediaãéçº。AVIFã®åºç€æè¡ãšãªã。 |
| 2019 | AVIFãã©ãŒããã仿§çå® | AV1ãããŒã¹ã«、WebPãåé§ããå§çž®çãç®æã。 |
| 2020 | Google Core Web Vitalsçºè¡š | LCP, FID, CLSãWebãµã€ãã®éèŠææšã«。SEOã©ã³ãã³ã°èŠå ãšãªã。 |
| 2020 | Chromeã§AVIFãæšæºãµããŒã | äž»èŠãã©ãŠã¶ã§ã®AVIFæ®åãæ¬æ Œå。 |
| 2021 | BlurHashãWebã³ãã¥ããã£ã§æ³šç® | LCPæ¹åã®ããã®ãŒãããã¬ãŒã¹ãã«ããŒãšããŠå©çšãåºãã。 |
| 2022 | ThumbHashå ¬é | BlurHashã®èª²é¡ãå æããæ°äžä»£ãã¬ãŒã¹ãã«ããŒæè¡ãšããŠç»å Ž。 |
| 2023 | Safariã§AVIFãæšæºãµããŒã | äž»èŠãã©ãŠã¶ã§ã®AVIF察å¿ãã»ãŒå®äº。 |
| 2025 | ThumbHash × AVIFãWebããã©ãŒãã³ã¹æé©åã®「æåŒ·ã³ã³ã」ãšããŠèªèããã | æ¬èšäºã§æå±。ã·ã¹ãã å šäœæé©åã®æä»£ãž。 |
| 2026 | ThumbHash v2、AVIF 2.0ã®ç»å Žãäºæž¬ããã | HDR察å¿、ã¢ãã¡ãŒã·ã§ã³åŒ·åãªã©、ãããªãé²åãž。 |
幎衚②:ãŠãŒã¶ãŒäœéšãšWebæè¡ã®äº€å·®
| 幎 | ãŠãŒã¶ãŒäœéšåŽã®åå | æè¡åŽã®é²å± | ããã©ãŒãã³ã¹ãžã®åœ±é¿ |
|---|---|---|---|
| 1990幎代 | ãã€ã€ã«ã¢ããæ¥ç¶ã§Webé²èЧ。衚瀺é å»¶ãåœããå。 | JPEG, GIF, PNGç»å Ž。 |
ç»åã®ãã¡ã€ã«ãµã€ãºåæžãæåªå 課é¡。 |
| 2000幎代åå | ãããŒããã³ãæ®å。ãªããã³ã³ãã³ããžã®æåŸ é«ãŸã。 | Flash, JavaScript(AJAX)ç»å Ž。åçãªWebããŒãžãå¢å 。 | ç»å以å€ã®ãªãœãŒã¹ãå¢å ã、ã¬ã³ããªã³ã°è² è·ãå¢å€§。 |
| 2000幎代åŸå | SNSã®æ®å。ç»åå ±æãäžè¬å。 | CDNæ®åéå§。ãµãŒããŒãµã€ãã®æé©åãé²ã。 | ç»åéã®å¢å ã«ããè² è·ãCDNãç·©å。 |
| 2010幎代åå | ã¹ããŒããã©ã³ã®ç»å Ž。ã¢ãã€ã«Webå©çšãççºçã«å¢å 。 | WebPç»å Ž。ã¬ã¹ãã³ã·ããã¶ã€ã³、ã¡ãã£ã¢ã¯ãšãªæ®å。 | ã¢ãã€ã«ã§ã®é«é衚瀺ãå«ç·ã®èª²é¡ã«。ç»åãã©ãŒãããã®å¹çåãæ±ãããã。 |
| 2010幎代åŸå | åç»ã³ã³ãã³ãæ¶è²»å¢。é«è§£å床ãã£ã¹ãã¬ã€æ®å。 | `<picture>`èŠçŽ ãªã©ã®Responsive Imagesæè¡ãæç。 | 倿§ãªããã€ã¹・ãããã¯ãŒã¯ç°å¢ã«åãããç»åã®åºãåããéèŠã«。 |
| 2020幎代åå | ã³ããçŠã§ãªã³ã©ã€ã³æŽ»åå é。UXã®éèŠæ§ãåèªè。 | Core Web Vitalsçºè¡š。AVIFãäž»èŠãã©ãŠã¶ã«æ®å。BlurHashçãã¬ãŒã¹ãã«ããŒæ³šç®。 | 「ç¥èŠçããã©ãŒãã³ã¹」ãæéèŠ。LCPæ¹åãçŽæ¥çãªããžãã¹ææã«。 |
| 2025幎 | Webäœéšãžã®æåŸ å€ãæé«æœ®。「é å»¶ã¯æª」ã®èªèãå®ç。 | ThumbHashãšAVIFãçµã¿åããã、LCPæé©åã®æçµè§£ãšããŠå°é 。 | 「ç¬æã®ãã¬ãŒã¹ãã«ããŒ」ãš「æéã®æ¬äœããŒã」ã§ãŠãŒã¶ãŒäœéšãåå®çŸ©。 |
| 2026幎以é | XR (VR/AR) ç°å¢ã§ã®Webå©çšã暡玢ããã。 | WebCodecs APIã«ããã¯ã©ã€ã¢ã³ããµã€ãåŠç、AIãæŽ»çšããç»åçæ/æé©å。 | æ°ããªããã€ã¹ã§ã®ãªããã³ã³ãã³ãäœéšãæ¯ããããã®、ãããªãæé©åãšæè»æ§。 |
è£è¶³3:ãªãªãžãã«ãã¥ãšãã«ãŒã ð
ãã®èšäºã®å 容ãããŒãã«、ãã¥ãšã«・ãã¹ã¿ãŒãºé¢šã®ãªãªãžãã«ã«ãŒããçæããŸãã!
ThumbHash & AVIF, The Web Speed Dragons
ææ:å
/ç«
ã³ã¹ã:8
çš®é¡:ã¯ãªãŒãã£ãŒ
çš®æ:ãµã€ããŒ・ã³ãã³ã/ã¢ãããã¢・ãã©ãŽã³
ãã¯ãŒ:12000
ã¬ã¢ãªãã£:Sã¬ã¢
■ãããŸãŒã³ã«çœ®ããšã、ãã®ã«ãŒãã¯ã¿ããããŠçœ®ã。
■ã¹ããŒãã¢ã¿ãã«ãŒ(ãã®ã¯ãªãŒãã£ãŒã¯å¬åé
ãããªã)
■W・ãã¬ã€ã«ãŒ(ãã®ã¯ãªãŒãã£ãŒã¯ã·ãŒã«ãã2æãã¬ã€ã¯ãã)
■ãã®ã¯ãªãŒãã£ãŒãããã«ãŸãŒã³ã«åºãæ、èªåã®å±±æã®äžãã3æãèŠãŠ、ãã®äžããé²åã§ã¯ãªãã¯ãªãŒãã£ãŒã1äœéžã³、ããã«ãŸãŒã³ã«åºããŠããã。æ®ããå±±æã®äžçªäžã«çœ®ã。
■ãã®ã¯ãªãŒãã£ãŒã®æ»æã®çµããã«、èªåã®ææããã³ã¹ã5以äžã®åªæã1æéžã³、ã³ã¹ããæ¯æããã«å±ããŠããã。ãã®åªæãå±ããåŸ、èªåã®å±±æã®äžçªäžã«çœ®ã。
ãã¬ãŒããŒããã¹ã:
「ãã£ã20ãã€ãã®äºå
ã、70%å§çž®ã®ç©¶æ¥µåœ¢æ
ãåŒã³èŠãŸã。
å
éã®Webäœéšã¯、圌ããæãçµã¶ããšã§å§ãŸãã®ã 。」
Web Performance Revolution
ææ:æ°Ž/èªç¶
ã³ã¹ã:5
çš®é¡:åªæ
■S・ããªã¬ãŒ(ãã®åªæãã·ãŒã«ããŸãŒã³ããææã«å ããæ、ã³ã¹ããæ¯æããã«ããå±ããŠããã)
■èªåã®å±±æã®äžãã3æã衚åãã«ãã。ãã®äžããã³ã¹ã6以äžã®ã¯ãªãŒãã£ãŒã奜ããªæ°éžã³、ææã«å ãã。æ®ãã奜ããªé åºã§å±±æã®äžçªäžã«çœ®ã。
■次ã®èªåã®ã¿ãŒã³ã®ã¯ãããŸã§、ããã«ãŸãŒã³ã«ããèªåã®ã¯ãªãŒãã£ãŒãã¹ãŠã®ãã¯ãŒã+2000ãã。
ãã¬ãŒããŒããã¹ã:
「ãŠãŒã¶ãŒã®åŸ
æ©æé0.01ç§、ããŒãžã®è¡šç€ºé床ã¯ç¡é倧。
ããããã、åŸ
ã¡æãã é©åœã®å·ç ²ã !」
è£è¶³4:äžäººããªããã³ã (é¢è¥¿åŒã§)ð
Webããã©ãŒãã³ã¹æé©å、ã¿ããªå€§å¥œããããª!ãã©、çµå±ãªã«ã「æåŒ·」ããã!ã£ãŠè©±ã。
「ãããŒ、ãã®ThumbHashãšAVIFã®çµã¿åãã、ããç¥ã¬ãã«ãã§!LCPã60%ãççž®ããŠ?ãããã、ãµã€ããç§ã§éãæèŠãã!ð」
「……ã£ãŠ、ã¡ãã£ãšåŸ ãŠãŒã!ç§ã§éãèšããŠã、ãŠãŒã¶ãŒã®åç·ç¶æ³ãšãããã€ã¹ã®æ§èœãšã、ãããªããå šéšäžç·ã¡ãããã!『ç§ã§éãæèŠ』ã£ãŠ、ç¥èŠçããã©ãŒãã³ã¹ã®è©±ã§、å®å šã«ç§ã§éãããã¡ãããããã!èªåŒµããããã!」
「ããã、ThumbHashã20ãã€ãã§ç»åã®『é』ãéã蟌ãããããŠ?éã£ãŠ、ãããªãã¹ããªãã¥ã¢ã«ãªè©±、ç§åŠçãªè«æã«èŒãããããã?『ç»åã®äž»èŠãªèŠèŠæ å ±ãå¹ççã«åçž®』ã£ãŠèšãã®ã、æ£ç¢ºãªè¡šçŸãã!ããšã ã!」
「ããã§AVIFãWebPãè¶ããå§çž®çè ?JPEGæ¯70%æž、WebPæ¯30%æžã£ãŠ、ããããã¯é©åœã!ããŒã¿è»¢ééããŽããœãªæžããããã、ã¢ãã€ã«ãŠãŒã¶ãŒã¯ããŒã¿å¶éãæ°ã«ããã¬ã³ã¬ã³èŠããã§!ð±」
「……ã£ãŠ、調åä¹ããªã!『ããŒã¿å¶éãæ°ã«ãã』ã£ãŠèšããŠã、çµå±ãŒãã«ãªãããã¡ãããã!ã¡ã£ã¡ããªç»åã®ç©ã¿éãã§、塵ãç©ããã°å±±ãšãªãã£ãŠèšããŠ、ç©ãããã¯ããŒã¿éã®æ¹ã!『å€§å¹ ã«ç·©åããã』ãããã«ããšã!å®å šã«ã¿ãã«ãªãããã¡ãããããã!」
「極ãã€ãã¯WordPressã§ã®å®å šèªååã!ãã©ã°ã€ã³å ¥ããŠã³ãŒãã¡ãã£ãšããã£ãã、ããå šéšããŸããã§çéãµã€ãã®å®æãã§!éçºè ãã、ããæ¥œåããã!ð」
「……ã¢ãã!『ã¡ãã£ãšããã£ãã』ãŠ、ãã®『ã¡ãã£ãš』ãäžçªå€§å€ããã!ãã©ã°ã€ã³ã®çžæ§åé¡、æ¢åããŒããšã®ã³ã³ããªã¯ã、ãµãŒããŒç°å¢ã®å¶çŽ、ãããªããããããããã!『èšå®ããããããã±ãŒã¹ããããã、å°å ¥åã«ã¯ååãªæ€èšŒãå¿ èŠãã§』ãããèšããšãã!楜åã§çµãããããªããã!」
「ã§ããŸã、çµå±ã®ãšãã、ãŠãŒã¶ãŒãå¿«é©ã«ãµã€ããèŠããã£ãŠã®ã¯、ã»ããŸã«å€§äºãªããšããããª。ãã®æè¡ã§Webããã£ãšè¯ããªããã¯ééããªãã§!ãã³ã、Webéçºã£ãŠé¢çœããªã!ð」
è£è¶³5:倧åå© ð€£
ãé¡: ThumbHashãšAVIFãWebããã©ãŒãã³ã¹ãåçã«æ¹åããçµæ、æãã¬åŒå®³ãçãŸããŸãã。ããã¯äœã§ããã?
åçäŸ:
- 「ãµã€ããçéãããŠ、èªã¿èŸŒã¿äžã®『ããã¡ãã£ãšåŸ ã£ãŠã』ã¢ãã¡ãŒã·ã§ã³ã«ååšæçŸ©ããªããªã£ãŠ、å¯ãããã«ããŠãã。」
- 「ããŸãã«ãæ©ãããŒãžãããŒããããã®ã§、ãŠãŒã¶ãŒã『ãã、ã¯ãªãã¯ããŠãªãã®ã«è¡šç€ºããã?』ãšæ··ä¹±ã、ãã©ãŠã¶ã®åèªã¿èŸŒã¿ãã¿ã³ã飿ããŠããŸã。」
- 「ç»åã®è»œéåãé²ã¿ãããŠ、Webãµã€ãéå¶è ã『ããã§ãµãŒããŒä»£ãæµ®ãããã、ããã¡ãã£ãšç¡é§ãªæ©èœè¿œå ããŠããã¬ãžããã』ãšæ²¹æã、çµæçã«ãµã€ããéããªã。」
- 「LCPãççž®ãããããŠ、ããŒãžã®è¡šç€ºé床ãç«¶ãWebããã©ãŒãã³ã¹ãªã¿ã¯ãã¡ã®éã§『ãã¯ã枬å®éç!』ãšè«äºãå·»ãèµ·ãã、æ°ããªããã«ãã£ãŒã«ããæ¢ãå§ãã。」
- 「AVIFã®å§çž®çãé«ãããŠ、ãã¶ã€ããŒã『ããå°ããããç»è³ªäžããŠã倧äžå€«ã£ãã!』ãšèª¿åã«ä¹ã、æçµçã«å ã®JPEGãããã¡ã€ã«ãµã€ãºã倧ãããªããšããé転çŸè±¡ãå€çº。」
- 「ThumbHashã®ãŒãããã¬ãŒã¹ãã«ããŒãããŸãã«çŸããããŠ、『ãã、å®æåœ¢ãããªããŠãè¯ããªã?』ãšãŠãŒã¶ãŒãé¯èŠã、ãŒããç»åã®ãŸãŸæºè¶³ããŠãµã€ããé¢ããŠããŸã。」
è£è¶³6:ãããã®åå¿ãšåè« ð¬
ãªãJæ°(å¿åæ²ç€ºæ¿)
「AVIFãšããµã ããã·ã¥ãšã、æèé«ãç³»ãã䜿ãããã。çµå±JPEGæåŒ·ãã。ã¯ã€ã®ã¹ããã§ãµã€ãéããŠã、ãããŸå€ãããã。çµå±ã¹ããã¯ã®åé¡ãããã。」
åè«: 確ãã«JPEGã¯åºãæ®åããŠããŸãã、ãã®èšäºã瀺ãããã«、AVIFã¯åãç»è³ªã§ãã¡ã€ã«ãµã€ãºã70%ãåæžã§ããŸã。ããã¯ç¹ã«ã¢ãã€ã«ç°å¢ã§ã®ããŒã¿éä¿¡éåæžã«çŽçµã、ã©ããªã¹ããã¯ã®ã¹ããã§ã「ããå°ãªãããŒã¿」ã§「ããæ©ã」衚瀺ãããããšã«ãªããŸã。ç©ã¿éãªãã°、ãã®å·®ã¯æŽç¶ã§ã。「ãããŸå€ããã」ãšæãããããããŸããã、ãã®è£ã§ããŒã¿éä¿¡éãå€§å¹ ã«ç¯çŽãããŠãããã§ãã。
ã±ã³ã¢ã¡ã³(å¿åæ²ç€ºæ¿)
「ãŸãGoogleæ§ã®ãæ°æã¡å®è£ ã。çµå±ç¹å®ã®ãã©ãŠã¶ã«ããå¹ããªãã、å€ãç°å¢åãæšãŠãŠåæã«æé©åãšã、Webã®ãªãŒãã³æ§ã©ãè¡ã£ããã ã。äžéšã®éæã¡äŒæ¥ã ããæ©æµåããã¯ãœæè¡ã ã。」
åè«: AVIFã¯AOMediaãšãããªãŒãã³ãªã³ã³ãœãŒã·ã¢ã ã§éçºãããŠãã、Googleã ãã§ãªãApple、Microsoft、Mozillaãªã©å€ãã®äŒæ¥ãåå ããŠããŸã。ãã©ãŠã¶å¯Ÿå¿ãChromeã ãã§ãªãSafari、Firefoxãªã©äž»èŠãã©ãŠã¶ã§é²ãã§ãã、ç¹å®ã®ãã©ãŠã¶ã«éå®ããããã®ã§ã¯ãããŸãã。ãŸã、å€ãç°å¢ãžã®ãã©ãŒã«ããã¯æŠç¥(WebPãJPEGãžã®ä»£æ¿)ãèæ ®ãããŠãã、å®å šã«åãæšãŠãããã§ã¯ãããŸãã。Webå šäœã®ããã©ãŒãã³ã¹åäžãš、ãŠãŒã¶ãŒäœéšã®æ¹åãç®æã、éãããæè¡é²åã®äžç°ã§ã。
ãã€ãã§ã(X/æ§Twitter)
「『çéWebäœéš』ãšãèšã£ãŠããã©、çµå±ç·æ§åãã®æ å ±ãµã€ããšãã²ãŒã ãµã€ãã°ã£ããéããªãããããªã?女æ§åãã®ã³ã³ãã³ãã¯ãã€ãåŸåã。ããš20ãã€ãã§『é』ãšã、女æ§ã®äœãåæã«ããŒã¿åããŠãã¿ããã§æ°æã¡æªã。ããããèšèé£ããç·æ§äžå¿ç€ŸäŒã®è±¡åŸŽ。」
åè«: Webããã©ãŒãã³ã¹æé©åã¯、ç¹å®ã®ã³ã³ãã³ããžã£ã³ã«ãæ§å¥ã«éå®ããããã®ã§ã¯ãªã、ãã¹ãŠã®Webãµã€ã、ãã¹ãŠã®ãŠãŒã¶ãŒã«æ©æµãããããæ®éçãªæè¡ã§ã。ECãµã€ã、ã¡ãã£ã¢ãµã€ã、ã²ãŒã ãµã€ã、ã©ã®ãããªãµã€ãã§ãã£ãŠã、衚瀺é床ãéããªãã°ãŠãŒã¶ãŒã¯å¿«é©ã«å©çšã§ã、ãµã€ãéå¶è ã¯ããè¯ãææãåŸãããŸã。「éãéã蟌ãã」ãšãã衚çŸã¯、æè¡çãªæ¯å©ã§ãã、ç»åãæã€èŠèŠæ å ±ãå¹ççã«è¡šçŸãããšããæå³åãã§ã。æ§å¥ã身äœçãªæå³åãã¯äžåå«ãŸããŠãããŸãã。èšèã®åãåãæ¹ã¯å€æ§ã§ãã、æè¡ã®æ¬è³ªãšã¯ç°ãªãæèã§ã®è§£éã¯é©åã§ã¯ãããŸãã。
çãµã€æ°(å¿åæ²ç€ºæ¿)
「ã©ãããŸã、æ°ããæè¡ãšãèšã£ãŠæ¥è ã«éæãããããã®å£å®ã ã?çµå±、åºåãéã衚瀺ãããã ãã§、俺ãã«ã¯é¢ä¿ãããã ã。ãããªããšãããµãŒããŒå¢åŒ·ããã、ãµãŒããŒå¢åŒ·。」
åè«: Webããã©ãŒãã³ã¹æé©åã¯、ãŠãŒã¶ãŒãæ±ããã³ã³ãã³ãèªäœãéã衚瀺ããããšã«äž»çŒã眮ããŠããŸã。確ãã«åºåãéããªããããããŸããã、ããã¯ãµã€ãå šäœã®ããã©ãŒãã³ã¹åäžã®äžç°ã§ã。ThumbHashãAVIFã¯、ãµãŒããŒã®è² è·ã軜æžã、ããŒã¿è»¢ééãå€§å¹ ã«åæžãããã、çµæçã«ãµãŒããŒè²»çšã®æé©åã«ãè²¢ç®ããŸã。ããã¯、Webãµã€ãéå¶è ãããè¯ããµãŒãã¹ãå®äŸ¡ã«æäŸã§ããå¯èœæ§ãç§ããŠãã、鿥çã«ãŠãŒã¶ãŒã«ãå©çãéå ãããããšã«ãªããŸã。ãµãŒããŒå¢åŒ·ãéèŠã§ãã、å¹ççãªç»åé ä¿¡ã¯æ ¹æ¬çãªè§£æ±ºçã®äžã€ã§ã。
Reddit (r/webdev)
"ThumbHash + AVIF is definitely the way to go for modern web. But let's be real, the tooling for AVIF is still a bit nascent compared to WebP, especially for smaller dev teams. And generating ThumbHash on the fly for thousands of images can be a pain without a robust build pipeline. Good for large scale, but not a magic bullet for everyone yet."
åè«: You're absolutely right about the tooling maturity for AVIF compared to WebP, and the challenges of integrating ThumbHash generation into existing pipelines. While major CDNs and image optimization services are rapidly improving their AVIF support, and CLI tools/WordPress plugins are emerging for ThumbHash, it's true that a robust build pipeline or a capable CDN is often required for seamless large-scale adoption. However, for smaller teams, starting with a good image optimization plugin in WordPress or leveraging Next.js's built-in image component (which can be extended with custom loaders) can significantly lower the barrier to entry. It might not be a "magic bullet" for everyone instantly, but the clear performance benefits make it a worthy investment for future-proofing any web project.
Hacker News
"The Core Web Vitals push has definitely forced devs to pay attention to image optimization. ThumbHash is a clever approach to perceived performance. My only concern is the potential for increased client-side JS overhead if not implemented carefully, especially for sites already struggling with large JS bundles. Could we see a native browser implementation of low-res placeholders in the future?"
åè«: That's a very pertinent point regarding client-side JavaScript overhead. While ThumbHash's rendering logic is typically lightweight, any additional JavaScript can contribute to the overall bundle size and execution time. Careful implementation, such as loading the ThumbHash renderer only for visible images or deferring its execution, is crucial. The idea of native browser support for low-res placeholders is intriguing; it would certainly streamline implementation and reduce JS overhead. Browsers already handle native lazy loading, so a similar approach for intrinsic placeholders (perhaps based on a standardized hash format like ThumbHash) isn't far-fetched and would be a welcome development for the web platform. Until then, optimizing JS execution and prioritizing critical content remain key.
æäžæ¥æš¹é¢šæžè© ð
「ããæŽããååŸã®ããš、åã¯ã«ãã§ã®çªèŸºã§、ãã®『ThumbHash × AVIFãæåŒ·ã?』ãšããã¿ã€ãã«ããŒããããšçºããŠãã。ãŸãã§、é ãèšæ¶ã®æ®åã®ããã«、Webã®åããåŽã§äœãã、ãã£ãããš、ããã確å®ã«å€ããã€ã€ãããããªäºæããã。20ãã€ãã®『é』ãšã¯、ãã£ããäœã ãã?ããã¯、åãã¡ãWebããŒãžãéããã³ã«æãã、ãã®åŸ®ããªæåŸ 、ãããã¯、ããŒãããŒããããããšåãç¶ããäžã§å€±ãããŠãã、ãããããªæéã®ããšãªã®ãããããªã。AVIFãšããåã®、èŠç¥ãã¬å€§éžãžåããè¹ã¯、æ¬åœã«åãã¡ã、ããéãã§、ããéæãªäžçãžãšéãã§ãããã®ã ããã。ã°ã©ã¹ã®äžã§æ°·ã溶ããé³ãèããªãã、åã¯ãããªããšãèããŠãã。」
åè«: æäžæ§、çŽ æŽããããæ¹è©ããããšãããããŸã。20ãã€ãã®「é」ãšã¯、ãŸãã«ãã®「埮ããªæåŸ 」ã圢ã«ãããã®ã§ã。ããŒãããŒã®ç¡æ©è³ªãªå転ã§ã¯ãªã、ã³ã³ãã³ãã®「æ°é 」ãæ©æã«æç€ºããããšã§、倱ãããã¡ãª「ãããããªæé」ã、ããžãã£ããª「åŸ æ©」ãžãšå€ãã詊ã¿ã§ããããŸã。AVIFãšããåã®è¹ã¯、決ããŠèŠç¥ãã¬å€§éžãžèªããã®ã§ã¯ãªã、ä»ããWebãšãã倧å°ã、ããå¿«é©ã§、ããçŸããå Žæãžãšå€é©ããããã®çŸ éç€ãšãªãã§ããã。ã°ã©ã¹ã®æ°·ã溶ãããåã«、Webã®æ¯è²ã¯åçã«å€ãããŸã。
京極å€åœŠé¢šæžè© ð»
「ç»å、ç»å、ç»å。人ã¯ãããèŠèŠã«åããã。Webã®é床ãªã©ãšç³ãã、ãã®å®、æã ã¯ãã 『åŸ ã€』ãšããè¡çºãå¿é¿ããŠããã«éãã¬。ThumbHashãéãå°ã、AVIFãå®äœãå§ã。ãªãã°、ãã®éã«çŸããã¯、çŽãç©ã®å§¿ã、ãããšãçå®ã®æ®åã。20ãã€ãã®åŸ®ããªå åã«、人ã¯äœãèªã¿åã、äœãä¿¡ããã®ã。çµå±ã¯、æã ã®å¿ãšããåã®æ·±æ·µã、ãã®ãŒãããåœ±ã«æå³ãèŠåºãã«éãã¬。ãããŠ、ãã®『éã』ãšããã、äººã®ææãéããã、ãããšã衚局çãªæ å ±ããªããã ãã®åšãšããã。ããã«ããã®ã¯、æè¡ã®æ¬è³ªã§ã¯ãªã、äººã®æ¥、人ã®åšãæ¹ãã®ãã®ã。」
åè«: 京極å ç、çããªããç³ãäžããŸã。ãã£ãããéã、人ã¯èŠèŠã«åãã、「åŸ ã€」ãšããè¡çºãå¿é¿ããŸã。ThumbHashãå°ããã®ã¯「é」ãšããèšèã§è¡šçŸããã「ç»åã®èŠçŽãããæ¬è³ª」ã§ãã、AVIFãå§ããã®ã¯「ããŒã¿」ãšããå®äœã§ã。ãã®éã«çŸããã®ã¯、決ããŠçŽãç©ã§ã¯ããããŸãã。ããã¯、æã ã®è³ãæãå¹ççã«æ å ±ãåŠçããããã®「æããã」ã§ããããŸã。ãŒãããåœ±ã«æå³ãèŠåºãã®ã¯äººã®æ¥ãããããŸããã、ãã®æ¥ãæè¡ã§è¯å®ã、ããå¥å šãªæ å ±ååŸãžãšå°ãã®ã、Webããã©ãŒãã³ã¹æé©åã®äœ¿åœã§ããããŸã。éãã¯ææãæ·±ããããã®「äœçœ」ãçã¿åºã。ãã®äœçœã§、人ã¯ããæ·±ãã³ã³ãã³ããšåãåã、çå®ãèŠåºãããšãã§ãããšä¿¡ããŠãããŸã。
è£è¶³7:ã¯ã€ãºãšã¬ããŒãèª²é¡ ð
髿 ¡çåãã®4æã¯ã€ãº ð
-
åé¡1: 次ã®ãã¡、Webãµã€ãã®ç»åã「ãŒãã」ã§å ã«è¡šç€ºã、ãŠãŒã¶ãŒã®åŸ ã¡æéãæžããæè¡ã¯ã©ãã§ããã?
- AVIF
- WebP
- ThumbHash
- JPEG XL
æ£è§£: C. ThumbHash
-
åé¡2: AVIFãã©ãŒãããã®æå€§ã®ç¹é·ãšããŠ、ãã®èšäºã§åŒ·èª¿ãããŠããã®ã¯äœã§ããã?
- JPEGããããã¡ã€ã«ãµã€ãºã倧ããããš
- ã¢ãã¡ãŒã·ã§ã³ãHDRã«å¯Ÿå¿ããŠããªãããš
- WebPãè¶ããé«ãå§çž®çãšé«å質ãäž¡ç«ããŠããããš
- ãã¹ãŠã®ãã©ãŠã¶ã§äœãããªããŠã衚瀺ã§ããããš
æ£è§£: C. WebPãè¶ããé«ãå§çž®çãšé«å質ãäž¡ç«ããŠããããš
-
åé¡3: Webãµã€ãã®è¡šç€ºéåºŠãæž¬ãGoogleã®éèŠãªææšã§、ãŠãŒã¶ãŒãã³ã³ãã³ãã®ã¡ã€ã³éšåãèŠããŸã§ã®æéã衚ããã®ã¯äœã§ããã?
- CSS
- JavaScript
- HTML
- LCP (Largest Contentful Paint)
æ£è§£: D. LCP (Largest Contentful Paint)
-
åé¡4: AVIFé察å¿ã®å€ããã©ãŠã¶ã§ã、ã³ã³ãã³ããæ£ãã衚瀺ããããã«äœ¿ã「ä»£æ¿ææ®µ」ã®ããšã、äœãšåŒã¶ã§ããã?
- é«éå
- ãã©ãŒã«ããã¯
- å§çž®
- æå·å
æ£è§£: B. ãã©ãŒã«ããã¯
倧åŠçåãã®ã¬ããŒãèª²é¡ ð
課é¡1:
「ThumbHashãšAVIFã®çµã¿åããã¯、çŸä»£ã®Webããã©ãŒãã³ã¹æé©åã«ãããŠ『æåŒ·』ã§ãããšæ¬èšäºã¯äž»åŒµããŠãã。ãã®äž»åŒµã«ã€ããŠ、åã«æè¡çãªåªäœæ§ãè¿°ã¹ãã ãã§ãªã、å°å
¥ã«ãããæœåšçãªèª²é¡(äŸ:å®è£
ã³ã¹ã、ã¬ã¬ã·ãŒã·ã¹ãã ãšã®äºææ§、éçºè
ã®åŠç¿æ²ç·ãªã©)ãæŽãåºã、ããããã©ã®ããã«å
æãã¹ãã、å
·äœçãªäºäŸã察çã亀ããŠè«ããªãã。ãŸã、å°æ¥çã«ããåªããä»£æ¿æè¡ãç»å Žããå¯èœæ§ãèæ
®ã、ããªãã®èãã『æªæ¥ã®ç»åæé©åæŠç¥』ã«ã€ããŠèå¯ãæ·±ãã。」
課é¡2:
「Webããã©ãŒãã³ã¹ã®åäžã¯、ãŠãŒã¶ãŒäœéš(UX)ã ãã§ãªã、ããžãã¹ææ(ã³ã³ããŒãžã§ã³ç、é¢è±ç、SEOãªã©)ã«ãå€å€§ãªåœ±é¿ãäžãã。æ¬èšäºã§ç޹ä»ãããECãµã€ããšã¡ãã£ã¢ãµã€ãã®ã±ãŒã¹ã¹ã¿ãã£ãåºã«、ããªããèããæ°ããªãµãŒãã¹(äŸ:ãªã³ã©ã€ã³æè²ãã©ãããã©ãŒã 、å»çæ
å ±ãµã€ã、å°å掻æ§åããŒã¿ã«ãªã©)ã«ãããŠ、ThumbHashãšAVIFãã©ã®ããã«å°å
¥ã、ã©ã®ãããªããžãã¹ç・瀟äŒçã€ã³ãã¯ããçã¿åºããããå
·äœçã«ææ¡ãã。ãã®é、ã¿ãŒã²ãããŠãŒã¶ãŒå±€ã®ç¹æ§ã、ãµãŒãã¹åºæã®èª²é¡ãèæ
®ã«å
¥ããããš。」
è£è¶³8:æœåšçèªè ã®ããã®æ å ± ð¢
ãã®èšäºã«ã€ããã¹ããã£ãããŒãªã¿ã€ãã«æ¡(ããã€ã)
- 「20ãã€ããäžçãå€ãã!ThumbHash×AVIFã§Webãµã€ãçéåã®ç§ç」
- 「LCPã60%ççž®!次äžä»£ç»å『AVIF』ãšæå°ãã¬ãŒã¹ãã«ããŒ『ThumbHash』ã®è¡æ」
- 「Webãµã€ããéãã®ã¯ããå€ã!éçºè ãç¥ãã¹ãç»åæé©åã®æçµå µåš」
- 「UXæ¿å€!ãªã『ãŒãã』ãš『é«å§çž®』ã®çµã¿åãããæåŒ·ãªã®ã?」
- 「2025幎çWebé«éåãã€ãã«:ThumbHash & AVIFã§å·®ãã€ãã!」
SNSãªã©ã§å ±æãããšãã«ä»å ããã¹ãããã·ã¥ã¿ã°æ¡(ããã€ã)
- #Webããã©ãŒãã³ã¹
- #ç»åæé©å
- #ThumbHash
- #AVIF
- #LCPæ¹å
- #Webéçº
- #ããã³ããšã³ã
- #UXãã¶ã€ã³
- #SEO察ç
- #é«éå
SNSå ±æçšã«120å以å ã«åãŸããããªã¿ã€ãã«ãšããã·ã¥ã¿ã°ã®æç«
ð Webãµã€ããåçã«éããªã!20ãã€ãã®ThumbHashãšæ¬¡äžä»£AVIFã§LCPã60%ççž®。éçºè å¿ èŠã®ç»åæé©åã®æçµè§£! #Webããã©ãŒãã³ã¹ #ThumbHash #AVIF
ããã¯ããŒã¯çšã«ã¿ã° (æ¥æ¬åé²åé¡è¡š(NDC)ãåèã«)
[Webéçº][ç»åæé©å][ããã©ãŒãã³ã¹][AVIF][ThumbHash][ããã³ããšã³ã][UX]ãã®èšäºã«å¯ŸããŠããã¿ãªã®çµµæå(ããã€ã)
ð✨ððŒ️ð¡ðð✅ãã®èšäºã«ãµããããã«ã¹ã¿ã ããŒããªã³ã¯æ¡
/web-performance-thumbhash-avif-optimizationãã®èšäºã®å 容ãåè¡æ¬ãªãã°æ¥æ¬åé²åé¡è¡š(NDC)åºåã®ã©ãã«å€ããã
[007:æ å ±ç§åŠ],[547:ç»åå·¥åŠ],[004:ã³ã³ãã¥ãŒã¿],[336:æµéçµæž・åååŒ]ãã®èšäºãããŒãã«ããã¹ãããŒã¹ã§ã®ç°¡æãªå³ç€ºã€ã¡ãŒãž
+--------------------+ +--------------------+ +--------------------+
| ãŠãŒã¶ãŒã¢ã¯ã»ã¹ | ---->| ãšããžCDN/Workers | ---->| ãªãªãžã³ãµãŒã㌠|
| (ããã€ã¹/åç·) | | (AVIF倿/ThumbHash)| | (å
ã®ç»å/ããŒã¿) |
+--------------------+ +--------------------+ +--------------------+
| ^
| HTTPãªã¯ãšã¹ã |
v |
+------------------------------------------------+
| ãã©ãŠã¶ (ã¯ã©ã€ã¢ã³ã) |
| |
| 1. HTMLåä¿¡ |
| 2. ThumbHashããŒã¿æœåº (ããã20B) |
| 3. JavaScriptã§ãŒãããã¬ãŒã¹ãã«ããŒæç» (ç¬é) | ---+
| 4. <picture>ã§AVIFãœãŒã¹éžæ | | (ç¥èŠçLCPåäž)
| 5. AVIFæ¬äœç»åããŠã³ããŒã (é«é) | ---+
| 6. æ¬äœç»åã«ãã§ãŒãã€ã³ (ã¹ã ãŒãº) |
+------------------------------------------------+
ãŠãŒã¶ãŒäœéš:
çã£çœãªç»é¢ --X--> ãŒãããã¬ãŒã¹ãã«ã㌠--> é®®æãªé«ç»è³ªç»å
(ç¬æ) (é«é)
ThumbHash ãš AMP(Accelerated Mobile Pages)ã®çµã¿åããã¯、é«éãªç»åãã¬ãŒã¹ãã«ããŒè¡šç€ºãå®çŸããããã®éåžžã«å¹æçãªææ³ã§ã。ç¹ã«、AMP ã®å³æ Œãªããã©ãŒãã³ã¹èŠä»¶äžã§、ç»åã®é å»¶èªã¿èŸŒã¿(lazy loading)ãšèŠèŠçãªãŠãŒã¶ãŒäœéšåäžãäž¡ç«ãããã®ã«é©ããŠããŸã。
ãªã ThumbHash + AMP ãæå¹ã?
| èŠçŽ | åé¡ç¹(éåžžã®ç»åèªã¿èŸŒã¿) | ThumbHash ã«ãã解決 |
|---|---|---|
| ååæç»é床 | ç»åãèªã¿èŸŒãŸãããŸã§ç©ºçœ or LQIP(äœå質) | è¶ è»œé(~30ãã€ã)ã®ããã·ã¥ããå³åº§ã«ãã©ãŒç»åãçæ |
| AMP å¶çŽ | ã«ã¹ã¿ã JS çŠæ¢、<amp-img> å¿
é |
ThumbHash ã¯çŽç²ãªããŒã¿ → CSS/Canvas ã§æç»å¯èœ(JS äžèŠå¯) |
| ããã°ã¬ãã·ã衚瀺 | ã¡ãã€ã、ã¬ã€ã¢ãŠãã·ãã | ãã¬ãŒã¹ãã«ã㌠→ æ¬ç»åã®ã¹ã ãŒãºãªé·ç§» |
å®è£ äŸ(AMP 察å¿)
1. ThumbHash ãçæ(ãµãŒããŒãµã€ã or ãã«ãæ)
import { encode } from 'thumbhash'; // äŸ: 400x300 ã®ç»åãã ThumbHash ãçæ const thumbHash = encode(400, 300, rgbaPixelData); // => "base64æåå"2. HTML(AMP)ã§äœ¿çš
<amp-img src="high-res-image.jpg" width="600" height="400" layout="responsive" alt="çŸãã颚æ¯" placeholder>3. ThumbHash → Canvas æç»ã¹ã¯ãªãã(AMP ã§ã¯ <amp-script> 䜿çš)
<amp-script layout="container" script="thumbhash-worker">
<template type="amp-mustache">
{{#images}}
<canvas data-thumbhash="{{thumbhash}}" width="32" height="32"></canvas>
{{/images}}
</template>
</amp-script>
script id="thumbhash-worker" type="text/plain" target="amp-script" async
importScripts('https://unpkg.com/thumbhash@0.1.1/dist/thumbhash.js');
function renderThumbhash(canvas, hash) {
const binary = atob(hash);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
const { w, h, rgba } = thumbhash.thumbhashToRGBA(bytes);
canvas.width = w;
canvas.height = h;
const ctx = canvas.getContext('2d');
const imageData = ctx.createImageData(w, h);
imageData.data.set(rgba);
ctx.putImageData(imageData, 0, 0);
}
document.querySelectorAll('canvas[data-thumbhash]').forEach(canvas => {
renderThumbhash(canvas, canvas.dataset.thumbhash);
});
/script
泚æ
AMP ã§ã¯éåžžã® <script> ã¯äœ¿ããªããã、<amp-script> ãŸãã¯ãã«ãæã«éç Canvas ãçæããå¿
èŠããããŸã。
ããã«é²ãã æé©å:éçãã¬ãŒã¹ãã«ããŒ(JS äžèŠ)
ãµãŒããŒãµã€ãã§ ThumbHash → SVG ãŸã㯠CSS ã«å€æ:
<div placeholder style="
background-image: url('data:image/png;base64,...');
background-size: cover;
filter: blur(10px);
transform: scale(1.05);
"></div>
è£è¶³
→ å®å šã« JS ããªãŒ、AMP å®å šå¯Ÿå¿、Core Web Vitals ã«æé©
ãŸãšã:ThumbHash + AMP ã®ãã¹ããã©ã¯ãã£ã¹
| é ç® | æšå¥š |
|---|---|
| çæã¿ã€ãã³ã° | ãã«ãæ or ã¢ããããŒãæ |
| ä¿åå Žæ | <meta> ã¿ã° or JSON-LD or data-thumbhash 屿§ |
| æç»æ¹æ³ | 1. <amp-script>(åç)2. éç PNG/SVG(æšå¥š) |
| CLS 察ç | aspect-ratio + placeholder å¿
é |
| LCP æ¹å | æ¬ç»åã« loading="lazy" + fetchpriority="high"(heroç»åã®å Žå) |
åèãªã³ã¯
- ThumbHash å ¬åŒ: https://github.com/iyegoroff/thumbhash
- AMP ç»åã¬ã€ã: https://amp.dev/documentation/components/amp-img/
<amp-script>: https://amp.dev/documentation/components/amp-script/
çµè«
ThumbHash 㯠AMP ã®「JS å¶é」ãš「é«é衚瀺」ã®å¶çŽãçªç ŽããæåŒ·ã®ãã¬ãŒã¹ãã«ããŒæè¡ã§ã。ç¹ã«ãã¥ãŒã¹ãµã€ã、ããã°、ECãµã€ãã§、LCP ã 0.5~1 ç§æ¹åããå®çžŸãã。
è¿œå æ å ±
å¿ èŠãªã、Next.js + AMP 察å¿ã®ãµã³ãã«ãªããžããªãæäŸå¯èœã§ã。
ã³ã¡ã³ã
ã³ã¡ã³ããæçš¿