AMP HTML とカスタム HTML タグ

今回は AMP を実装時に扱う AMP HTML のタグについてです。

AMP はモバイルページを高速表示するプロジェクトやフレームワークです。

AMP では AMP HTML と呼ばれる HTML タグの制限と AMP 専用の HTML タグの用意があり、AMP HTML のルールに沿った記述が必要になります。それは AMP が高速表示を実現する為に外部リソースに制限や読み込みの処理をかけているからです。詳しい AMP の仕組みは下記の記事で紹介しています。

AMP | fff

AMPはモバイルページを高速表示する技術です。AMPの特徴や高速表示の仕組み、AMPを実装する方法やルールを紹介します。

AMP HTML で制限・禁止される要素

AMP HTML では特定の HTML タグが使い方に制限を設けられていたり、AMP HTML 専用のカスタムタグに置き換えられています。

要素説明
scriptscript要素の使用には制限があります。
script要素は AMP ランタイムや AMP の拡張コンポーネントをロードする為の使用か、type属性がapplication/ld+jsonもしくはtext/plainでない限り使用を禁止されています。
stylestyle要素の使用には制限があります。
AMP ボイラープレートコードの使用に必須で、他にカスタム目的でstyle要素を使う場合はhead要素内に1つだけ記述でき、<style amp-custom></style>のようにamp-custom属性を設定します。
basebase要素の使用は禁止されています。
base要素はページ内の全ての相対 URL の起点となる URL を指定する要素で、ページ内ではhead要素で1度しか使用できません。
imgimg要素の使用は禁止されており、amp-img要素を使います。
videovideo要素の使用は禁止されており、amp-video要素を使います。
audioaudio要素の使用は禁止されており、amp-audio要素を使います。
iframeiframe要素の使用は禁止されており、amp-iframe要素を使います。
frameframe要素の使用は禁止されています。
frame要素はframeset要素により分割されたフレームの表示内容を指定する要素です。なお、frame要素は HTML5 では非推奨となっています。
framesetframeset要素の使用は禁止されています。
frameset要素はウィンドウをいくつかのフレームに分割する要素です。なお、frameset要素は HTML5 では非推奨となっています。
objectobject要素の使用は禁止されています。
object要素は画像や HTML 文書、プラグインをはじめ様々な形式の外部データを組み込む為の要素です。
paramparam要素の使用は禁止されています。
param要素はobject要素により呼び出されるプラグインのパラメータを設定する要素です。
appletapplet要素の使用は禁止されています。applet要素は Java アプレットを組み込む為の要素です。なお、applet要素は HTML5 では廃止され、object要素の使用が推奨されています。
embedembed要素の使用は禁止されています。embed要素は外部アプリケーションやインタラクティブコンテンツ等をプラグインを使って組み込む為の要素です。
aa要素の使用には制限があります。
href属性にjavascript:から始まる値を設定することができず、設定する場合はtarget属性を_blankにしなければなりません。

広告と分析の AMP HTML 要素

要素説明
amp-ad広告を表示する要素です。
amp-ad-existA4A (AMP for Asd) の広告を終了する動作を提供する要素です。
amp-analytuicsAMP ドキュメントからアナリティクスデータを収集する要素です。
amp-auto-adsリモートで提供される設定ファイルを使用して AMP ページに広告を動的に挿入する要素です。
amp-call-trackingハイパーリンク内の電話番号を動的に置き換えてコールトラッキングを有効にする要素です。
amp-experimentAMP ドキュメントのユーザーエクスペリエンステストを行う為に使用する要素です。
amp-pixelページビューをカウントするトラッキングピクセルの要素です。
amp-sticky-adページの下部に広告コンテンツを表示して貼り付ける要素です。

動的コンテンツの AMP HTML 要素

要素説明
amp-access-laterpayサイト運営者が LaterPay マイクロペイメントプラットフォームと統合できる要素です。
amp-accessAMP ペイウォールとサブスクリプションのサポートを提供する要素です。
amp-bindデータバインドや JavaScript に似た単純な式を使用してユーザーの操作やデータの変更に応じた要素の変更を可能にする要素です。
amp-formフォームのサポートを提供する要素です。
amp-gistGitHub Gist を表示する要素です。
amp-install-serviceworkerServiceWorker をインストールする要素です。
amp-listデータを動的にダウンロードしテンプレートを使用してリスト項目を作成する要素です。
amp-live-listコンテンツの表示と更新をライブで行えるようにする要素です。
amp-mustacheMustache.js テンプレートのレンダリングを可能にする要素です。
amp-selectorオプションのメニューを表示してユーザーに選択を求めるコントロールを表示する要素です。
amp-user-notification非表示に切り替えることが可能な通知をユーザーに表示する要素です。
amp-web-pushユーザーがウェブプッシュ通知を受け取れるようにする要素です。

