japan.internet.comThe Internet & IT Network
Twitter
RSS
  • ニュース
  • コラム
  • リサーチ
  • ヘッドライン
  • 特集
  • ブログ
  • プレスリリース
  • 専門チャンネル
  • イベント
  • ランキング
2010年2月10日
文字サイズ文字サイズ小文字サイズ中文字サイズ大
あなたが最も利用しているのはどれですか?
SNS
Blog
Twitter
掲示板
投票締切 2/15 12:00
デベロッパー2009年6月26日 10:00

CSSスプライトを使用してサイトの表示速度を改善する

海外海外internet.com発の記事
  • Post to Twitter
  • Post to Facebook
  • このエントリーを含むはてなブックマーク
  • この記事をクリップ!
  • Buzzurlにブックマーク
  • Yahoo!ブックマークに登録
  • newsing it!
  • この記事をokyuuへインポート

はじめに

 デザイナーが作るデザインはますます手の込んだものになっていますが、その一方で、HTTPリクエストの数と使用される情報量を減らそうとする試みが継続的に行われています。本稿では、その手法の1つであるCSSスプライトについて、基本的な使用例を挙げながら説明していきます。

CSSスプライトの使用例

 リクエストの数と情報量の両方を減らすための1つの手法は、デザインの各所で使われているスタイリング画像(例えばコーナー画像、ライン画像、グラデーション、背景など)を結合することです。まず、図1に示すようなスタイリング画像の基本的な使用例から見てみましょう。

図1 四隅が丸いボックス
図1 四隅が丸いボックス
 この単純なボックスはスタイリング画像のよくある使用例ですが、リクエストの数はかなり多くなります。この例では、8枚の異なる画像が使用されています(各コーナーと各辺に対して1つずつ)。これらの8枚の画像を図2に示します。

図2 ボックスを作成するのに使用される8枚の画像
図2 ボックスを作成するのに使用される8枚の画像(※編集部注:約6倍に拡大しています)
 それぞれの画像がよく見えるよう背景を黄色にしています。これらの画像を結合して、いくつかのCSSスプライト画像にできます。ただし、結合を行う前に、まずCSSに注目し、CSSスプライトを使用するためにCSSをどのように変更するかを考える必要があります。次に示すのは、図1のボックスを作成するのに使用したCSSからの抜粋です。

.Top
{
   background-image: url(TopLine.png);
   height:10px;
   width:100%;
   background-repeat:repeat-x;
   background-position:top center;
}

.TopLeft
{
   float:left;
   background-image: url(ULCorner.png);
   width:10px;
   height:10px;
   background-position:top left;
}
 最初のCSSクラスTopは、ボックス上部の辺を描くためのものです。ここではheightパラメータとrepeat-xを使用することで、コーナーに合わせてライン画像を適切に配置し、ボックスの幅いっぱいにライン画像を繰り返しています。次のクラスTopLeftは、ボックスの左上コーナーの部分を描くためのもので、heightwidthに固定値を指定しています。これらのクラスには他のステートメントも存在しますが、それらは画像の結合方法を決定する上で重要な意味を持ちません。基本的には、次に示すように画像を3つのカテゴリに分ける必要があります。

  1. 幅と高さが固定の画像
  2. X方向に繰り返す画像(水平ライン用)
  3. Y方向に繰り返す画像(垂直ライン用)
 画像のカテゴリ分けが決まったところで、お好きなペイントソフトを使用して、8枚あった画像を結合し、3枚の画像にします。この結果、図3に示す3枚の画像ができます。

図3 結合された画像
図3 結合された画像(※編集部注:約6倍に拡大しています)
 これらの結合された3枚の画像を使用するために、CSSを修正することにします。これらの画像を使用するには、CSS内のbackgroundステートメントを次のような形式に修正する必要があります。

background: url(image_file.png) -x -y;
 背景画像の開始位置を決めるために、backgroundステートメントに-xパラメータと-yパラメータを追加して、左上隅の位置を指定します。ボックスの各コーナーで指定する4つの座標を次に示します。

  • 左上コーナー: -0 -0
  • 右上コーナー: -10 -0
  • 左下コーナー: -0 -10
  • 右下コーナー: -10 -10
 スプライト画像を扱うときの重要なポイントの1つは、間違いなく、使用する適切なオフセット量を決定することです。この情報に基づいて、3つのスプライト画像を使うように元のCSSを修正する必要があります。下のリストは、先ほど紹介したボックス上部の辺と左上コーナーを描画するためのクラスを書き直したものです。

.Top
{
   background: url(hlines.png) -0px -0px repeat-x;
   height:10px;
   width:100%;
}

.TopLeft
{
   float:left;
   background: url(Corners.png) -0px -0px;
   width:10px;
   height:10px;
}
 後は、残りのCSSクラスについても同様の書き換えを行い、各backgroundステートメントに、スプライト画像に対する適切なオフセット量を指定します。

まとめ

 CSSスプライトを使用したサンプルサイトができたので、実際にどのような改善がなされたのかをパフォーマンスの観点から確認してみましょう。以下に示すのは、変更前後の結果を示す簡単な表です。

