bootstrapのテンプレートから作ったサイトの高速化（PageSpeed Insights対策）

#<i class="fa fa-cubes" style="font-size:1em;"></i>はじめに
どーも、python大好きな終末プログラマ(自称)です。
私みたいな初心者がこんなテーマを論じていいのか不安ですが、備忘録も兼ねて書きたいと思います。

前回の投稿の通り、友人が飲食店をオープンしたのでbootstrapのテンプレートをこちょこちょいじってサイトを作ってあげたのですが、中身が大体完成したので公開に向けてgoogleさん対策でPageSpeed Insightsなどでいろいろ調べてみました。
[ineのurlスキームで簡単な注文システムを作ってみた](http://qiita.com/pio2/items/2841bb41f102e73e267d/)

今回は、HTMLとJavascript,cssしか使ってませんので、私が普段独自ドメインのメールサーバーとして使っているさくらのレンタルサーバー（ライト）で運用する予定なのでこの条件でテストしました。

お気づきの点があればどんどんご意見ください(^o^)/
#<i class="fa fa-area-chart" style="font-size:1em;"></i>webサイトの診断サイト
今回使ったのは下記のサイトです

PageSpeed Insights
googleの診断サイトです。今回はこのサイトの診断結果に対して改善していきました
https://developers.google.com/speed/pagespeed/insights/

gtmetrix
こちらも有名ですね。今回は点数をみるために使用しました
https://gtmetrix.com/

https://website.grader.com/
こちらは表示スピードの改善以外にも、META DESCRIPTIONの記載があるか、サイトマップはあるか、SSLの有無なんかも教えてくれます。

https://www.woorank.com/
有料ですが無料期間があります。めちゃくちゃ詳しく診断してくれます。月＄49は高いですが、フリーのウェブデザイナーさんならいいかも。
#<i class="fa fa-google" style="font-size:1em;"></i>　PageSpeed Insights
とりあえず診断してみた。
![b_mobile_score.png](https://qiita-image-store.s3.amazonaws.com/0/81959/348199b1-7a12-ed82-fe48-4ef3553f1dc1.png)
![b_pc_score.png](https://qiita-image-store.s3.amazonaws.com/0/81959/dedba4ae-c1f6-a0c5-44e0-19e13eb92e7e.png)

(参考)gtmetrix
![b_gtmetrix.png](https://qiita-image-store.s3.amazonaws.com/0/81959/1d7ab173-cd1e-1d3a-c515-99b08f4a7674.png)
ほぼテンプレなんでまあこんなもんでしょ。
#<i class="fa fa-bullhorn" style="font-size:1em;"></i>提案内容を改善していく
こんな感じです。
![suggestion_all.png](https://qiita-image-store.s3.amazonaws.com/0/81959/8fb98d55-c676-7b17-6e04-21236a3e202d.png)
それでは「修正方法を表示」を参考に改善していきましょう。
##画像を最適化する
たぶん一番簡単に改善できるんじゃないでしょうか。
https://tinypng.com/
指摘されている画像を圧縮します。
##スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する
これは最初にみえるページ（ファーストビュー）を表示する際に、cssやjavascriptファイルを読み込みしてるから遅くなるのを改善してねっという指摘です。
Javascriptは比較的簡単に改善できます。非同期でファイルを読み込むようにします。
https://developers.google.com/speed/docs/insights/BlockingJS

```js
<script async src="my.js">
```

cssはインラインにすればいいとのことですが、テンプレからインラインにするのは手間だし楽しくない作業なんで放置することにしました。(放置するのかよ！)
https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
##圧縮を有効にする
cssやJavascriptのファイルを圧縮します。
https://developers.google.com/speed/docs/insights/EnableCompression

いろいろ調べた結果、mod_deflateを使うことにしました。
パーミッションに注意し.htaccessファイルを作って下のサイトの内容をコピペ
https://httpd.apache.org/docs/2.0/ja/mod/mod_deflate.html
表示スピードが若干ですが改善されてました。
しかし、これはサーバー側で圧縮してるのでアクセスがたくさん来たときにどうなるかはわかんないなー。
##ブラウザのキャッシュを活用する
https://developers.google.com/speed/docs/insights/LeverageBrowserCaching
mod_expiresを使いました。下のサイトを参考に.htaccessに追加
http://www.webdesignleaves.com/wp/htmlcss/217/
##HTML 、css、Javascriptを縮小する
コメントや改行などを削除します。
下のサイトが便利でした。
http://minifycode.com/

#<i class="fa fa-check-square-o" style="font-size:1em;"></i> 改善結果
![a_mobile_score.png](https://qiita-image-store.s3.amazonaws.com/0/81959/40249516-a5c5-d625-f78e-e22fe5cd6e43.png)
![a_pc_score.png](https://qiita-image-store.s3.amazonaws.com/0/81959/79804013-0f0b-3889-bd51-e7bb52a56a31.png)
![a_gtmetrix.png](https://qiita-image-store.s3.amazonaws.com/0/81959/67c6f54a-488f-cec9-52bd-ac395078216a.png)
ページ表示速度:2.8s→1.4s
たまたまかもしれませんが、表示速度が半分になりました。
サーバーへのアクセス具合によって速度が変わってくるので、結果を過信できませんがかなり改善されました。
cssを放置しなければもっと改善できるんだろーなー。
#<i class="fa fa-comment" style="font-size:1em;"></i>改善してみて
* 改善する度に点数があがって速度があがるのは楽しい
* 自分でサイトを作るときはファーストビュー（今回は最近多い縦長のサイトだったのページの上の方）で必要なcssはインラインにしよう
* ファーストビュー以外の画像をLazy Loadで後から表示するのもアリな気がする
* 今回はHTMLの静的サイトだけどwordpressとか使うときは改善するのめんどくさそうだなー
* いろいろ調べてて、「seoに自信あり！」とか書いてる制作会社の会社ページが5点(表示速度も遅い)でweb業界の闇をのぞいた気がした

#<i class="fa fa-square" style="font-size:1em;"></i>おわりに
まあこんなもんかなーという感じです。
公開するまでにfaviconつくったり、独自ドメインの設定したり、サイトマップやgoogle analysis設定したり、クロール依頼したりといろいろすることあるなーと他人事のように思ってます。
確かにサイト作るのってデザインは当然ですがいろいろやることあるから、製作会社に頼んだら結構な金額とられるのも理解しました。
（参考）
[WordPressサイトを構築するといくらかかる？ 見積り勉強会で価格を出してみた](http://wordbench.org/2014/01/14/wordbench-kobe/)
お客さんの予算もあると思うけど、ぶっちゃけ素人のお客さんにはサイトの表示速度なんてわからないし、そこまでやってくれる制作会社ってどれくらいあるんだろう？
まあ、自分の会社サイトで速度出てないとこは、対策してくれないんだろーなーと漠然と思いました。

お気づきの点があればどんどんご意見ください(^o^)/