Webパフォーマンス最適化のためのコーディング手法

石本 光司(いしもと・こうじ)

株式会社ドーガ
コーディングもするウェブデザイナー
ECサイト運営更新が多い

GoogleRankingAlgorithmに反映
4/9アナウンス .comのみ

わかっている計測方法2つ
Adwords:品質スコアにページ表示速度が関連している
「HTML」(画像CSSなどはふくまない)の表示速度
→すでに取り組まなければいけない案件

GoogleWebMasterTools
「サイトのパフォーマンス」
上位20% 1.4秒

高速サイトがもたらすほかの利益
再訪問数の増加
セッションあたりのPV増加
コンバージョン率の改善
収益増加
顧客満足度の向上
サーバなどインフラコストの現象

「トーン&マナー」→耳がない
SEO」→重要視
→パフォーマンスを意識したコーディング
→会社内での存在意義が高まる

コーダー・デザイナーは忙しい
HTML5
・CSS3
・JS
アクセシビリティ
ユーザビリティ
アクセス解析
jQuery

最小限の対策で最大限の効果

パフォーマンスというみえないものをビジュアライズする

HttpWatch6.2 BasicEdition
ウォーターフォールチャート
→リクエストの各段階で色分けされる

例:ドーガのトップページ:「赤色」が目立つ!
ほとんどがサーバ待ち時間(WaitTime!)=かならずかかる税金のようなものでどうしようもない
ハンバーガーショップのイメージ
IE6とFireFox3.6では読み込まれ方が違う
→「HTTP/1.1ホスト名ごとの同時接続数(2つまで)IE67」のため ←いまだにシェアが多い
IE8、FireFOXなどは6つなげる
Blockingで接続待ち時間が長い = レジが2つしかない

HTTPリクエストはコストが高い

  • 改善事例:株式会社ドーガ

CSSスプライト
データURIスキーム
CSSJSファイルの結合

CSSスプライト
複数画像をまとめて、CSS背景+位置指定で表示する
1回の注文でチキンナゲット3つ

  • 150msの成果

HTTPリクエスト数:11→3

CSSスプライトのジレンマ
ページ数 保守性 最適化 3つぜんぶをとれない

データURIスキーム

画像をデータでそのままHTMLに埋め込む
base64データ

→最強? Ie5-7非対応☆
→ハックで分岐処理
サイズ制限 Opera7.2 4.1KBまで

HTTPリクエスト数:1→0

CSSJSファイルの結合

CSS1枚、JS1枚に変更
→メンテナンス性が下がる
なんとかかんとかで@importを擬似的に表現するとさらによい

6→2

CSS3プロパティ
画像を使わないと表現できなかったものを、CSSで表現

ドーガでは使ってない

どの方法も欠点や短所がある
考えた
ChangeDesign!

NicoleSullivanワークショップ

デザインを考え直してみる
SmoothScroll機能って必要?「Topへ戻る」コストをかけてまで使うことはない
ページ高のあるページ自体あまりない
月2万PV中の5回しかおされてなかった

検索画像ボタンって必要?
月5、6回→デフォルトSubmitボタンに変更

2→1

  • まとめ

HTTPリクエスト32→17
平均読み込み時間0.5秒
速度統計上位2%にランクイン

パフォーマンスに対するコスト意識

パフォーマンスを武器に効率良く対策すべし
リクエストを減らす簡単な方法はない
それは本当に必要なのか考える

<感想>
内容的にはオライリー本でよく知っているものと同じだけれど、実践したことと効果を詳細に説明してとても説得力がありました。また、なぜパフォーマンスのチューニングが必要なのかというコンセプト部分とコーダーの役割・意識についての説明がとてもよかった!基調講演として期待した内容はまさにこの石本さんの話のようなものでした。