高DPR時代のレスポンシブ画像設計とimage-set活用 2025
公開: 2025年9月22日 · 読了目安: 1 分 · 著者: Unified Image Tools 編集部
“綺麗さ”と“転送量”の最適点は、srcset
/sizes
とCSSのimage-set()
で決まります。
TL;DR
-
固定幅要素はx記法(1x/2x)で十分。可変幅要素はw記法 +
sizes
-
テキスト背面の背景画像はCSSの
image-set()
でDPR別に切替 -
ビットマップの上限を設け、装置ピクセル比が高くても過剰転送を防ぐ
-
LCP候補は別途
fetchpriority="high"
で優先度を明示 -
内部リンク: srcset生成ツール, INPを悪化させない配信, 画像優先度とpreload
使い分け早見表
- 固定カード/サムネ:
srcset="... 1x, ... 2x"
- ヒーロー/可変レイアウト:
srcset="... 800w, ... 1200w" + sizes
- CSS背景:
background-image: image-set(url(...@1x.avif) 1x, url(...@2x.avif) 2x)
実装例
<img
src="/imgs/card@1x.avif"
srcset="/imgs/card@1x.avif 1x, /imgs/card@2x.avif 2x"
width="320" height="200" alt="カード"
decoding="async" loading="lazy"
/>
<!-- 可変レイアウト: w+sizes -->
<img
src="/imgs/hero-1200.avif"
srcset="/imgs/hero-800.avif 800w, /imgs/hero-1200.avif 1200w, /imgs/hero-1600.avif 1600w"
sizes="(max-width: 768px) 92vw, 1200px"
width="1200" height="630" fetchpriority="high"
alt="ヒーロー"
/>
.hero {
background-image: image-set(
url('/imgs/cover@1x.avif') 1x,
url('/imgs/cover@2x.avif') 2x
);
background-size: cover;
}
失敗しがちなポイント
sizes
が常に100vw → 実描画より大きい画像が選ばれ帯域過剰- 2x画像のビットレートを1xと同等に → ファイル倍増。PSNR/SSIMで品質管理
- CSS背景での1x/2x準備なし → テキストが滲む/重い
運用のコツ
- 自動生成(CI)の導入で
@1x/@2x
やw
段差を一括出力 image-set()
の定義をテーマ変数化して再利用- LCP候補は別枠で調整(優先度/プレロード)
チェックリスト
- [ ] 固定はx、可変はw+sizesの原則を適用
- [ ] CSSの
image-set()
で高DPRをケア - [ ] LCP候補は
fetchpriority
を設定 - [ ] 計測で無駄転送とぼやけを同時に監視
まとめ
端末ごとの“見え方”と“転送量”を同時に満たすには、srcset
/sizes
/image-set()
の三点を道具箱に。
関連記事
リサイズ
2025年のリサイズ設計 — レイアウトから逆算して 30–70% の無駄を削る
レイアウトに基づく目標幅の導出、複数サイズの生成、srcset/sizes の実装まで。最も効く削減手法を体系化。
リサイズ
2025年のレスポンシブ画像設計 — srcset/sizes 実践ガイド
ブレークポイントとカード密度から逆算して、srcset/sizes を正しく書くための決定版チートシート。LCP、アートディレクション、アイコン/SVG の扱いまで網羅。
基礎
画像最適化の基本 2025 — 勘に頼らない土台づくり
どのサイトにも効く、速くて美しい配信のための最新ベーシック。リサイズ→圧縮→レスポンシブ→キャッシュの順で安定運用に。