先日の、Google I/0 2017ご覧になられましたでしょうか。中でも、AMPがこれから盛り上がりを見せそうなので、少し調べてみました。実装するには少し手間がかかりそうですが、導入する価値はありそうです。Webサイトのパフォーマンス向上は、ビジネスにも良い影響を与えることでしょう。
AMPとは
AMPとは、Accelerated Mobile Pagesの略称です。「アンプ」と読むのが一般的のようです。モバイル端末でウェブページを高速表示するためのフレームワーク(AMP HTML)のことを指します。ちなみに、GoogleとTwitterが共同開発!信頼性は高いですね。
先日の、Google I/0 2017で、楽天レシピなどの事例が取り上げられ盛り上がりを見せませした。AMP関連のプレゼンテーションの映像が見れますので、どうぞ。
- The AMP Keynote
- AMP Ads: Better Advertising on a Faster Web
- From AMP to PWA: Progressive Web AMPs
- Building beautiful, interactive AMP pages for e-commerce & beyond
AMP導入のメリット
AMP導入のメリットとしては、下記が2点挙げられます。
- ページの表示速度が上がる
- データ通信量を抑えることができる
特に、ニュースサイトや、メディアサイト、最近ではECサイトにも導入が進められているそうです。AMP対応するには、いくつか表現の制限事項(JSが決められたものしか使えないなど)もありますが、それを差し引いても導入する価値はありますね。(Content is KING!!)
先日の、名古屋マークアップ勉強会 The Final にて、サイバーエージェントの佐藤歩さん(@ahomu)が基調講演で、パフォーマンスについてのお話がありました。
この中で言及されてたのが、ページの表示遅延による、大手検索エンジンと広告収益の関係性を示す内容でした。
- 0.5秒遅れると1.2%の減益
- 1.0秒遅れると2.8%の減益
- 2.0秒遅れると4.3%の減益
となるそうです。
参考:The User and Business Impact of Server Delays, Additional Bytes, and HTTP Chunking in Web Search
大手で1.2%減益となると、かなり大きな額になりそうです。2秒の遅延で4.3%の減益。致命的ですね。。。お金に換算すると、その痛みが理解できます。。。
日本で生活していると、通信環境も良いですし、端末のスペックも良いので、個人的には、通信速度や、通信量を気にすることがありません。がしかし。そんなハイスペックな環境の中で生活しているのは、我々業界人だけなのでは、、、と思うこともあります。
イマドキの女子中高生は、TwitterやLINE、Instagramを使いまくってる(姪っ子がそうなんですが)。そして、月末には、容量制限で引っかかりイライラしている。挙句の果てには親と喧嘩してスマホを取り上げられる。そんな日常があるわけです。そんな女子中校生のためにも!ページの高速化は必要なんですね!
と、極端な例を出してしまいましたが、理由はどうあれ、素早く表示される方が、ユーザーにとってもビジネスしている側にも良いに決まってます。そんな理由があり、制作者としても、パフォーマンス改善をしていく必要があると切に感じています。
パフォーマンスは、アクセシビリティにも繋がります。これまた、サイバーエージェントの佐藤歩さん(@ahomu)の講演の中にでてきたのですが、
“使えない”はユーザー体験として サーバー障害と同じくらい深刻な問題
とのことす。
「プロダクトとして使いものになる品質」が、望まれるわけです。なので、目先のUXよりも、きちんと使えるという「体験」が重要と述べられてました。そういう意味で、、、パフォーマンスとアクセシビリティは重要という理解をしております。(AMP対応はその一環)
AMPの実装方法について
AMPの実装方法について見ていきましょう。
シンプルなベースコード(公式サイトより)
下記ソースコードを元に、作り込んでいくのが効率良いですね。
<!doctype html> <html ⚡> <head> <meta charset="utf-8"> <link rel="canonical" href="hello-world.html"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> <script async src="https://cdn.ampproject.org/v0.js"></script> </head> <body>Hello World!</body> </html>
適用のポイント
<html>
にamp or ⚡を記載- 文字コードはUTF-8
- canonical必要(通常版側には、amphtmlが必要)
- viewport必要
-
<style amp-boilerplate>
必要、中身は触らない -<script async src="https://cdn.ampproject.org/v0.js"></script>
必要 - カスタム属性で表現する
AMPで利用できるHTML要素
AMP版では、通常のHTML要素を使えないものがあります。AMP HTML Tag Addendumのページを参考にマークアップをするようにしましょう。
注意事項
- 通常版とAMP版のHTMLファイルをつくる必要がある
- 画像の表示は、幅(width)と高さ(height)を記載する必要がある
- CSSは、
<style amp-custom>
内に記載する - 一部の広告しか利用できない(Google AdSenseはOK、順次増えていく可能性あり)
- AMP対応は表示速度は早くなるが、ワンソースで基本管理できなくなるので、運用時には注意が必要
- Wordpressの場合、AMP対応のプラグインがあるので利用すると良い
AMPが適用されているか確認する方法
- urlの末尾に「#development=1」を追記
- デベロッパーツールのコンソールで「AMP validation successful.」が出ればOK
UI Components
- 主要なパーツは、UI Componentsとして用意されている
- 実装する際は、こちらを参考にマークアップを進める
- デザインもしかり
AMP Start
- AMP Start
- AMP対応のテンプレートをダウンロードすることができる
- ドロワーメニューも実装できる
関連記事
- いまさら聞けないPWAとAMP
- AMP対応方法
- AMP(Accelerated Mobile Pages) HTMLしてみたという話 | masuP.net
- AMP(Accelerated Mobile Pages)とは?今から導入するための基礎知識と手順書マニュアル
- ampで表示を高速化できるHTMLの書き方 | AMP適用方法
事例紹介
- Accelerated Mobile Pages プロジェクトについて – 導入ガイド日本語版を本日公開しました
- PWA対応したTwitterは毎日100万のユーザーがホーム画面アイコン経由 #IO17JP
- 滞在時間50%↑、PV3.1倍、直帰率75%↓――AMP+PWAで楽天レシピが大成功! #IO17JP
まとめ
- 個人的には、昔のガラケー対応的なイメージを持ちました
- 実装するには、別途ファイルをつくる必要があるので、工数必要
- 運用フェーズで、ページを2種類つくらないといけない工数を考えると、現実的かどうか?
- CMSでコンテンツ管理している場合であれば、運用も楽そう
- すべてのページを対応するのではなく、主要ページなど限定的に進めていくのもアリ
- 実際にどれだけ速度改善するかは、作ってみて確認する必要あり(←次の課題として試してみる)
おわり。