レイアウトの AMP HTML 要素

要素説明
amp-accordion閲覧者がコンテンツの概要を一目で把握し、選択した任意のセクションにジャンプできるようにする要素です。
amp-app-bannerアプリのインストールを促すフレーズが表示されたクロスプラットフォームの固定位置バナー用ラッパーと最小限の UI 要素です。
amp-carousel横軸に沿って複数の類似コンテンツを表示する要素です。
amp-fx-flying-carpet画面を固有の全画面スクロールコンテンツにラップしてビューポート全体を占めることなく全画面広告を表示できるようにする要素です。
amp-fx-parallax要素に3次元的な効果を付けられる属性です。
amp-iframeiframeを表示する要素です。
amp-lightboxライトボックスを実現する要素です。
amp-position-observerユーザーがスクロールする時のビューポート内の要素の位置を監視し他のコンポーネントとともに使用できるイベントをディスパッチする要素です。
amp-sidebarナビゲーション、リンク、ボタン、メニュー等の一時的なアクセスを意図したメタコンテンツを表示する要素です。

メディアの AMP HTML 要素

要素説明
amp-3q-player3Q SDN の動画を組み込む要素です。
amp-animアニメーション画像を管理する要素です。
amp-apester-mediaApester スマートユニットを表示する要素です。
amp-audioaudio 要素を置き換える要素です。
amp-brid-playerBrid.tv プレーヤーを表示する要素です。
amp-brightcoveBrightcove Video Cloud または Perform プレーヤーを表示する要素です。
amp-dailymotionDailymotion の動画を表示する要素です。
amp-google-vrview-imageVR イメージを表示する要素です。
amp-huluHulu のシンプルな埋め込み動画を表示する要素です。
amp-ima-videoIMA SDK に統合されたインストリーム動画広告用の動画プレーヤーを組み込む要素です。
amp-image-lightbox画像ライトボックスを実現する要素です。
amp-imgimg要素を置き換える要素です。
img要素と異なり<amp-img></amp-img>のように終了タグが必要になります。
amp-imgurImgur の投稿を表示する要素です。
amp-izleseneIzlesene の動画を表示する要素です。
amp-jwplayerクラウドでホストされる JW Player を表示する要素です。
amp-kaltura-playerKaltura 動画プラットフォームで使用される Kaltura Player を表示する要素です。
amp-nexxtv-playernexxOMNIA プラットフォームからのメディアストリームを表示する要素です。
amp-o2-playerAOL O2Player を表示する要素です。
amp-ooyala-playerOoyala の動画を表示する要素です。
amp-playbuzzPlaybuzz の任意のコンテンツを表示する要素です。
amp-reach-playerBeachfront Reach の動画プレーヤーを表示する要素です。
amp-soundcloudSoundcloud のクリップを再生する要素です。
amp-springboard-playerSpringboard Platform の動画プレーヤーを表示する要素です。
amp-videovideo要素を置き換える要素です。
amp-vimeoVimeo の動画を表示する要素です。
amp-youtubeYouTube の動画を表示する要素です。

プレゼンテーションの AMP HTML 要素

要素説明
amp-animationアニメーションを定義して表示する要素です。
amp-dynamic-css-classesCSS の動的なクラス名を HTML 要素にいくつか追加する要素です。
amp-fit-text任意のスペースにコンテンツが収まるようにフォントサイズを拡大もしくは縮小する要素です。
amp-fontカスタムフォントの読み込みをトリガーし処理を監視する要素です。
amp-timeago日時と時刻の形式に time ago の記述を加えファジーなタイムスタンプを提供する要素です。
amp-viz-vegaVega のデータ可視化の文法を使用して作成したビジュアル要素を表示する要素です。

ソーシャルの AMP HTML 要素

要素説明
amp-facebook-commentsFacebook のコメントプラグインを組み込む要素です。
amp-facebook-likeFacebook のいいね!ボタンプラグインを組み込む要素です。
amp-facebookFacebook の投稿や動画を表示する要素です。
amp-gfycatGfycat の動画 GIF を表示する要素です。
amp-instagramInstagram の埋め込みを表示する要素です。
amp-pinterestPinterest のウィジェットや Pin It ボタンを表示する要素です。
amp-redditReddit のコメントや投稿の埋め込みを表示する要素です。
amp-social-shareソーシャル共有ボタンを表示する要素です。
amp-twitterTwitter のツイートを表示する要素です。
amp-vineVine の Simple スタイルの埋め込みを表示する要素です。