SlideShare a Scribd company logo
1 of 33
Google PageSpeeds Insights
得点向上のための改善
Presented by
Created by Kubo Shizuma
期間 2015.8.3 ~ 2015.8.13
久保 静真
VASILY フロントエンド インターン 成果報告
プロフィール
Created by Kubo Shizuma
久保 静真
東京大学工学部システム創成学科
VASILYインターン 2015.8.3~2015.8.13
学生向けイベントキュレーションサイトfacevent(http://facevent.jp/)の
開発を契機にプログラミングの世界に入る。
その後、faceventの開発チームで他サイトも作成。
また、それと平行して長期インターンを2社経験。
現在、プログラミングスクールTECH::CAMPメンターや他Rails開発に携わる。
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
目的と目標
Created by Kubo Shizuma
テーマ
iQONのPCトップページにおいて
Google の PageSpeed Insights の点数を上げる
PageSpeed Insightsは、ウェブページのコンテンツを解析し、
ページの読み込み時間を短くするための方法を提案してくれる。
目的と目標
Created by Kubo Shizuma
iQONのPC トップページの改善前の点数
35/100
画像の最適化
Created by Kubo Shizuma
35/100 -> 80/100
目標
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
初期状態
Created by Kubo Shizuma
Googleからのメッセージ
修正が必要
修正を考慮
・画像を最適化する
・ブラウザのキャッシュを活用する
・スクロールせずに見えるコンテンツのレンダリングを
ブロックしている JavaScript/CSS を排除する
・サーバーの応答時間を短縮する
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
JavaScript/CSS
Created by Kubo Shizuma
1. スクロールせずに見えるコンテンツのレンダリングを
ブロックしている JavaScript/CSS を排除する
JavaScript
下記のように、htmlにasync属性を付与。
このようにすることで、JavaScriptの読み込みを遅らせ、
ページの読み込みを妨げないようにする。
<script async src="my.js">
JavaScript リソースで document.write を使用している場合は、
非同期の読み込みを安全に使用できません。document.write を使用するスクリプトは、
別の方法を使用するように書き直すことをおすすめします。
また、JavaScript を非同期的に読み込む際に、ページで互いに依存している
複数のスクリプトを読み込む場合は、アプリケーションで適切な依存関係の順序でスクリプトを
読み込むように注意を払う必要があります。
引用:Google
JavaScript/CSS
Created by Kubo Shizuma
CSS
CSSファイルをhtmlのhead内にインライン化する。
インライン化ではCSSの読み込みをせずに直接head内にstyleを記述する。
<head>
<style>…</style>
</head>
<head>
<style>
<link rel…>
</style>
</head>
大きな CSS ファイルの場合は、スクロールせずに見える範囲のコンテンツの
レンダリングに必要な CSS を特定してインライン化し、残りのスタイルの読み込みは
スクロールせずに見える範囲のコンテンツの後まで遅らせる必要があります。
引用:Google
JavaScript/CSS
Created by Kubo Shizuma
JavaScript、CSSとも今回の対応で「修正を考慮」の項目
はクリアしたが、点数自体は変化がなかった。
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
画像の最適化
Created by Kubo Shizuma
2.画像を最適化
1
2
3
画像の圧縮率を上げる
画像のサイズを適切にする
不要なメタデータは削除する
画像を最適化するために
画像の最適化
Created by Kubo Shizuma
ⅰ. staticな画像の最適化
手動で画像のquality、メタデータの削除
ⅱ. CMSで登録した画像の最適及び新しい
サイズの画像の生成
初期:750x750、300x300の2種類
=>qualityの最適化、メタデータの削除
さらに、サイズ150x150のsmallサイズを準備
メタデータ:撮影日時やカメラの設定、画像加工ソフトの
情報などのデータ。今回は著作権がクリアな素材であるため
削除を行う。
画像の最適化
Created by Kubo Shizuma
*AWS S3内にて一括で画像の最適化及び新しいサイズの
画像を生成するためのbatchファイルを作成。
*AWS S3内の画像を一括でダウンロードし
backupフォルダを作成するbatchファイルを作成。
画像の最適化
Created by Kubo Shizuma
ⅲ. CMSで登録時に画像が最適化されるように変更
CMSで記事を登録時に画像を最適化するように変更
=>quality・サイズの最適化、メタデータの削除
画像の最適化
Created by Kubo Shizuma
35/100 -> 65 /100
点数の途中経過
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ
ブラウザのキャッシュ
Created by Kubo Shizuma
3.ブラウザのキャッシュを活用する
画像内のメタデータにキャッシュに関するデータを追加
画像のメタデータにCache-Control: max-ageヘッダーの設定
*AWS内の任意のフォルダにメタデータを追加するためのbatchファイルを作成。
ブラウザのキャッシュ
Created by Kubo Shizuma
35/100 -> 78 /100
点数の途中経過
ブラウザのキャッシュ
Created by Kubo Shizuma
35/100 -> 78 /100
点数の途中経過
目標 80/100 まであと少し足りない…
やれることはやったはずだが、
ブラウザのキャッシュ
Created by Kubo Shizuma
そうだ、遅延ローディングだ!
画像のqualityを維持したかった画像のデータ量が大きいままだった
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ 遅延ローディング
遅延ローディング
Created by Kubo Shizuma
4.画像を遅延ローディングする
ⅰ. jQueryプラグインlazy-loadを導入
画面下部のアイテムランキングの画像を遅延ローディング
遅延ローディング
Created by Kubo Shizuma
ⅱ. カルーセルの画像を遅延ローディング
カルーセルで初期で表示される画像とその両隣の画像以外を遅延ローディング
(はじめにカルーセルを移動するタイミングで残りの画像を読み込む)
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ 遅延ローディング
結果
Created by Kubo Shizuma
結果
35/100 -> 85 /100
目標到達!!
プログラム
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ 遅延ローディング
学び
Created by Kubo Shizuma
所感
◇ 35/100から85/100まで点数を上げられて、
目標に到達したので達成感!
◇ 78/100で目標の80点まで若干届かなかったときは焦った。
◇ faceventはPageSpeed Insightsで点数が
おそろしく低いのでこちらも改善しないと…
学び
Created by Kubo Shizuma
◇ 開発からdeployまでの一連の流れと
deployの責任と楽しさ
◇ 自分の技量の足りなさと今後の指針
インターンを通して
今回のインターンでは、このPageSpeed Insights以外にもタスクをこなし、
社員さんと同じようにdeployまで作業でき、
直接技術的な手ほどきも受けられてとても勉強になりました!
ありがとうございました!!
おわりに
Created by Kubo Shizuma
目的
目的と目標
初期状態
結論
結果
学び
改善
策
JavaScript/CSS 画像の最適化
ブラウザのキャッシュ 遅延ローディング
- 今回のプログラムを紹介してこれでおわりとします。

More Related Content

What's hot

2015-03-21 FlashAir 進捗報告会
2015-03-21 FlashAir 進捗報告会2015-03-21 FlashAir 進捗報告会
2015-03-21 FlashAir 進捗報告会Yoshiki Sato
 
Angular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップAngular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップKazuyoshi Tsuchiya
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作祐磨 堀
 
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)Seto Takahiro
 
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform appVisual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app一希 大田
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日Mitsuru Ogawa
 
