Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Dreamweaverデベロッパーセンター /

スマートフォン時代のWebサイト制作 第4回 画像の扱いと最適化

著者 谷 拓樹氏

谷 拓樹氏
  • Goodpatch Inc.

Content

  • 適切な画像形式の選択と軽量化
  • CSSスプライトで画像リクエスト数を抑える
  • 高解像度画面向けの対応
  • 高解像度対応とパフォーマンス対応のバランス

作成日

9 November 2011

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

すべて

必要な製品

  • Dreamweaver (体験版ダウンロード)

サンプルファイル

  • smartphone-sample2.zip

スマートフォン向けサイトでは、デスクトップに及ばないスペックや接続回線を考慮し、いかに「軽い、表示が速い」サイトを作るかが重要です。一方で、様々な画面解像度の端末があり、高解像度の画面を搭載した端末向けには、そのサイズに対応した大きな画像が必要となる場合もあります。画像の扱いひとつをとっても、「パフォーマンス」と「見栄え」の双方を考慮しなければいけない難しさがあります。そこで今回は、前回のサンプルサイトを元に、画像関係の扱いや最適化などを解説します。

図1 本文中の画像や、ナビゲーションに利用するアイコン画像(矢印)の扱いについて解説します
図1 本文中の画像や、ナビゲーションに利用するアイコン画像(矢印)の扱いについて解説します

適切な画像形式の選択と軽量化

スマートフォンブラウザーはPNGに対応しています。デスクトップブラウザーでPNGを使う場合、Internet Explorer 6などの古いブラウザーに気をつける必要がありますが、スマートフォンブラウザーの場合は気にする必要がありません。

PNGは圧縮率が高く、容量を抑えることができます。また、アルファチャンネル(透過機能)を持つので、半透明やアンチエイリアスの効いた透過が可能なため、GIFよりも表現力の高い透過表現が可能です。さらに、PNGにはPNG-8(8bit)とPNG-24/32(24/32bit)といった種類があり、GIFのように256色で対応できるものはPNG-8、それ以上であればフルカラーのPNG-24/32と使い分けることができます。なお、写真のような画像であれば、JPEGを採用する方が容量を抑えることができます。

少しでも画像の容量を抑えるためには、適切な画像形式を選ぶことが必要ですが、他にも次に紹介するようなサービスやツールを使うことで、さらに容量を抑えることができます。これらは再圧縮や画像の持つメタ情報など削除することで容量を削減しています。

画像圧縮のサービスやツール
JPEGmini JPEGの画像容量を削減するサービス。ある程度大きなサイズのものでなければ効果は小さい。
PunyPNG PNGだけでなく、JPEGやGIFにも対応している。
ImageOptim Mac用のローカルアプリケーション。こちらもPNG/JPEG/GIFに対応している。

CSSスプライトで画像リクエスト数を抑える

パフォーマンスの最適化における重要なポイントとして「HTTPリクエストの数」があります。画像を含め、CSSやJavaScriptなどのファイルの読み込み数を減らすことで、ページの表示速度が変わります。これに関連したテクニックとして有名なのが「CSSスプライト」です。

CSSスプライトは複数の画像を1つの背景画像にまとめ、CSSによって表示したい画像を制御するテクニックです。それにより、通常は画像ファイルの数だけリクエストが発生しますが、1つにまとめることでリクエスト数を抑えることができます。CSSスプライトはGoogleやYouTubeといった大規模サイトで利用されていることで有名となりましたが、中小規模サイトでも利用する価値があります。

本記事のサンプルサイトでは、記事リストのナビゲーションの右矢印アイコンでCSSスプライトを利用しています。以下該当箇所のコードです。

※コードは解説に必要な部分だけを抜粋して掲載しています。コードの全体はサンプルデータをご覧ください。

図2 複数のアイコン画像を1つの画像にまとめます。図では分かりやすいよう背景色をつけていますが、実際はPNG-8形式で透過背景となっています
図2 複数のアイコン画像を1つの画像にまとめます。図では分かりやすいよう背景色をつけていますが、実際はPNG-8形式で透過背景となっています
図3 図2の画像を背景画像として指定し、必要な部分だけを表示させます
図3 図2の画像を背景画像として指定し、必要な部分だけを表示させます

article.html

<li> <a href="smartphone_web_part1.html"> <p class="series">スマートフォン時代のWebサイト制作 第1回</p> <p>スマートフォン対応の重要性とその方法</p> <span class="icon"></span> </a> </li>

