AMP(Accelerated Mobile Pages) HTMLとは、モバイル端末で高速に表示するためのHTMLファイルです。
仕様で定められた軽量なウェブページ(=AMP HTML)を用意しておくと、専用のサーバーからキャッシュして配信してくれます。
ご存知のように、通常のウェブページでは、配信元のWebサーバーへアクセスするのですが、AMPの場合は予めキャッシュされたページを配信してくれます。だから表示が短時間で済むわけですね。
ということで、今回はAMP HTMLの導入方法を分かりやすく解説してみたいと思います。
目次
AMP HTMLの導入方法
AMP HTMLを導入するにはCreate Your AMP HTML Pageに従ってAMP HTMLを記述していきます。通常のHTMLとの主な違いは以下の通りです。
- 通常のHTMLとAMP HTMLに互いのパスを追記する
- AMP HTMLのheadタグにお決まりのタグを追加
- カスタムエレメンツに置き換える
それでは順番に見ていきましょう。
1.通常のHTMLとAMP HTMLに互いのパスを追記する
AMPを導入する際には、1つのページにつき、通常のHTMLとAMP HTMLをそれぞれ作成します。まずは通常ページ(例:./index.html
)とAMP版ページ(例:./amp/index.html
)を用意してみましょう。
次に、通常のHTMLのheadタグにAMP HTMLの場所を示すパスを追記します。更にAMP HTMLには通常のHTMLのパスを追記していきます。
パスの記述例としては以下のようになります。
通常のHTML
./index.html1 2 3 4 5 6 7
| <!DOCTYPE html> <html> <head> <link rel="amphtml" href="./amp/index.html"> </head> ...
|
AMP版 HTML
./amp/index.html1 2 3 4 5 6 7
| <!doctype html> <html ⚡> <head> <link rel="canonical" href="../index.html" > </head> ...
|
通常のHTMLに対して行う変更作業は、以上で完了です。AMP HTMLについては引き続き2をご覧ください。
2.AMP HTMLのheadタグにお決まりのタグを追加
headタグ内には以下のコードのようにgoogle AMPで定められたmeta
タグやjs
を記述する決まりとなっています。まずは大まかに見ていきましょう。
./amp/index.html1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| <!doctype html> <html ⚡> <head> <meta charset="utf-8"> <title>Hello, AMPs</title> <link rel="canonical" href="../index.html" /> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "(記事のタイトル)", "description": "(記事の説明)", "mainEntityOfPage":{ "@type":"WebPage", "@id":"(記事のURL)" }, "datePublished": "(投稿日時)", "dateModified": "(変更日時)", "image": { "@type": "ImageObject", "url": "(アイキャッチとなる画像のURL)", "width" : "(アイキャッチとなる画像の幅。696px以上が必須)", "height" : "(アイキャッチとなる画像の高さ)" }, "author": { "@type": "Person", "name": "(著者名)" }, "publisher": { "@type": "Organization", "name": "(サイト名)", "logo": { "@type": "ImageObject", "url": "(サイトロゴのURL)", "width": "(サイトロゴの幅。600px以内が必須)", "height": "(サイトロゴの高さ。60px以内が必須)" } } } </script> <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 custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script> <script async src="https://cdn.ampproject.org/v0.js"></script> <style amp-custom> .example{font-size: 100%;} </style> </head> <body> <amp-analytics type="googleanalytics" id="google-analytics"> <script type="application/json"> { "vars": { "account": "UA-123456789" }, "triggers": { "trackPageview": { "on": "visible", "request": "pageview" } } } </script> </amp-analytics> <h1>Welcome to the AMP page</h1> <amp-img src="./sample.jpg" width="200" height="100"></amp-img> </body> ...
|
それでは各コードについて詳しく見ていきたいと思います。
外部jsやCSSの読み込みは不可
AMPでは外部のjavascriptやcssファイルの読み込みが禁止されています。cssはhead
タグの<style amp-custom></style>
内で直接記述が可能ですが、javascriptに関しては記述できません。
構造化データについて
上記のHTMLヘッダに含まれる構造化データ(schema.org)とは、AMPが検索結果として表示される情報の塊です。構造化データは記述のルールが幾つかあります。海外SEO情報ブログさんが非常に詳しい内容をまとめていらっしゃいますので、参照してください。
2016年2月追記:構造化データが必須では無くなった
AMP HTMLの構造化データは必須条件から外れ、任意に変更されました。
ただし、検索結果のトップニュース枠に表示されるようなAMPカルーセル(後述)には、これまで通り構造化データが必要です。
構造化データは、いくつかのタイプがあります。AMPがサポートしている構造タイプは全部で3種類です。
前述したHTMLの記述例では、ブログの記事を意味するBlogPosting
を指定してみました。
構造化データについて
Googleモバイル検索のAMPカルーセルに掲載させるために必要な構造化データ/schema.org
AMP向け構造化データの仕様
Top Stories with AMP | Structured Data | Google Developers
schema.org/BlogPostingの仕様
schema.org/BlogPosting | schema.org
AMPカルーセルで定めれた画像サイズの制約
googleの検索結果として表示されるAMP HTMLページをAMPカルーセルと呼びます。AMPカルーセルで定められているschema.orgの仕様については、Google AMP Projectの「Publishing AMPs for the Top Stories carousel」をご覧ください。決まりごとは沢山ありますが、特に注意すべき点はロゴ画像やアイキャッチのサイズです。以下のように画像の幅と高さに制約があります。
3.カスタムエレメンツに置き換える
bodyタグの内容については、一部、AMPで定められたカスタムエレメンツというAMP独自のタグに置き換える必要があります。
HTMLのタグ | AMP HTMLで使用するタグ |
img | amp-img |
video | amp-video |
audio | amp-audio |
iframe | amp-iframe |
例えばimgタグは以下のような記述となります。
通常のHTML
./index.html1
| <img src="./sample.jpg" width="200" height="100" />
|
AMP HTMLでは以下のようになります。
./amp/index.html1
| <amp-img src="./sample.jpg" width="200" height="100"></amp-img>
|
入力必須の属性があることに注意
amp-imgではsrc、width、heightが必須となります。
カスタムエレメンツに置き換わっているもの
その他カスタムエレメンツに置き換わっているものはGithubのampprojectにサンプルがありますので以下をご覧ください。
一例を挙げますと、youtubeやvimeoなどはカスタムエレメンツamp-youtube
やamp-vimeo
を使用する決まりになっています。サンプルコードのyoutube.amp.html
やvimeo.amp.html
をご覧ください。これらのカスタムエレメンツもやはりwidthやheight属性が必須となっています。
AMP HTMLの記述を確認する方法
AMPの記述が完了したら、最後にAMP記述をチェックしていきます。手順は簡単にまとめると、以下3つの流れで行います。
- Chrome Developer ToolsでAMP HTMLの検証
- 構造化データの検証
- Google Search Consoleでクロールされたか確認
詳しくは下記記事をご覧ください。
感想。AMPの導入でつまづいた所
画像や動画などを載せている記事では、AMP導入のハードルになるのではないかと思われます。なぜかというと、AMPの場合はwidth
属性やheight
属性の指定は記述必須となっているからです。特に画像をAPIやプラグイン経由で挿入している記事では、プラグインの見直しが必要になるケースもあるでしょう。
最後に
という事で、今回はAMP HTMLの仕様や導入方法について簡単にまとめてみました。もし更に興味のある方がいらっしゃいましたらGithubで更に仕様を確認してみてください。それでは!
github/amphtml
AMP Project