Web標準技術で iOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発Web標準技術でiOS、Android両対応アプリを開発
Web標準技術で iOS、Android両対応アプリを開発 アシアル株式会社
 
Develop simpleappwithreacthooks
Develop simpleappwithreacthooksDevelop simpleappwithreacthooks
Develop simpleappwithreacthooksGenki Amagata
 
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会Monaca
 
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminarHTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminarkujirahand kujira
 
HTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionicHTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionicKenichi Kanai
 
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリAngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリアシアル株式会社
 
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントMonaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントアシアル株式会社
 
老舗大企業からスタートアップへの挑戦
老舗大企業からスタートアップへの挑戦老舗大企業からスタートアップへの挑戦
老舗大企業からスタートアップへの挑戦GuildWorks
 
Vagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法についてVagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法についてShinya Kinoshita
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜Takao Sumitomo
 
これからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへこれからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへMitsuru Ogawa
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発Kenjiro Kubota
 

What's hot (20)

Gartner summit 2016
Gartner summit 2016Gartner summit 2016
Gartner summit 2016
 
2015-03-21 FlashAir 進捗報告会
2015-03-21 FlashAir 進捗報告会2015-03-21 FlashAir 進捗報告会
2015-03-21 FlashAir 進捗報告会
 
Angular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップAngular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップ
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作
 
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
 
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform appVisual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
 
Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日
 