アイコンを表示させるための要素(<span class="icon"></span>)を置きます

style.css

.icon { display: block; width: 9px; height: 14px; background-image: url(../img/sprite.png); background-position: -2px -2px; }

表示領域(表示させたいアイコンの大きさ)をwidthとheightプロパティで指定し、該当するアイコン画像の箇所をbackground-positionで座標指定します

ここでもう1つ、アイコンの表示方法に関するテクニックを紹介します。このサンプルコードでは、表示させたい箇所に空のspan要素を置くようにしていますが、このような形であれば、CSSの擬似要素を使う方法もあります。

article.html

<li> <a href="smartphone_web_part1.html"> <p class="series">スマートフォン時代のWebサイト制作 第1回</p> <p>スマートフォン対応の重要性とその方法</p> </a> </li>

style.css

a:after { display: block; content: ""; width: 9px; height: 14px; background-image: url(../img/sprite.png); background-position: -2px -2px; }

擬似要素を利用する場合は、contentプロパティが必要となります。ここでは中身は不要であるため、空にしています

このようにafter擬似要素を使うと、先ほどのサンプルコードにあったspan要素と同じところに、擬似的に要素が挿入されるため、装飾用の要素をHTMLに直接記述する必要がありません。アイコンの配置場所や要素の構成によっては使えない場合もありますが、この例のようなよくあるリスト型のナビゲーションでは使えるテクニックです。

CSSスプライトに関する注意点もあります。例えばリクエスト数を減らすために、ページ内の全ての画像を1つにまとめてしまうと、そのCSSスプライト用画像そのものの容量が大きくなってしまい、読み込みの遅延や、その画像を読み込むのにメモリを多く消費してしまうかもしれません。そのため、単体では容量は小さいが数が多い、アイコンのような画像を適度にまとめると良いでしょう。

リクエスト数を減らす工夫はCSSスプライトだけではありません。画像そのものの利用を減らすために、CSS3を駆使したビジュアル表現を採用したり、またはData URIスキームを利用し、画像をバイナリデータではなくテキストデータに変換することでリクエストせずに画像を表示させるという方法もあります。これらについては今回解説しませんが、画像ひとつをとっても様々な工夫があるということを知っておきましょう。

※スマートフォン向けのパフォーマンス最適化対応については、著書(共著)の『スマートフォンサイト制作の教科書』にも一部まとめてあるので、こちらを参照ください。

高解像度画面向けの対応

画像の容量をいかに小さくするかという話から一転して、ここからは大きなサイズの画像を扱う話になります。前回のホームスクリーン用のアイコン指定のところでも少し触れましたが、iPhone 4(iPhone 4S)や、AndroidのGalaxyシリーズなどの主流端末では、旧端末よりも高解像度の画面を搭載しています。それぞれの端末における1インチあたりのピクセル数(PPI≒DPI)が、旧端末よりも約1.5~2倍多くなり、密度が高くなることで鮮やかさを実現しています。

また、ブラウザーやアプリなどのスクリーン上では、1ピクセルをデバイスにおける1.5~2.0ピクセルで描画するようになっているため、ビットマップ画像の表示において気を付けなければいけません。次の例は、実際に表示させたいサイズに対して等倍の画像と、縦横を2倍にした画像を読み込んだ場合の違いです。

図4 iPhone 4で検証した画面のスクリーンショット。左側は横300☓縦164pxの画像をHTML/CSS上でも同じサイズで指定した場合、右側はその倍である横600☓縦328pxの画像をHTML/CSS上では半分のサイズで指定した場合です
図4 iPhone 4で検証した画面のスクリーンショット。左側は横300☓縦164pxの画像をHTML/CSS上でも同じサイズで指定した場合、右側はその倍である横600☓縦328pxの画像をHTML/CSS上では半分のサイズで指定した場合です

左側はぼやけており、右側の方が鮮明なのがわかりますでしょうか。ぼやけている理由は、端末の解像度に基づき、iPhone 4/4Sなどでは縦横2倍、Androidの主流端末では縦横1.5倍ほどに画像が引き伸ばされているような状態になっているからです。そのため、それぞれの倍サイズの画像を用い、HTML/CSS上では等倍サイズで指定しなければ、画像を鮮やかに表示することができません。

