JA EN

アートディレクションでデバイス別に画像を出し分ける - picture 要素と media 属性の実践

· 約 9 分で読めます

アートディレクションとは - 解像度切り替えとの違い

レスポンシブ画像には 2 つの異なるアプローチがあります。「解像度切り替え (Resolution Switching)」は同じ構図の画像を異なるサイズで提供するもので、srcsetsizes 属性で実現します。一方「アートディレクション (Art Direction)」は、デバイスの画面サイズに応じて構図そのものを変える手法です。

なぜアートディレクションが必要か:

具体例: EC サイトの商品画像で、デスクトップでは商品全体 + 使用シーンを含むワイドショットを表示し、モバイルでは商品のクローズアップを表示する。ニュースサイトのヒーロー画像で、デスクトップでは風景全体を見せ、モバイルでは人物の顔にフォーカスした縦長クロップを表示する。

アートディレクションは <picture> 要素と <source> 要素の media 属性で実現します。ブラウザは media 条件に一致する最初の <source> を選択し、一致しなければ <img> のフォールバックを使用します。

picture 要素の基本構文とブラウザの選択ロジック

<picture> 要素は複数の <source> 要素と 1 つの <img> 要素で構成されます。ブラウザは上から順に <source> を評価し、mediatype の条件に一致する最初のソースを使用します。

基本構文:

<picture><source media="(min-width: 1024px)" srcset="hero-wide.webp" type="image/webp" /><source media="(min-width: 1024px)" srcset="hero-wide.jpg" /><source media="(min-width: 640px)" srcset="hero-medium.webp" type="image/webp" /><source media="(min-width: 640px)" srcset="hero-medium.jpg" /><source srcset="hero-mobile.webp" type="image/webp" /><img src="hero-mobile.jpg" alt="ヒーロー画像の説明" width="400" height="500" loading="eager" /></picture>

ブラウザの選択ロジック:

重要な注意点:

ブレークポイント設計とクロップ戦略

アートディレクションのブレークポイントは、CSS のレスポンシブブレークポイントと必ずしも一致させる必要はありません。画像の構図が破綻するポイントを基準に設計します。

推奨ブレークポイント戦略:

クロップ戦略の設計:

CMS との連携: WordPress や Contentful などの CMS では、画像アップロード時に焦点ポイント (focal point) を設定できる機能があります。この焦点ポイントを基準に、各ブレークポイント用のクロップを自動生成するワークフローを構築すると、運用効率が大幅に向上します。Cloudinary の g_auto (AI 自動クロップ) や imgix の fit=crop&crop=faces も活用できます。

srcset と sizes の組み合わせ - 解像度とアートディレクションの併用

アートディレクション (<picture> + media) と解像度切り替え (srcset + sizes) は組み合わせて使用できます。各ブレークポイントの構図内で、さらにデバイスピクセル比 (DPR) に応じた解像度の画像を提供する設計です。

組み合わせの例:

<picture><source media="(min-width: 1024px)" srcset="hero-wide-800.webp 800w, hero-wide-1200.webp 1200w, hero-wide-1600.webp 1600w" sizes="100vw" type="image/webp" /><source media="(min-width: 640px)" srcset="hero-medium-600.webp 600w, hero-medium-900.webp 900w" sizes="100vw" type="image/webp" /><source srcset="hero-mobile-400.webp 400w, hero-mobile-800.webp 800w" sizes="100vw" type="image/webp" /><img src="hero-mobile-400.jpg" alt="商品イメージ" width="400" height="500" /></picture>

この設計のポイント:

sizes の設計:

画像生成の自動化: 1 枚のソース画像から複数の構図 x 複数の解像度を手動で作成するのは非現実的です。Sharp (Node.js)、ImageMagick、または画像 CDN (Cloudinary, imgix) を使って自動生成するパイプラインを構築してください。

パフォーマンス最適化 - LCP とレイアウトシフトへの配慮

アートディレクション画像は多くの場合ファーストビューのヒーロー画像に使用されるため、LCP (Largest Contentful Paint) に直接影響します。パフォーマンスを最適化するための実践的なテクニックを紹介します。

LCP 最適化:

CLS (Cumulative Layout Shift) 防止:

プレースホルダー戦略: LQIP (Low Quality Image Placeholder) を Data URI で埋め込み、本画像の読み込み完了までぼかし表示する。各ブレークポイントの構図に合わせた LQIP を用意すると、レイアウトシフトなしで自然な読み込み体験を実現できます。

実装の自動化とテスト - 運用を見据えた設計

アートディレクション画像の運用は、画像バリエーションの生成と HTML マークアップの管理が複雑になりがちです。自動化とテストの仕組みを整備し、持続可能な運用を実現します。

画像生成パイプライン:

コンポーネント設計 (React 例):

function ResponsiveHero({ src, alt, crops }) { return (<picture>{crops.map(({ media, srcSet, type }) => (<source key={media+type} media={media} srcSet={srcSet} type={type} />))}<img src={crops[crops.length-1].fallback} alt={alt} width={crops[0].width} height={crops[0].height} loading="eager" fetchPriority="high" /></picture>); }

テスト戦略:

運用上の注意: 画像バリエーションが増えるとストレージコストとビルド時間が増加します。全ページにアートディレクションを適用するのではなく、ヒーロー画像やキービジュアルなど視覚的インパクトが大きい箇所に限定して適用することを推奨します。

関連記事

レスポンシブ画像の実装ガイド - srcset, sizes, picture 要素の完全解説

デバイスの画面サイズや解像度に応じて最適な画像を配信するレスポンシブ画像の実装方法を、コード例とともに詳しく解説します。

Core Web Vitals と画像最適化の関係 - LCP, CLS, INP を改善する実践手法

Core Web Vitals の 3 指標 (LCP, CLS, INP) に画像が与える影響と、具体的な改善手法を解説。実測データに基づくパフォーマンス改善の優先順位と実装パターンを紹介します。

Retina ディスプレイ対応画像の作り方 - 高 DPI 環境での鮮明な表示を実現する

Retina や高 DPI ディスプレイで画像がぼやける原因と対策を解説。srcset 属性、image-set()、SVG 活用、最適な書き出し設定まで実践的に紹介します。

Web サイトの画像パフォーマンス監査 - Core Web Vitals 改善の実践ガイド

Web サイトの画像がパフォーマンスに与える影響を監査する方法を解説。LCP 改善、CLS 防止、転送量削減の具体的な手法を紹介します。

画像 SEO の完全ガイド - alt 属性、ファイル名、サイズ最適化で検索流入を増やす

画像検索からの流入を最大化する SEO テクニックを網羅。alt 属性の書き方、ファイル名の命名規則、構造化データ、Core Web Vitals 対策まで実践的に解説します。

Web 画像最適化チェックリスト - 実務で使える 15 項目を徹底解説

Web サイトの画像最適化に必要な 15 のチェック項目を実務視点で解説。Core Web Vitals 改善に直結する具体的な施策と優先順位を紹介します。

関連用語