2026-03-19 · 2026-07-26 æŽæ°
WebPã³ã³ããŒã¿ãŒïŒç»åãWebPã«å€æããæ¹æ³ïŒå®éã®ãµã€ãºä»ãïŒ
å°ããªãŠã§ããã¡ã€ã«ã®ããã«ãJPEGãšPNGç»åãWebP圢åŒã«å€æã§ããŸããæ¬èšäºã§ã¯ãæ£ç¢ºãªæž¬å®ãµã€ãºãcwebpã³ãã³ãã®äœ¿çšæ³ãPythonããã©ãŠã¶ã«ããå®è£ æ¹æ³ããããŠäºææ§ãä¿ã€ããã®JPEG/PNGãã©ãŒã«ããã¯æŠç¥ãç¶²çŸ çã«è§£èª¬ããŸãã

æçµæŽæ°æ¥: 2026幎7æ26æ¥
ç»åãWebPã«å€æããããšã¯ããŠã§ãããã©ãŒãã³ã¹ãåäžãããããã®æãæè»œã§å€§ããªæ¹åç¹ã®äžã€ã§ããWebPã¯ãåãã³ã³ãã³ãã®å ŽåãJPEGãããçŽ25ã35%å°ãããPNGãããã¯ããã«å°ãããµã€ãºã§ãããªããããã©ãŠã¶ãµããŒãã¯çŽ98%ã«éããŠããŸããæ¬ã¬ã€ãã§ã¯ãæåŸ ã§ããæž¬å®ããããã¡ã€ã«ãµã€ãºãšãšãã«ãç»åãWebPã«å€æããæ¹æ³ãšãäŸç¶ãšããŠJPEGãå¿ èŠãšãããã©ãŠã¶ã®ããã®ãã©ãŒã«ããã¯æ¹æ³ã解説ããŸãã
ã¯ã€ãã¯ã¢ã³ãµãŒïŒWebPãžã®å€ææ¹æ³ã¯ïŒ
ã¹ããŒããšãããåŠçã«ã¯cwebpã³ãã³ãã©ã€ã³ã䜿çšããåçºã®å€æã«ã¯ãã©ãŠã¶ã³ã³ããŒã¿ãŒããã¹ã¯ãªããã«ã¯Pillowã䜿çšããã®ã䟿å©ã§ããäžè¬çãªåçã®å Žåãç»è³ªãåãããJPEGâWebPãžã®å€æã§ãã¡ã€ã«ãµã€ãºãçŽ30ã45%åæžãããŸãã
| Source | Method | Result |
|---|---|---|
| One image, no install | ãã©ãŒããã倿ããŒã« | ã¢ããããŒãããWebPãéžæããŠããŠã³ããŒã |
| A folder of images | cwebp CLI |
ã¹ã¯ãªããåå¯èœã§å¶éãªã |
| A build pipeline | Pillow / sharp | ã³ãŒãã«çµã¿èŸŒã¿å¯èœ |
| PNG graphics | cwebp -lossless |
ããå°ããªãã¹ã¬ã¹ã®WebP |
WebPã¯å®éã«ã©ãã ãç¯çŽã§ããã®ãïŒ
èŠèŠçã«äžèŽããç»è³ªã§å€æãããã1400Ã933ãã¯ã»ã«ã®åçã§æž¬å®ããçµæïŒ
| Format | Size | vs JPEG |
|---|---|---|
| JPEG q85 | 111 KB | baseline |
| WebP q80 | 60 KB | â46% |
| AVIF q68 | 44 KB | â60% |

PNGã°ã©ãã£ãã¯ã®å Žåããã¹ã¬ã¹WebPã¯éåžžãåããã¯ã»ã«å質ã®PNGããã20ã30%å°ãããééæ§ã®ããUIã¢ã»ããã«åœ¹ç«ã¡ãŸãããã¹ãŠã®ãã©ãŒãããã§åããœãŒã¹ã䜿çšããããšã§ããã®å·®ãæããã«ãªããŸãïŒ