少し難しい話かもしれませんが、やや乱暴にいってしまえば、現在の主流端末で写真などのビットマップ画像を鮮やか・きれいに画像を表示させるためには、実際に表示させたいサイズよりも、倍近いサイズのファイルを用意する必要があるということです。実際にサイトを作る上では、縦横2倍の画像を用意しておけば、1.5倍の端末にも対応することができます。

※ここで解説している「Androidの主流端末で1.5倍」という点は、端末やブラウザーによって異なります。またAndroid端末ではユーザーの設定で変更することも可能です。

ここまでの例ではimg要素などで読み込む画像のサイズを制御する説明でしたが、背景画像ではどうでしょうか。背景画像の場合は、CSS3のbackground-sizeプロパティを用います。サンプルサイトでは、先ほど解説したCSSスプライトの画像も大きなものを用意し、background-sizeプロパティで制御しています。

style.css

a:after { background-image: url(../img/sprite_2x.png); /* 幅76px/縦68pxの画像 */ -webkit-background-size: 38px auto; background-size: 38px auto; /* 1/2のサイズを指定 */ }

WebKitのベンダープレフィックスは古いWebKitブラウザー用に必要です

ここで1つ考えたいのは、高解像度ではない端末向けの対応です。それらの端末上では、高解像度向けの大きな画像は必要ありません。その場合の対応方法として、ここでは背景画像を対象に、メディアクエリーを利用した方法を解説します。具体的には次のようなコードです。

style.css

@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2) { a:after { background-image: url(../img/sprite_2x.png); -webkit-background-size: 38px auto; background-size: 38px auto; } }

「device-pixel-ratio」を条件としてスタイルを読み込みます。いずれもベンダープレフィックスが必要ですが、-moz-(Gekko)のみ書き方が少し違う点に注意してください。また値について、-o-(Opera)の場合は、分数(比率)で記述する必要があるので注意してください

「device-pixel-ratio」は解像度の解説にあった、1ピクセルを何ピクセルで描画するかの値です。ここでは「device-pixel-ratioが1.5以上か」という条件で、高解像度向けの画像とスタイルを読み込ませるようにしています。

背景画像ではなく、img要素などの画像である場合にはJavaScript(window.devicePixelRatio)や、PHPなどを組み合わせて、読み込む画像を切り替える必要があります。スマートフォン専用のスクリプトではないですが、「Adaptive Images」のような、端末の解像度を判別して実行するスクリプトもその1つです。

これらの解像度の問題が影響するのは、ビットマップ形式の画像の場合です。SVGのようなベクター形式での描画・画像であれば、端末の解像度を問わず鮮明な表現が可能です。しかし、現在普及している多くのAndroid端末のデフォルトブラウザーのバージョンではSVGに対応していませんし、写真のような画像では代替に使うことはできません。

その他には、CSS3で表現できるものであれば、その場合も端末の解像度に依存することはありません。「あまり複雑ではないグラデーションにテキストがのっている」程度の画像であれば、CSSのみでの表現が可能でしょう。

高解像度対応とパフォーマンス対応のバランス

高解像度画面端末のために大きなサイズの画像を用意しなければいけない、というのは冒頭で解説した「いかにサイトを軽くするか」という話とは少し矛盾しているように思えるかもしれません。しかし前述の通り、等倍サイズのままの画像だと、ぼやけてしまうというのも一目瞭然です。この落とし所というのは非常に難しいです。

例えば今回のサンプルサイトにあるような、矢印のアイコン程度であれば、仮に等倍サイズで少しぼやけていても、利用者に対する影響というのはあまり無いかもしれません(まったく不鮮明で形が分からないというレベルでなければ)。しかし、ECサイトやブランドサイトなどで「写真」が重要となるようなコンテンツであれば、できるだけ鮮明で、魅力を感じるような画像にしなければいけません。その時には、画像の容量を極力削減できるようなサービスやツールを使う、Photoshopで色数をなるべく落とすような処理をするなどの対応が必要となります。また、画像処理以外のところでのパフォーマンス最適化をできるだけ対応しなければいけません。

このような細部までにこだわった対応は、企画・設計段階から考えておく必要がありますので、本連載の主な読者であろうHTML/CSSコーダーの方々だけでなく、デザイナーその他の方を含めて理解していく必要があるでしょう。

関連情報

  • スマートフォン時代のWebサイト制作 第1回 スマートフォン対応の重要性とその方法
  • スマートフォン時代のWebサイト制作 第2回 スマートフォン特有の表示環境を理解する
  • スマートフォン時代のWebサイト制作 第3回 スマートフォン向けのコーディング

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement