適切な画像形式を選択する

最初に考えるべきことは、画像が次のようなものであるかどうかです。 目指す効果を達成するために必要なものであることを 確認しました 優れたデザインはシンプルで、最良のパフォーマンスを発揮します。 画像リソースを削除すると、その これは多くの場合、ページ上の HTML、CSS、JavaScript、その他のアセットに対して 大きなバイト数を必要とします これが最適な最適化戦略です とはいえ、適切な場所に画像を配置することで、何千もの言葉よりも多くの情報を伝えることができます。 そのバランスを取るかどうかはお客様次第です。

次に、望む結果が得られる代替技術がないか検討します。 次のような方法があります。

  • CSS 効果(シャドウやグラデーションなど)と CSS アニメーション を使用すると、解像度やズームレベルを問わず常に鮮明に表示される、解像度に依存しないアセットを生成できます。 ファイルサイズは多くの場合 画像ファイルで必要とされるバイト数の 1 分の 1 になります
  • ウェブフォントにより美しい書体を使用できる データの選択、検索、 テキストのサイズ変更が可能になり、ユーザビリティが大幅に向上します。

画像アセットにエンコードされているテキストがあれば、一度立ち止まって再検討してください。 優れたタイポグラフィは、優れたデザイン、ブランディング、読みやすさに不可欠です。 画像内テキストはユーザーの利便性を低下させます。 テキストは選択、検索、ズームできませんが、 アクセスできず、高 DPI デバイスには適していません。 ウェブフォントを使用するには、独自の最適化セットが必要です。 ですが、これらの問題をすべて解決できるため、常にテキスト表示に適した選択肢です。

適切な画像形式を選択する

イメージが正しいオプションであると確信できる場合は、ジョブに適切な種類のイメージを慎重に選択する必要があります。

<ph type="x-smartling-placeholder">
</ph> 拡大されたベクター画像とラスター画像
ズームインしたベクター画像(L)ラスター画像(R)

それぞれの形式にはそれぞれ長所と短所があります。 ベクター形式は、ロゴ、テキスト、アイコンなどの単純な幾何学的形状で構成される画像に最適です。 どんな解像度やズーム設定でも鮮明な画像が得られます。 そのため、さまざまなサイズで表示する必要がある高解像度の画面やアセットに最適なフォーマットとなっています。

ただし、シーンが複雑な場合(写真など)はベクター形式では不十分です。 あらゆるシェイプを記述するための SVG マークアップの量が膨大な量になる可能性がある 出力が「フォトリアリスティック」に見えない場合もあります。 その場合はラスター画像形式を使用してください PNG、JPEG、WebP、AVIF などです

ラスター画像には、解像度やズームに依存しないといった優れた特性がない - ラスター画像を拡大すると、グラフィックがギザギザでぼやけます。 その結果、ラスター画像をさまざまな解像度で保存することが必要になる場合もあります。 ユーザーに最適なエクスペリエンスを提供できます

高解像度画面の影響

ピクセルには、CSS ピクセルとデバイス ピクセルの 2 種類があります。 1 つの CSS ピクセルが 1 つのデバイス ピクセルに直接対応する場合と、複数のデバイス ピクセルに対応している場合があります。 どうしたの?デバイスのピクセルが多いほど、画面に表示されるコンテンツの細部は細かくなります。

<ph type="x-smartling-placeholder">
</ph> CSS ピクセルとデバイス ピクセルの違いを示す 3 つの画像。 CSS ピクセルとデバイス ピクセルの違い。

高 DPI(HiDPI)画面でも美しい結果が得られますが、明らかに次のトレードオフがあります。 デバイスのピクセル数が多いため、画像アセットにはより詳細な情報が必要です。 幸いなことに、このタスクにはベクター画像が最適です。 高解像度で鮮明な画像でレンダリングできます 細部をレンダリングする処理コストが高くなる可能性があります。 基盤となるアセットは同じであり、解像度に依存しない

一方、ラスター画像は、画像データをピクセル単位でエンコードするため、はるかに大きな課題となります。 したがって、ピクセル数が多いほど、ラスター画像のファイルサイズは大きくなります。 例として、100x100(CSS)ピクセルで表示される写真アセットとの違いを考えてみましょう。

画面の解像度 合計ピクセル数 非圧縮ファイルサイズ(ピクセルあたり 4 バイト)
1x 100 × 100 = 10,000 40,000 バイト
2 倍 100 × 100 × 4 = 40,000 160,000 バイト
3 倍 100 × 100 × 9 = 90,000 360,000 バイト

