SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法

ゼロから学ぶ「CSS Sprite」

Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルファイル (8.0 KB)

 CSS Spriteとは、ページ内で使用する複数の画像をひとまとめにして、CSS(Cascading Style Sheets)側の記述で表示を調整し、HTTPリクエスト数の軽減を計るテクニックのことを言います。この記事では、CSSが具体的にはどのような物か、またYahoo! Japanではどのように利用しているのかを説明します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

概要

 CSS Sprite(シーエスエススプライトと読みます)とは、ページ内で使用する複数の画像をひとまとめにして、CSS(Cascading Style Sheets)側の記述で表示を調整して、HTTPリクエスト数の軽減を計るテクニックのことをいいます。この手法を用いれば、主にimg要素のリクエスト数を軽減できます。フロントエンド側でページ表示速度の高速化を計るには、CSS Spriteを導入することが比較的容易で、効果も高いと考えられます。

 利点や欠点は次のとおりです。

利点
  • 画像のリクエスト数を減らすことができる
  • 画像の容量を軽減できる
欠点
  • Sprite画像の作成や構築に時間がかかる
  • 画像を追加するときに、再度Sprite画像を調整する必要がある
  • CSSへの記述が多少複雑になる
  • Alt属性が使用できなくなる

 更新作業で画像を何か1つ追加するだけでもSprite画像全体を調整する必要があります。

 「HTTPリクエスト数の軽減」と「更新のしやすさ」のバランスを考え、どのように画像を管理するかを検討することも大事になってきます。画像はまとめればまとめるほど、更新・運用などの保守作業が複雑になってしまうからです。

 そのためYahoo! JAPANトップページではいくつかのCSS Sprite画像(以下、Sprite画像)に分けて作成し、更新を行っています。また毎回読み込まない画像やカラーテーマごとの画像などは別のSprite画像として用意するとよいです。

常に読み込む画像 http://k.yimg.jp/images/top/sp2/cmn/pic_all-100408.png
必要に応じて読み込む画像 http://k.yimg.jp/images/top/sp2/clr/1/clr-100128.png

 また、img要素ならalt属性を用いて説明文を記載していると思うのですが、Yahoo! JAPANトップページでは、音声ブラウザで読み上げてもらいたいものに対して、title属性を代わりに用いています。

 ちなみにYahoo! JAPANトップページでは過去に、複数あった画像をまとめてCSS Spriteの最適化を行いました。速度の計測にはFirefoxのアドオンであるYSlowを用いて、ほぼ同時間帯にてhttp://www.yahoo.co.jpとは異なる開発環境にて確認しています。厳密な比較テストではありませんので、あくまで参考値としてご覧ください。

 この結果、画像のリクエスト数を19ほど減らすことに成功し、CSS Sprite最適化前は平均0.53秒だったのに対し、最適化後は0.46秒と微量ながらも0.07秒ほど向上しました。

 Yahoo! JAPANトップページは1日で2億近くのPVがあるので、0.07秒×2億の時間が浮いた計算になり、19リクエスト×2億のリクエスト数が軽減されたことにもなります(実際にはキャッシュなどもあるので、このままの値ではありません)。このように軽減されるリクエスト数が小さな差だとしても、PVが多いページほどその恩恵を受けることができます。このことからCSS Spriteを最適化するだけでも表示速度が向上し、リクエスト数が軽減されることが分かります。

 では、具体的にはどのような物なのか、順を追って説明していきます。前提として、通常のHTMLとCSSによるマークアップは不都合なくできる方向けとします。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
CSS Spriteの手順詳細

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Yahoo! JAPANの制作チームによる、さまざまなWebサイト最適化手法連載記事一覧
この記事の著者

岡部 和昌(ヤフー株式会社)(オカベ カズマサ)

ヤフー株式会社 R&D統括本部 制作本部 ウェブデベロップメント部 所属。1983年生まれ、埼玉県出身。大学で応用化学を学んだ後2006年にヤフー株式会社初のデザイナー新卒採用にて入社。同社では、Yahoo! JAPANトップページ、My Yahoo!などでマークアップの主担当。ページ表示速...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5574 2010/12/02 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  1. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  2. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  3. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  4. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  5. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  6. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  7. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  8. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  9. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  10. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  9. 9
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  1. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  2. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  3. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  4. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  5. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  6. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  7. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  8. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  9. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  10. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  9. 9
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!