よくわかる画像の話

よくわかる画像の話 by @1000ch

Shogo SENSUI (shogosensui.com)

よくわかる画像の話 by @1000ch

画像の存在

  • 写真・ロゴ・アイコンなど、プラットフォームを問わず至る所で使われている
  • 印象的な画像はユーザーの目を引き、時に重要な情報を伝える
  • 画像はサービスにとって重要な存在 である
よくわかる画像の話 by @1000ch

そもそも画像ってなんだろう?

よくわかる画像の話 by @1000ch

少し噛み砕いてみる

  • RGB の表現系からなる画素の集合 (=ビットマップ) であるラスタ形式やベクタ形式
  • よく使われる画像フォーマットは、PNG・JPEG・GIF・WebP・AVIF・SVG
  • それぞれ特徴があるが、基本的にはラスターやベクターのデータを圧縮したもの
よくわかる画像の話 by @1000ch

PNG (image/png)

よくわかる画像の話 by @1000ch

JPEG (image/jpeg)

  • フルカラーを表現できる
  • プログレッシブ or ベースライン
  • 非可逆圧縮
よくわかる画像の話 by @1000ch

GIF (image/gif)

  • 256色を表現かつ特定色を透過できる
  • アニメーション可能
よくわかる画像の話 by @1000ch

WebP (image/webp)

  • WebM という動画圧縮コーデックの基礎
  • フルカラーに加えてアルファチャネルを表現できる
  • 可逆圧縮と非可逆圧縮をサポート
  • アニメーション可能
よくわかる画像の話 by @1000ch

AVIF (image/avif)

  • AV1 という動画圧縮コーデックの基礎
  • フルカラーに加えてアルファチャネルを表現できる
  • 可逆圧縮と非可逆圧縮をサポート
  • アニメーション可能
よくわかる画像の話 by @1000ch

SVG (image/svg+xml)

  • パスを表現できるベクター形式の画像
  • XML でありテキストデータ
よくわかる画像の話 by @1000ch

特徴を踏まえた画像フォーマットの選択

  • PNG: UI パーツやアイコンであれば SVG、他の場面では WebP / AVIF で代替
  • JPEG: 写真やグラデーションを含むような複雑で非透過な画像
  • GIF: アニメーションなら動画や WebP / AVIF で代替
  • WebP: WebP をサポートしている環境の場合
  • AVIF: AVIF をサポートしている環境の場合
  • SVG: UI パーツ・アイコンのように色数が少なく透過がある場合
よくわかる画像の話 by @1000ch

画像のファイルサイズの影響

よくわかる画像の話 by @1000ch

今から 4 枚の JPEG と 1 枚の PNG をお見せします

よくわかる画像の話 by @1000ch

JPEG (オリジナル, 4.7MB)

よくわかる画像の話 by @1000ch

JPEG (圧縮率 80, 1.8MB)

よくわかる画像の話 by @1000ch

JPEG (圧縮率 60, 1.1MB)

よくわかる画像の話 by @1000ch

JPEG (圧縮率 40, 0.8MB)

よくわかる画像の話 by @1000ch

PNG (18.8MB)

よくわかる画像の話 by @1000ch

画像の圧縮率とファイルサイズの関係

ファイルサイズ サイズ比率
JPEG (オリジナル) 4.7MB 100%
JPEG (圧縮率80) 1.8MB 38%
JPEG (圧縮率60) 1.1MB 23.6%
JPEG (圧縮率40) 0.8MB 16.9%
PNG 18.8MB 400%
  • ファイルサイズは 縦横サイズより適切な圧縮 (=最適化) に左右される
  • 最適化された上であれば、縦横サイズが小さい方がファイルサイズは小さい
よくわかる画像の話 by @1000ch

画像を適切に扱う心構え

  • 開発者が適切な画像形式を選択し最適化するのは前提であり最低条件
  • プロダクトがユーザーに強いるのは非現実的である
    • PNG の写真をサーバーに送信されても文句は言えない
  • 故に アプリケーション側で吸収する必要がある
    • アップロードやダウンロード時に PNG を JPEG に変換する等
よくわかる画像の話 by @1000ch

画像最適化ツール

よくわかる画像の話 by @1000ch