物理画面の解像度を 2 倍にすると ピクセルの総数は 4 倍になります。 横方向のピクセル数を 2 倍に、縦方向のピクセル数を 2 倍にする。 したがって、「2 倍」の画面が 2 倍になるだけでなく、必要なピクセル数が 4 倍になりました。

これは実際には何を意味するでしょうか。 高解像度の画面では美しい画像を表示できるため、これはプロダクトの大きな特長です。 ただし、高解像度画面には高解像度の画像も必要です。

  • 解像度に依存せず、常に鮮明な結果が得られるため、可能な限りベクター画像を使用することをおすすめします。
  • ラスター画像が必要な場合は、レスポンシブ画像を提供します。

さまざまなラスター画像形式の機能

さまざまな非可逆圧縮アルゴリズムや可逆圧縮アルゴリズムに加え、 画像形式は、アニメーションや透明度(アルファ)チャンネルなど、さまざまな機能をサポートします。 結果として「適切な形式」の選択が望ましい視覚的結果と機能要件の組み合わせです。

形式 透明性 アニメーション ブラウザ
PNG いいえ すべて
JPEG いいえ いいえ すべて
WebP 最新のすべてのブラウザ。使用できるかをご覧ください。
AVIF いいえ。使用できるかをご覧ください。

広くサポートされているラスター画像形式は PNG と JPEG の 2 つです。 最新のブラウザでは、これらの形式に加えて新しい形式の WebP がサポートされていますが、新しい AVIF 形式をサポートしているブラウザは限られています。どちらの新しい形式でも、全体的な圧縮率が優れており、機能が追加されています。では、どの形式を使用すべきでしょうか。

WebP や AVIF は通常、古い形式よりも圧縮率が優れています。 可能な限り使用する必要があります 代替として、JPEG または PNG 画像と一緒に WebP 画像または AVIF 画像を使用できます。 詳しくは、WebP 画像を使用するをご覧ください。

古い画像形式については、次の点を考慮してください。

  1. アニメーションは必要ですか?<video> 要素を使用します。
  2. 最大限の解像度で細部を保持する必要がありますか?PNG またはロスレス WebP を使用します。
    • PNG では、カラーパレット サイズ以外の非可逆圧縮アルゴリズムは適用されません。 その結果、高品質の画像が生成されますが、 他の形式よりファイルサイズが著しく大きくなります使用は慎重に行ってください。
    • WebP には可逆エンコード モードがあり、PNG よりも効率的な場合があります。
    • 画像アセットに幾何学的図形で構成された画像が含まれている場合は、ベクター(SVG)形式に変換することを検討してください。
    • 画像アセットにテキストが含まれている場合は、一度停止して再検討してください。画像内のテキストは選択、検索、ズームできません。 ブランディングなどの理由でカスタムのデザインを伝える必要がある場合は、代わりにウェブフォントを使用してください。
  3. 写真、スクリーンショット、または類似の画像アセットを最適化していますか?JPEG、非可逆 WebP、または非可逆 AVIF を使用します。
    • JPEG では、非可逆最適化と可逆最適化を組み合わせて画像アセットのファイルサイズを縮小します。JPEG の品質レベルをいくつか試して、アセットの最適な画質とファイルサイズのトレードオフを見つけてください。
    • 非可逆 WebP または非可逆 AVIF も JPEG の代替として使用できる場合がありますが、WebP の不可逆モードでは特に、画像を小さくするために一部の彩度情報が破棄されることに注意してください。つまり、一部の色は同等の JPEG とは異なる場合があります。

最後に、WebView を使用してプラットフォーム固有のアプリでコンテンツをレンダリングする場合は、 クライアントを完全に制御でき、WebP を排他的に使用できます。 Facebook をはじめとする多くの企業が WebP を使用して、すべての画像をアプリケーション内で配信しています。 間違いなく価値があります

Largest Contentful Paint(LCP)への影響

イメージは LCP の候補である可能性があります。つまり、画像のサイズは読み込み時間に影響します。画像が LCP の候補である場合、その画像を効率的にエンコードすることが LCP の改善に不可欠です。

この記事でご紹介するおすすめの方法を実践し、すべてのユーザーにページの知覚パフォーマンスを可能な限り速くするよう努めてください。LCP は知覚パフォーマンスの一部です。ページの最大の(つまり最も知覚可能な)要素がどのくらい速く表示されるかを測定します。