Web標準技術で iOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発Web標準技術でiOS、Android両対応アプリを開発
Web標準技術で iOS、Android両対応アプリを開発
 
Develop simpleappwithreacthooks
Develop simpleappwithreacthooksDevelop simpleappwithreacthooks
Develop simpleappwithreacthooks
 
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
 
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminarHTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
 
HTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionicHTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionic
 
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリAngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
 
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントMonaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
 
老舗大企業からスタートアップへの挑戦
老舗大企業からスタートアップへの挑戦老舗大企業からスタートアップへの挑戦
老舗大企業からスタートアップへの挑戦
 
Vagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法についてVagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法について
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
 
これからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへこれからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへ
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
 

Similar to Google PageSpeed Insights 得点向上のための改善 - VASILY フロントエンドインターン 成果報告-

20130622_android横須賀_LT
20130622_android横須賀_LT20130622_android横須賀_LT
20130622_android横須賀_LTkei aran
 
クラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えようクラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えようHiroaki Oikawa
 
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践慎一 古賀
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治Drecom Co., Ltd.
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏Yusuke Hirao
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれからShinichi Takahashi
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版Hiroaki Oikawa
 
福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるために福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるためにMiho Yamamori
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションKaoru NAKAMURA
 
島田商業 12班 掛川市
島田商業 12班 掛川市島田商業 12班 掛川市
島田商業 12班 掛川市Shigeru Suzuki
 
UnityとBlenderハンズオン第5章
UnityとBlenderハンズオン第5章UnityとBlenderハンズオン第5章
UnityとBlenderハンズオン第5章yaju88
 
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTVue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTLINE Corporation
 
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 Autumn
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 AutumnSketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 Autumn
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 AutumnRisako Imai
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterpriseKoichiro Sumi
 
Bootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りBootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りMasayuki Abe
 
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」KinkumaDesign
 

Similar to Google PageSpeed Insights 得点向上のための改善 - VASILY フロントエンドインターン 成果報告- (20)

20130622_android横須賀_LT
20130622_android横須賀_LT20130622_android横須賀_LT
20130622_android横須賀_LT
 
クラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えようクラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えよう
 
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
Web開発の 今までとこれから
Web開発の 今までとこれからWeb開発の 今までとこれから
Web開発の 今までとこれから
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版
 
Vu
VuVu
Vu
 
福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるために福井で「しあわせデザイナー」になるために
福井で「しあわせデザイナー」になるために
 
OpenCV on mobile
OpenCV on mobileOpenCV on mobile
OpenCV on mobile
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
島田商業 12班 掛川市
島田商業 12班 掛川市島田商業 12班 掛川市
島田商業 12班 掛川市
 
UnityとBlenderハンズオン第5章
UnityとBlenderハンズオン第5章UnityとBlenderハンズオン第5章
UnityとBlenderハンズオン第5章
 
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTVue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
 
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 Autumn
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 AutumnSketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 Autumn
Sketch VS Photoshop Webデザイン4番勝負 - WCAN 2015 Autumn
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterprise
 
