FrontEnd

AMPに対応してモバイルページを高速に表示させる

投稿日:

はじめに

先日参加した「HTML5 Conference 2018」では、AMPに関するセッションがいくつかあり注目度の高さが伺えました。そこで今回はAMPの基礎について紹介します。

AMPとは

AMP(アンプ)はAccelerated Mobile Pagesの略で、2015年10月にGoogleとTwitterが共同で立ち上げたオープンソースプロジェクトです。一般的には、モバイルページを高速で表示させるための手法を指します。

なぜAMPでは高速に表示されるのか

AMPがパフォーマンスを改善する仕組みにはいくつかありますが、その一部を紹介します。

非同期スクリプトのみを許可

今、多くのWebページではUXを向上させるために多くのJavaScriptが動作していることがあります。しかし、これによりレンダリングに時間がかかる場合があります。そこでAMPでは非同期のJavaScriptのみ使用を許可しています。

一方でサードパーティのJavaScriptに関してはiframe内で使用可能です。

リソース読み込みに優先度を付ける

AMPでは読み込むリソースの優先順位付けを行っており、その時点で重要なリソースが最初にダウンロードされるように処理を最適化します。そして、遅延読み込みされるリソースはプリフェッチします。

プリレンダリング

通常のWebページでは、クリック等でアクセスを要求してからHTML等が読み込まれるため、ページが表示されるまでにタイムラグがありました。しかしAMPでは、preconnect APIを活用することにより、ページを開く前に事前にページが読み込まれるようになるため、高速に表示することができます。

AMPの3要素

AMPは大きく分けて3つの要素から構成されています。それぞれについて説明します。

AMP HTML

AMP HTMLは安定したパフォーマンスのためにいくつか制限が課されていますが、基本的にはカスタムAMPプロパティがついたHTMLの拡張版です。

AMP HTMLページのほとんどのタグは通常のHTMLのタグと変わりませんが、一部のタグはAMP固有のタグに置き換えられます(amp-imgなど)

AMP JS

AMP JSライブラリは、AMP HTMLページの高速なレンダリングを可能とします。

AMP JSライブラリには、AMPのパフォーマンスに関する設定が実装されており、リソースの読み込み管理やカスタムタグを提供することで、ページの高速なレンダリングを実現します。

AMP Cache

AMP HTMLページを提供する場合は、Google AMP Cacheを利用することができます。

Google AMP Cacheはプロキシベースのコンテンツ配信ネットワークです。AMP HTMLページをフェッチしてキャッシュし、ページのパフォーマンスを自動的に向上させてくれます。

AMPへの対応方法

では、実際にAMPに対応するための方法を紹介します。

AMP HTMLの宣言

下記のように宣言します。ampの部分はカミナリの絵文字で表現することも可能です。

meta要素の指定

AMPはUTF-8にのみ対応していますので、文字コードにはutf-8を指定します。また、ビューポートの指定も必須で、どちらか一方が欠けてもエラーになります。

構造化マークアップ

JSON-LDを指定して、下記のようにページの構成をクローラーに伝える必要があります。これを省略するとサーチコンソールでエラーになります。

boilerplate

AMP JSが読み込まれるまでコンテンツを非表示にするためのCSSボイラープレートです。以下の通り記述します。

ライブラリの読み込み

AMP JSライブラリを読み込みます。以下の通り記述します。

カノニカルとアノテーション

AMPではcanonicalタグで元のページとの関連性をクローラーに伝える必要があります。AMPページには下記のように記述します。

続いて、AMP元のページにも下記のように記述します。

サンプルコード

最後にこちらに記載されている基本のテンプレートを紹介します。以下のコードは適宜修正することでAMP対応ページを作ることができます。

さいごに

モバイルページを高速で表示するための手法であるAMPについて紹介しました。実際に見てみるとAMPページは本当に高速で表示されるので、モバイル向けのページが有る場合は対応する価値が十分にあると思います。

おすすめ書籍

HTML&CSSとWebデザインが 1冊できちんと身につく本  これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん  ゲームを作りながら楽しく学べるHTML5+CSS+JavaScriptプログラミング[改訂版] (Future Coders(NextPublishing))  リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

page_footer_300rect




page_footer_300rect




-FrontEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Vue.js入門その7〜セレクトボックスを動的に変更してみる〜

1 はじめに1.1 サンプル2 とりあえず作ってみる2.1 ソースコード2.2 セレクトボックスにv-modelでバインド2.3 <option>はv-forでリストレンダリング2.4 メ ...

Vue on Rails で作ったアプリを振り返ってみる

1 はじめに2 全体的なこと2.1 ディレクトリ構成2.2 CSSフレームワーク2.3 Capistranoでのデプロイ3 axiosのラッパー4 Vuex4.1 ログインの状態管理5 Router6 ...

react-icon

【初級者向け】Reactの開発環境の構築

1 はじめに2 Reactとは2.1 Declarative2.2 Component-Based2.3 Learn Once, Write Anyway2.4 Reactのメリット、デメリット3 環 ...

ウチのMaterialize事情

1 はじめに2 ボタン3 フォーム3.1 ラベルについて3.2 セレクトボックスについて3.3 ラジオボタンについて4 アラート5 フォント6 さいごに はじめに うちのチームでは現在、CSSフレーム ...

js

JavaScriptのみでPOSTした場合のCSRFトークンの認証に関するTIPS

1 はじめに2 実装2.1 なぜエラーが発生したか2.2 修正後のコード3 さいごに はじめに RailsアプリケーションでPOSTリクエストを送る場合、多くの場合はform_withなどのヘルパーを ...

フォロー

follow us in feedly

AppLink

英語

page_side_300rect

2018年12月
« 11月  
 1
2345678
9101112131415
16171819202122
23242526272829
3031 

アプリ情報

目標を達成したい方を応援する、TODOアプリもリリースしております。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。