at backyard

Color my life with the chaos of trouble.

Next.jsでAMPのサンプルを最速で試す

完全なる自分用メモ(備忘録)

下記を参考にすればOK
(Next.jsのAMPのサンプル)

github.com

以下のコマンドを順に実行すればAMPのサンプルページが立ち上がる。
あとは localhost:3000にアクセスするだけ。

yarn create next-app --example amp amp-app
cd amp-app
yarn dev

実際にコードを見てみるとAMPのexampleだけあって amp-img を使用しているなど AMP ならではの書き方になっているので、例えば、最初からAMP対応を想定したサイトを作成する場合は、とても参考になる。

開発時は yarn dev で実行していくことになると思うが、実際にデプロイするときは下記の手順を踏む。
(普通にNext.jsでデプロイするとき特に変わらない)

yarn build

# cloneした段階だと "export"コマンドは定義されていなかったので、直接叩いている
# outディレクトリ内にamp対応のhtmlがexportされたのが分かる
yarn next export

yarn start

以上でAMP対応したNext.jsのHTMLを生成できる。

例えば、Netlifyなどでデプロイするときは、buildexport コマンドを組み合わせて Build command を定義し、Publish directoryout ディレクトリに指定すればOK。

AMP対応を行う際に便利なChrome拡張 - AMP Validator

ちなみにAMPが効いているかどうかを判断するために下記のChrome拡張機能を入れておくと良いようだ。
(なお、next.js の AMP 有効時( yarn dev 実行時)は 必ず1件はエラーになるよう。詳細は下記に貼ったmizuchi氏のポストを参照)

chrome.google.com

ちなみに export後に yarn start してアクセスすると、今度はChrome拡張のAMPアイコンが緑になっているのが分かる。
実際のリリース後の挙動はこうなる。

その他AMP with Next.js 関連の日本語の情報だと、最近のmizuchi氏のポストが小気味よくまとまっていて、分かりやすいと感じた。
(あまり日本語の情報を漁っていたわけではないので、厳選しているというわけではないが、とても読みやすかった)

mizchi.dev

ちなみに上で書いたNext.jsとは関係ないのだが、勉強がてら静的なHTMLで構成したペラサイトをAMP対応させようと作業しているが、なかなか苦労している。
苦労している要因としては、AMPに対応していない動きがある処理があったり、対応していないCSS構文が書かれていたりするためである。これらをAMPの制限がある側に寄せていくのがけっこう大変。
下記のドキュメントを見ながら作業しているが、こういうときにAMPだとどうすればよいかというところを一つ一つ潰している地道な道のりとなっている。

amp.dev