ãã¹ãŠã®ãã©ãŒãããã®æ¯èŒã¯ãimage formats explainedã§ç¢ºèªã§ããŸãã
WebPãšAVIFãã©ã¡ããéžã¶ã¹ããïŒ
ã©ã¡ããJPEGããå°ããã§ãããAVIFã¯WebPãããããã«20ã30%å°ããããšã³ã³ãŒããé
ãããã©ãŠã¶ãµããŒããè¥å¹²å£ããŸããã»ãšãã©ã®ãµã€ãã«ãšã£ãŠã®å®çšçãªçãã¯ãäž¡æ¹ïŒAVIFãšWebPïŒãåºããJPEGããã©ãŒã«ããã¯ãšããŠçšæãã<picture>èŠçŽ ã«åãã©ãŠã¶ãæããµããŒããã圢åŒãæäŸãããããšã§ããäžã€ãã远å ã§ããªãå Žåã¯ããšã³ã³ãŒããéããµããŒãç¯å²ãåºããããWebPã®æ¹ãå®å
šãªéžæã§ããAVIFã®å°å
¥æºåãã§ããããAVIF vs WebP comparisonãåç
§ããŠãã ããã
æ¹æ³1ïŒãã©ãŠã¶ã³ã³ããŒã¿ãŒ
åäžã®ç»åã䜿çšããå Žåã¯ããã©ãŒããã倿ããŒã«ã䜿çšããŸããç»åãã¢ããããŒãããWebPãéžæããåçã®å Žåã¯ç»è³ªã80çšåºŠã«èšå®ïŒã°ã©ãã£ãã¯ã®å Žåã¯ãã¹ã¬ã¹ïŒããŠããŠã³ããŒãããŸãããªã¢ã«ã¿ã€ã ã§ã®ç»è³ª/ãµã€ãºå¶åŸ¡ãè¡ãã«ã¯ãSquooshãã¹ã©ã€ããŒãåããã«ã€ããŠåºåãµã€ãºã衚瀺ããŸãã
æ¹æ³2ïŒcwebpã³ãã³ãã©ã€ã³
cwebpã¯å
¬åŒã®WebPãšã³ã³ãŒããŒã§ãããé«éã§ã¹ã¯ãªããåã容æã§ãã
## JPEG/PNGãããã¹ã·ãŒãªWebPïŒç»è³ª80ïŒ
cwebp -q 80 input.jpg -o output.webp
## ãã¹ã¬ã¹WebPïŒã°ã©ãã£ãã¯ãã¹ã¯ãªãŒã³ã·ã§ãããã·ã£ãŒããªããã¹ãã«æé©ïŒ
cwebp -lossless input.png -o output.webp
## å¹
1600pxã«ãªãµã€ãºããªãã倿
cwebp -q 80 -resize 1600 0 input.jpg -o output.webp
## å
šãã©ã«ãã䞊ååŠç
mkdir -p out
ls *.jpg | xargs -P 4 -I {} cwebp -q 80 {} -o out/{}.webp
ãã³ãŒãããã¯ããã«ã¯ãdwebpãéã®åŠçãè¡ããŸãããã§ã«äœ¿çšããŠããå Žåã¯ãImageMagickã®magickãWebPã®èªã¿æžããå¯èœã§ãã䞊åãã©ã«ããã¿ãŒã³ã«ã€ããŠã¯ãbatch resize guideãåç
§ããŠãã ããã
æ¹æ³3ïŒPython (Pillow)
ãã«ãã¹ãããããµãŒããŒçšéã®å ŽåãPillowã䜿çšããŠå€æãè¡ããç»è³ªãããã°ã©ã çã«å¶åŸ¡ã§ããŸãã
from PIL import Image
from pathlib import Path
def to_webp(src: Path, dest: Path, quality: int = 80, lossless: bool = False):
with Image.open(src) as img:
img.save(dest, "WebP", quality=quality, lossless=lossless, method=6)
for f in Path("images").glob("*"):
if f.suffix.lower() in (".jpg", ".jpeg", ".png"):
to_webp(f, Path("out") / f"{f.stem}.webp", quality=80)
method=6ã¯æãæéãããããæé«ã®å§çž®å¹çãçºæ®ããŸããã¢ããããŒãæã«äžåºŠã ããšã³ã³ãŒãããå Žåãªã©ã«ã¯é©ããŠããŸãããã¹ã¬ã¹ã°ã©ãã£ãã¯ã®å Žåã¯ãlossless=Trueãæž¡ããŠãã ããã
WebPãšãã©ãŒã«ããã¯ãçµã¿åãããŠé ä¿¡ããæ¹æ³ã¯ïŒ
WebPã®ãµããŒãçã¯çŽ98%ã§ãããæ®ãã®2%ïŒå€ãSafariãäžéšã®åã蟌ã¿ãã©ãŠã¶ïŒã¯JPEG/PNGã®ãã©ãŒã«ããã¯ãå¿
èŠã§ãã<picture>èŠçŽ ã䜿çšããŸãïŒ
<picture>
<source srcset="/img/photo.webp" type="image/webp">
<img src="/img/photo.jpg" alt="Description" width="800" height="600" loading="lazy">
</picture>
ãã©ãŠã¶ã¯ãµããŒãããæåã®ã¿ã€ããéžæããŸããäœã衚瀺ãããªãäºæ
ãé²ããããJPEGã®srcãæã€å®éã®<img>ã¿ã°ãæçµãã©ãŒã«ããã¯ãšããŠæ®ããŠãã ãããAVIFãçæããå Žåã¯ããããæåã®<source>ãšããŠè¿œå ããŠãã ãã â AVIF vs WebP comparisonãåç
§ããŠãã ããã
ã©ã®ãããªç»è³ªãšã¡ãœããèšå®ã䜿çšãã¹ããïŒ
ãã¹ã·ãŒãªWebPåçã®å Žåãç»è³ª75ã80ãæé©ãªã¹ã€ãŒãã¹ãããã§ããããã¯ãéåžžã®é²èЧè·é¢ã§ã¯ç®ã«èŠããªãæå€±ã䌎ãå°ããªãã¡ã€ã«ãµã€ãºãå®çŸããŸãã70ãäžåããšãæ»ãããªã°ã©ããŒã·ã§ã³ãèã®è²èª¿ã«ã¢ãŒãã£ãã¡ã¯ããåºå§ããŸãã85ãè¶
ãããšã人éã«ã¯èŠããªãéšåã§ãã€ãæ°ã浪費ããããšã«ãªããŸãã-mïŒã¡ãœããïŒãã©ã°ã¯ããšã³ã³ãŒãæéãšãã¡ã€ã«ãµã€ãºã®ãã¬ãŒããªãã調æŽããŸãïŒ-m 0ãæéã-m 6ãæãé
ãã§ãããæå°ã®åºåãçæããŸããã€ã³ã¿ã©ã¯ãã£ããªäœæ¥ã«ã¯-m 4ããé床ãåé¡ã«ãªããªãäžåºŠéãã®ããããšã³ã³ãŒãã«ã¯-m 6ã䜿çšããŠãã ããã
ãã¹ã¬ã¹WebPïŒã°ã©ãã£ãã¯ãã¹ã¯ãªãŒã³ã·ã§ãããã·ã£ãŒããªããã¹ãïŒã®å Žåã-lossless -m 6ãæé«ã®æ¯çãæäŸããŸãããã¹ã¬ã¹WebPã¯ãåãã³ã³ãã³ãã«å¯ŸããŠPNGãããçŽ20ã30%åªããŠããŸããã°ã©ãã£ãã¯ã®è²æ°ãéåžžã«å°ãªãå Žåã¯ããã¬ãããæžããããšã詊ã¿ãŠãã ãããè²æ°ãå°ãªãã»ã©ãã©ã®ãã¹ã¬ã¹ãã©ãŒãããã§ãåçã«å§çž®ãããŸãããããã®ãã¥ãŒãã³ã°ã®è©³çްã¯ãimage compression deep diveã®ããåºç¯ãªã¬ã€ãã©ã€ã³ãšæŽåããŠããŸãã
WebPãäžé©åãªã±ãŒã¹ã¯ïŒ
- ã¡ãŒã«ã å€ãã®ã¡ãŒã«ã¯ã©ã€ã¢ã³ãã¯WebPãç¡èŠããŸããã¡ãŒã«ã«ã¯JPEG/PNGã䜿çšããŠãã ããã
- å€ãåã蟌ã¿ãã©ãŠã¶ïŒWebPãµããŒã以åã®å€ãã¹ããŒãTVãããªã¹ã¯ãªã©ïŒã
- JPEGã®ã¿ãåãå ¥ããããŒãããŒ/ããŒã±ãããã¬ã€ã¹ãã£ãŒãã
- ããŒã«ãã§ãŒã³ããããåºåã§ããªãå Žåã CMSã
<picture>ãé ä¿¡ã§ããªãå ŽåãJPEGã®ã¿ã®ãã€ãã©ã€ã³ã®æ¹ã察å¿ãç°¡åã§ãã
ãããã®ã±ãŒã¹ã§ã¯ãformat guideã§é©åãªä»£æ¿æ¡ã確èªã§ããŸãã
ããããééã
- 倿ããã ãã§ãªãµã€ãºããªãããšã 4000pxã®WebPããããŠã³ããŒãã¯äŸç¶ãšããŠ4000pxã§ããå ã«ãªãµã€ãºããŠãã ããã
- ã·ã£ãŒããªã°ã©ãã£ãã¯ã«ãã¹ã·ãŒWebPã䜿çšããããšã ãã¹ã·ãŒWebPã¯JPEGãšåæ§ã«çްããšããžããŒãããŸããã¹ã¯ãªãŒã³ã·ã§ãããããã¹ãã«ã¯
-losslessã䜿çšããŠãã ããã - ãã©ãŒã«ããã¯ãªãã§WebPãé
ä¿¡ããããšã å€ããã©ãŠã¶ã¯ãJPEGã®
<img>ãã©ãŒã«ããã¯ããªããšäœãã¬ã³ããªã³ã°ããŸããã - åãç»è³ªçªå·ã§æ¯èŒããããšã JPEG q85 â WebP q80 â AVIF q68 ã§ç¥èŠãããå質ãåçã§ããæ°åã§ã¯ãªãèŠèŠçã«æ¯èŒããŠãã ããã
- ãªã¯ãšã¹ãããšã«éå°ã«ãšã³ã³ãŒãããããšã ã¢ããããŒãæã«äžåºŠã ããšã³ã³ãŒãããŸããWebPã®ãšã³ã³ãŒãã¯JPEGãããæéãããããŸãã
ãããã質å
WebPã¯å®éã«ã©ãã ãç¯çŽã§ããã®ãïŒ
åçç»è³ªã®å ŽåãJPEGãã25ã35%å°ãããééæ§ã®ããã°ã©ãã£ãã¯ã®å Žåã¯PNGããã倧ããªç¯çŽã«ãªãããšããããããŸãããã®åæžéããŠã§ãé ä¿¡ã®ããã«å€æããçç±ã§ãããªãªãžãã«ããã¹ã¿ãŒãã¡ã€ã«ãšããŠä¿æããWebPãé ä¿¡çšã«ãšã¯ã¹ããŒãããŠãã ããã
WebPãšAVIFãã©ã¡ããéžã¶ã¹ããïŒ
WebPã¯å®å
šãªããã©ã«ãïŒæ®éçãªãã©ãŠã¶ãµããŒããç°¡åãªãšã³ã³ãŒãïŒã§ãããAVIFã¯ææ°ã®ãã©ãŠã¶ã§ã®æå°ãã¡ã€ã«ãµã€ãºïŒJPEGããçŽ50%å°ãããããšã³ã³ãŒãã«æéãããããå€ããã©ãŠã¶ã§ã¯ã®ã£ãããããïŒã«é©ããŠããŸãã<picture>èŠçŽ ãä»ããŠWebPãã©ãŒã«ããã¯ä»ãã§AVIFãé
ä¿¡ããŠãã ããã
ã³ãã³ãã©ã€ã³å€æã¯ã©ãããã®ïŒ
cwebp -q 80 input.jpg -o output.webpã-qãã©ã°ã¯ç»è³ªãèšå®ããŸãïŒ80ããŠã§ãã®ããã©ã«ãã§ãïŒããããåŠçã«ã¯ã·ã§ã«ã«ãŒããŸãã¯ImageMagickã䜿çšããŸãããã¹ã¬ã¹ã®å Žåã¯-losslessã䜿çšããŠãã ããã
ãã¹ãŠã®ãã©ãŠã¶ã§WebPã¯ãµããŒããããŠãããïŒ
ãã¹ãŠã®çŸåšã®ãã©ãŠã¶ã§ãµããŒããããŠããŸããéåžžã«å€ããã©ãŠã¶ïŒå€ãIEãªã©ïŒã§ã¯ãµããŒããããŠããªãããã<picture>èŠçŽ ãä»ããŠJPEGãŸãã¯PNGãã©ãŒã«ããã¯ãšããŠWebPãé
ä¿¡ããå¿
èŠããããŸãããã®ãã©ãŒã«ããã¯ãæ®ãã®å°ããªã®ã£ãããã«ããŒããŸãã
ãããã§WebPã«å€æããã«ã¯ïŒ
ã·ã§ã«ã«ãŒããšcwebpã䜿çšãããïŒfor f in *.jpg; do cwebp -q 80 "$f" -o "${f%.jpg}.webp"; doneïŒãImageMagickããŸãã¯Pythonã¹ã¯ãªããïŒPillowïŒã䜿çšããŸããã³ãã³ãã©ã€ã³ã¯ãã¡ã€ã«ããšã®å¶éããµã€ã³ã¢ãããªãã§æ°åãã¡ã€ã«ãåŠçã§ãããããã«ã¿ãã°ã«ã¯ãããæé©ãªæ¹æ³ã§ããbatch processing guideãåç
§ããŠãã ããã
WebPã¯ã©ãã ãç¯çŽã§ãããïŒ
åçç»è³ªã®å ŽåãJPEGãã25ã35%å°ãããééæ§ã®ããã°ã©ãã£ãã¯ã®å Žåã¯PNGããã倧ããªç¯çŽã«ãªãããšããããããŸãããã®åæžéããŠã§ãé ä¿¡ã®ããã«å€æããçç±ã§ãããªãªãžãã«ããã¹ã¿ãŒãã¡ã€ã«ãšããŠä¿æããWebPãé ä¿¡çšã«ãšã¯ã¹ããŒãããå€ããã©ãŠã¶åãã«ãã©ãŒã«ããã¯ãçšæããŠãã ããã
WebPã¯ãã¹ã·ãŒããã¹ã¬ã¹ãïŒ
ã©ã¡ããå¯èœã§ããWebPã¯ãåççšã®ãã¹ã·ãŒã¢ãŒãïŒããå°ããïŒãšãã°ã©ãã£ãã¯ããã¹ã¿ãŒçšãã¹ã¬ã¹ã¢ãŒãïŒæ£ç¢ºãªãã¯ã»ã«ïŒã®äž¡æ¹ããµããŒãããŠããŸããã³ã³ãã³ãã«ãã£ãŠéžæããŸãïŒåçã¯ãã¹ã·ãŒãã¢ãŒãã£ãã¡ã¯ããèŠããŠããŸãã·ã£ãŒããªãšããžãããã¹ãã®ã°ã©ãã£ãã¯ã«ã¯ãã¹ã¬ã¹ã䜿çšããŸãããã®äºéã®ãµããŒãããWebPããŠã§ãé ä¿¡ã«ãããŠJPEGãšPNGã®äž¡æ¹ã«åã£ãŠä»£ãã£ãŠããçç±ã®äžã€ã§ãã
cwebpã³ãã³ããšã¯ïŒ
cwebp -q 80 input.jpg -o output.webpã¯ãJPEGãç»è³ª80ã§WebPã«å€æããŸãã-qãã©ã°ã¯ç»è³ªãèšå®ãããã¹ã¬ã¹åºåã«ã¯-losslessã远å ããã¿ãŒã²ããã®å¹
ã«ãªãµã€ãºããã«ã¯-resize W 0ã远å ããŸãããããåŠçã«ã¯ã·ã§ã«ã«ãŒãã䜿çšããŸãïŒfor f in *.jpg; do cwebp -q 80 "$f" -o "${f%.jpg}.webp"; doneãããã¯ãããåŠçã«ãããç¡æãã€ç¡å¶éã®æ¹æ³ã§ãã
ç»åã¯ã¬ãžãã
- JPEG/WebPã®ããã©ãŒã¢ãã¿ãŒãšãµã€ãºæ£ã°ã©ã â eã³ããŒã¹ã¹ã¿ã€ã«ã®åçïŒPexels #16675632ãMikael Blomkvistã«ããæ®åœ±ïŒããèè ã«ãã£ãŠçæãããå®éã®JPEG-to-WebPã®ç¯çŽéã瀺ããŠããŸãã
ã¬ã€ããèªã¿ãªããç¡æããŒã«ãã䜿ããã ããã
ç¶ããŠèªã

