AMPサイトを作ってみる

2018年3月2日

AMP対応テーマを使ってWordPressサイトをAMP対応しましたが、CMSを使わないサイトをAMP対応するために少し調べてみました。

AMP Startフレームワーク

AMPプロジェクトが提供しているAMP Startというフレームワークがあります。何種類かテンプレートがあって、このファイルを書き換えるだけでAMP対応サイトができてしまいます。

グリッドレイアウトやコンポーネントの配置など、Bootstrapなどのフレームワークを使ったことがあれば馴染みのある手順でサイトを構築できます。

AMP Startテンプレートは様々なJavaScriptやStyle Sheetを読み込んで動作しますが、リセットにNormalize.cssを、デザイン用にBass.cssを読み込むので、それぞれのドキュメントに目を通しておくと一通りの動作が理解できます。

AMPの最小構成

フレームワークを使っているのにGoogle Search Consoleでエラー出たので、何が必要で何が不要かをAMPプロジェクトのガイドページで確認してみました。

以下がAMPプロジェクトのガイドページにあったテンプレート。

サイトのテンプレートには8行目のviewport設定の下にSchema.orgのJSONデータがありましたが、必須ではないということでここでは外しました。というかサイトのテンプレートのままではデータが不十分でSearch Consoleでエラーになっちゃったんだけど。

<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <title>Hello, AMPs</title>
    <link rel="canonical" href="https://amp.dev/ja/documentation/guides-and-tutorials/start/create/basic_markup">
    <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>
<style amp-custom>/* any custom style goes here */</style>
  </head>
  <body>
    <h1>Welcome to the mobile web</h1>
  </body>
</html>

AMP必須の仕様は以下の7点です。

  1. 2行目:htmlタグにamp属性を追加します。この時絵文字を使って<html ⚡>としても可。
  2. 4行目:最初に文字コード指定をします。指定できるのはutf-8だけです。ま、いまどきシフトJISやEUC-JPもないだろうけど。
  3. 5行目:2番目に指定するのがAMP JSライブラリの読み込み。AMPではJavascriptは非同期処理でしか使用できません。
  4. 7行目:AMPページには通常のHTMLバージョンも存在することがあるので、重複コンテンツにならないようにrel="canonical"を設定しておきます。HTMLバージョンが存在しない場合は自分自身(AMPページそのもの)を指定します。
  5. 8行目:いまどきはモバイルファーストなので黙っていても指定されているかもですが、viewportの設定が必須です。
  6. 9行目:AMPボイラープレートコードと呼ばれているスタイルシート。AMP JSが読み込まれるまでの間、ページを非表示にするコードです。
  7. 10行目:インラインスタイルシートで装飾。AMPでは外部ファイルの読み込みを極力抑えるためにCSSはインラインで指定します。

これだけ。あとはHTML5の仕様に従って書くだけ。意外と簡単だった。

AMP対応ブラウザ

AMP専用タグは通常のhtmlタグとは異なります。iOSやAndroid用はよほど古いものでなければAMPタグに対応していそうですが、調べてみたらie以外のフルブラウザもWindows、MacともにAMP対応していました。

Luxeritasの場合はAMP非対応タグを書き換えて表示していたようですが、AMP StartテンプレートはAMPタグを使って書かれています。

更にレスポンシブ対応されているので、AMP対応ブラウザであれば単一のコードでスマホもタブレットもPCもちゃんと動作させることができますよ。

というわけでAMP Startを使って作ってみたサイトがこちら。

Cantonese Opera for Foreigners

AMPテストの結果、「amp-position-observerが使用されていない」とのエラーが出ましたが、当該コードを削除したところ問題なしとなりました。機能をいくつか削除した際に不要になったんでしょうね。