Roo
RooRoo
Roo
 
非情報系学生を対象としたソフトウェア開発演習の設計と継続的改善
非情報系学生を対象としたソフトウェア開発演習の設計と継続的改善非情報系学生を対象としたソフトウェア開発演習の設計と継続的改善
非情報系学生を対象としたソフトウェア開発演習の設計と継続的改善
 
Bootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りBootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭り
 
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
 

Google PageSpeed Insights 得点向上のための改善 - VASILY フロントエンドインターン 成果報告-

  • 1. Google PageSpeeds Insights 得点向上のための改善 Presented by Created by Kubo Shizuma 期間 2015.8.3 ~ 2015.8.13 久保 静真 VASILY フロントエンド インターン 成果報告
  • 2. プロフィール Created by Kubo Shizuma 久保 静真 東京大学工学部システム創成学科 VASILYインターン 2015.8.3~2015.8.13 学生向けイベントキュレーションサイトfacevent(http://facevent.jp/)の 開発を契機にプログラミングの世界に入る。 その後、faceventの開発チームで他サイトも作成。 また、それと平行して長期インターンを2社経験。 現在、プログラミングスクールTECH::CAMPメンターや他Rails開発に携わる。
  • 3. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 4. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 5. 目的と目標 Created by Kubo Shizuma テーマ iQONのPCトップページにおいて Google の PageSpeed Insights の点数を上げる PageSpeed Insightsは、ウェブページのコンテンツを解析し、 ページの読み込み時間を短くするための方法を提案してくれる。
  • 6. 目的と目標 Created by Kubo Shizuma iQONのPC トップページの改善前の点数 35/100
  • 7. 画像の最適化 Created by Kubo Shizuma 35/100 -> 80/100 目標
  • 8. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 9. 初期状態 Created by Kubo Shizuma Googleからのメッセージ 修正が必要 修正を考慮 ・画像を最適化する ・ブラウザのキャッシュを活用する ・スクロールせずに見えるコンテンツのレンダリングを ブロックしている JavaScript/CSS を排除する ・サーバーの応答時間を短縮する
  • 10. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 11. JavaScript/CSS Created by Kubo Shizuma 1. スクロールせずに見えるコンテンツのレンダリングを ブロックしている JavaScript/CSS を排除する JavaScript 下記のように、htmlにasync属性を付与。 このようにすることで、JavaScriptの読み込みを遅らせ、 ページの読み込みを妨げないようにする。 <script async src="my.js"> JavaScript リソースで document.write を使用している場合は、 非同期の読み込みを安全に使用できません。document.write を使用するスクリプトは、 別の方法を使用するように書き直すことをおすすめします。 また、JavaScript を非同期的に読み込む際に、ページで互いに依存している 複数のスクリプトを読み込む場合は、アプリケーションで適切な依存関係の順序でスクリプトを 読み込むように注意を払う必要があります。 引用:Google
  • 12. JavaScript/CSS Created by Kubo Shizuma CSS CSSファイルをhtmlのhead内にインライン化する。 インライン化ではCSSの読み込みをせずに直接head内にstyleを記述する。 <head> <style>…</style> </head> <head> <style> <link rel…> </style> </head> 大きな CSS ファイルの場合は、スクロールせずに見える範囲のコンテンツの レンダリングに必要な CSS を特定してインライン化し、残りのスタイルの読み込みは スクロールせずに見える範囲のコンテンツの後まで遅らせる必要があります。 引用:Google
  • 13. JavaScript/CSS Created by Kubo Shizuma JavaScript、CSSとも今回の対応で「修正を考慮」の項目 はクリアしたが、点数自体は変化がなかった。
  • 14. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 15. 画像の最適化 Created by Kubo Shizuma 2.画像を最適化 1 2 3 画像の圧縮率を上げる 画像のサイズを適切にする 不要なメタデータは削除する 画像を最適化するために
  • 16. 画像の最適化 Created by Kubo Shizuma ⅰ. staticな画像の最適化 手動で画像のquality、メタデータの削除 ⅱ. CMSで登録した画像の最適及び新しい サイズの画像の生成 初期:750x750、300x300の2種類 =>qualityの最適化、メタデータの削除 さらに、サイズ150x150のsmallサイズを準備 メタデータ:撮影日時やカメラの設定、画像加工ソフトの 情報などのデータ。今回は著作権がクリアな素材であるため 削除を行う。
  • 17. 画像の最適化 Created by Kubo Shizuma *AWS S3内にて一括で画像の最適化及び新しいサイズの 画像を生成するためのbatchファイルを作成。 *AWS S3内の画像を一括でダウンロードし backupフォルダを作成するbatchファイルを作成。
  • 18. 画像の最適化 Created by Kubo Shizuma ⅲ. CMSで登録時に画像が最適化されるように変更 CMSで記事を登録時に画像を最適化するように変更 =>quality・サイズの最適化、メタデータの削除
  • 19. 画像の最適化 Created by Kubo Shizuma 35/100 -> 65 /100 点数の途中経過
  • 20. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ
  • 21. ブラウザのキャッシュ Created by Kubo Shizuma 3.ブラウザのキャッシュを活用する 画像内のメタデータにキャッシュに関するデータを追加 画像のメタデータにCache-Control: max-ageヘッダーの設定 *AWS内の任意のフォルダにメタデータを追加するためのbatchファイルを作成。
  • 22. ブラウザのキャッシュ Created by Kubo Shizuma 35/100 -> 78 /100 点数の途中経過
  • 23. ブラウザのキャッシュ Created by Kubo Shizuma 35/100 -> 78 /100 点数の途中経過 目標 80/100 まであと少し足りない… やれることはやったはずだが、
  • 24. ブラウザのキャッシュ Created by Kubo Shizuma そうだ、遅延ローディングだ! 画像のqualityを維持したかった画像のデータ量が大きいままだった
  • 25. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ 遅延ローディング
  • 26. 遅延ローディング Created by Kubo Shizuma 4.画像を遅延ローディングする ⅰ. jQueryプラグインlazy-loadを導入 画面下部のアイテムランキングの画像を遅延ローディング
  • 27. 遅延ローディング Created by Kubo Shizuma ⅱ. カルーセルの画像を遅延ローディング カルーセルで初期で表示される画像とその両隣の画像以外を遅延ローディング (はじめにカルーセルを移動するタイミングで残りの画像を読み込む)
  • 28. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ 遅延ローディング
  • 29. 結果 Created by Kubo Shizuma 結果 35/100 -> 85 /100 目標到達!!
  • 30. プログラム Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ 遅延ローディング
  • 31. 学び Created by Kubo Shizuma 所感 ◇ 35/100から85/100まで点数を上げられて、 目標に到達したので達成感! ◇ 78/100で目標の80点まで若干届かなかったときは焦った。 ◇ faceventはPageSpeed Insightsで点数が おそろしく低いのでこちらも改善しないと…
  • 32. 学び Created by Kubo Shizuma ◇ 開発からdeployまでの一連の流れと deployの責任と楽しさ ◇ 自分の技量の足りなさと今後の指針 インターンを通して 今回のインターンでは、このPageSpeed Insights以外にもタスクをこなし、 社員さんと同じようにdeployまで作業でき、 直接技術的な手ほどきも受けられてとても勉強になりました! ありがとうございました!!
  • 33. おわりに Created by Kubo Shizuma 目的 目的と目標 初期状態 結論 結果 学び 改善 策 JavaScript/CSS 画像の最適化 ブラウザのキャッシュ 遅延ローディング - 今回のプログラムを紹介してこれでおわりとします。