表1:CSSスプライトによるパフォーマンスの差異
  画像の数 合計ファイルサイズ
個別の画像を使用した場合 8 7.24KB
CSSスプライトを使用した場合 3 2.97KB
改善効果 リクエスト数が5つ減少 4.27KB減少
 CSSスプライトを使用する場合のもう1つのメリットは、ブラウザでリソースが再利用されるため、サイトのより高速なレンダリングが可能になるということです。この四隅が丸い単純なボックスの例は、あくまで第一歩に過ぎません。CSSスプライトの使い方に工夫をこらし、前述の3つのカテゴリに基づいてできるだけ多くの画像を結合してみてください。図4は、CSSスプライトの可能性を追求してできた画像の一例です。合計13枚の小さな画像を結合して、1枚の3.07KBの画像にしています。この画像の中に、背景やボックス、メニュー、各種セパレータで使用するコーナー部分が含まれています。

図4 複雑なCSSスプライト画像の例
図4 複雑なCSSスプライト画像の例(※編集部注:約4倍に拡大しています)

著者紹介

Chris Bennett(Chris Bennett)
 Crowe Horwath LL社のインディアナポリス事務所のマネージャー。連絡先はchris.bennett@crowehorwath.com
関連テーマ
  • プリンター用
  • 記事を転送
  • Post to Twitter
  • Post to Facebook
  • このエントリーを含むはてなブックマーク
  • この記事をクリップ!
  • BuzzurlにブックマークBuzzurlにブックマーク
  • Yahoo!ブックマークに登録
  • newsing it!
  • この記事をokyuuへインポート
最新トップニュース
  • Yahoo! JAPAN は昨年秋(2009年10月8日)、CEATEC JAPAN 2009 において「Yahoo! Everywhere 構想」と題した講演を行い、米 Yahoo! が昨年1月(2009年1月7日)に発表、昨年春よりサービスを開始している「TV Widgets」を、日本国内向けにも開発中であることを発表しました。今回は、この「TV Widgets」についてご紹介いたします。
  • 育成すべき社員は「能力」ではなく「価値観」で選んではいかがでしょうか? これは採用でも同様です。
  • リンクとは、サイト間の支持票?(Webビジネス 2月10日 10:00)
    電通の調査によると、マスコミ4媒体における日本の年間広告費は前年度比7.6%減となり、4年連続でのマイナス成長という結果になった。一方で、当社発表の2009年における SEO 市場規模は2008年の130億1,000万円から、163億5,000万円にプラス成長した。
  • SNS や ブログ、YouTube など、消費者参加型のサービスやコンテンツは、いつしか“ソーシャルメディア”と呼ばれるようになった。そして、そのソーシャルメディアを活用したマーケティング手法が「ソーシャルメディアマーケティング」とされている。
  • 自治体クラウド開発実証事業の成功要件を検討する画像のある記事(パブリック - テクノロジー 2月10日 09:00)
    総務省の「自治体クラウド開発実証事業」における実施団体ごとの開発委託先が決まり開発作業などが開始された。特に、自治体の基幹業務を広範囲に対象としている佐賀県、宮崎県、大分県での事業成果に期待するところである。本レポートでは、自治体クラウド開発実証事業の成功要件についての検討を報告する。
【次回予告】 2010年3月9日(火) >>詳細はこちら
第6回 インターネットコム・マーケティングセミナー
進化するモバイルマーケティング 〜最新手法と必要性〜
2009年12月16日(水)開催 10周年記念セミナー
報告レポートはこちら
データメーション
【データメーション】
非常に危険な中国人ハッカー(2月5日)
人が育つすごいしかけ
人が育つすごいしかけ
育成すべき社員は「能力」ではなく「○○○」で選ぶ?(2月10日)
「IT の耳」
「IT の耳」
【書評】ソーシャルメディアマーケティング(2月10日)
検索エンジンマーケティング
検索エンジンマーケティング
リンクとは、サイト間の支持票?(2月10日)
e-Japan 先端テクノロジー解説
e-Japan 先端テクノロジー解説
自治体クラウド開発実証事業の成功要件を検討する(2月10日)
百式のネットビジネス研究
百式のネットビジネス研究
iPhone アプリ制作会社が一覧できる「They Make Apps」(2月9日)
CodeGuru
CodeGuru
C#におけるNull Objectパターン(2月9日)
エンジニア転職ノウハウ開発室
エンジニア転職ノウハウ開発室
日本を元気に!“位置ゲー”のコロプラが止まらない(2月9日)
アイレップの SEM フロンティア
アイレップの SEM フロンティア
あなたのサイトの体調管理は万全ですか?(2月9日)
ソフトウェア研究最前線
ソフトウェア研究最前線
ソフトウェア開発におけるインタラクションデザイン(2)(2月8日)
生活者の力をマーケティングに活かそう
生活者の力をマーケティングに活かそう
顧客にラブレターを書くために必要なこと(2月8日)
Copyright 2010 internet.com K.K. (Japan) All Rights Reserved.