2026-09-10
æžãåºããç»åããŒãããïŒåå ã«åããã7ã€ã®çŽãæ¹
æžãåºãåŸã®ç»åã®ãŒãããããã¯ã»ã«æ°ã»å§çž®ã»ã¢ããããŒãåŸã®åŠçããåãåããŸãã宿ž¬æ¯èŒãPNGãšJPEGã®éžã³æ¹ã7ã€ã®å¯ŸåŠæ³ã玹ä»ããŸãã

2026-08-01
2026幎ã®ç»åå§çž®ïŒWebPã»AVIFã»JPEG XLã»JPEG AIããã³ãããŒã¯
WebPã»AVIFã»JPEG XLã4æã®å®åçã§ãã³ãããŒã¯ãWebPã¯JPEGæ¯ã§32%ãAVIFã¯65%ãJPEG XLã¯30%çž®å°ãå®å šãªããŒã¿ããã©ãŠã¶å¯Ÿå¿ã2026幎ã«éžã¶ã¹ããã©ãŒãããã解説ã

2026-07-26
ç»åæé©åãã§ãã¯ãªã¹ãïŒé«éãªWebç»åãæ§ç¯ããããã®å šã¹ããã
å®å šãªç»åæé©åãã§ãã¯ãªã¹ããæäŸããŸãããã©ãŒãããã®éžæããªãµã€ãºãå§çž®ãã¬ã¹ãã³ã·ãé ä¿¡ãlazy loadingãCDNèšå®ãªã©ãå ¬éåã«ç¢ºèªãã¹ãé ç®ãç¶²çŸ ããŠããŸãã