有効な AMP ドキュメントを作成するには、検証エラーが 1 つもない状態にする必要があります。 このドキュメントの目的は、AMP ページを検証するときに見つかった検証エラーを正しく理解して修正できるようにすることです。 検証エラーの概要については、AMP 検証ツールの仕様をご覧ください。

AMP HTML タグと属性のエラー

必須タグがない

コード MANDATORY_TAG_MISSING
形式 "The mandatory tag '%1' is missing or incorrect."
修正方法 必須の HTML タグを追加(または修正)します。

以下のタグは、すべての AMP ドキュメントで必ず必要です。

  • <!doctype html>
  • <html amp> or <html ⚡>
  • <head>
  • <link rel="canonical" href="$SOME_URL" />
  • <meta charset="utf-8">
  • <meta name="viewport" content="...">
  • <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 src="https://cdn.ampproject.org/v0.js"></script>
  • <body>

AMP 検証ツールの仕様では、上記の必須タグには mandatory: true フィールドが含まれています。また、AMP 仕様にも必須タグについての説明があります。

あるタグで必要な別のタグがない

コード TAG_REQUIRED_BY_MISSING
形式 "The '%1' tag is missing or incorrect, but required by '%2'."
修正方法 必要な HTML タグを追加(または修正)します。

検証ツールで TAG_REQUIRED_BY_MISSING エラーが返されるのは、AMP ドキュメント内に拡張コンポーネントが見つかったものの、それに相当する <script> が見つからない場合です。

拡張コンポーネントは、カスタム要素として明示的に AMP ドキュメントに含める必要があります。 このエラーを修正するには、拡張コンポーネントのリファレンス ページに移動して、必要なスクリプトをコピーし、AMP ドキュメントの <head> に貼り付けます。

タグが許可されていない

コード DISALLOWED_TAG
形式 "The tag '%1' is disallowed."
修正方法 許可されていないタグを削除します。

タグはホワイトリストに登録されていて、許可されていないタグを網羅したリストはありません。ただし、AMP 仕様では許可されていないタグを大まかに定義しています。

必須属性がない

コード MANDATORY_ATTR_MISSING
形式 "The mandatory attribute '%1' is missing in tag '%2'."
修正方法 タグに必須属性を追加します。

AMP タグに必須の属性は、AMP 検証ツールの仕様に定義されています。 タグを検索し、列記されている属性を見て、mandatory: true の記述があるかどうか確認します。 各 AMP タグの必須属性は、そのタグの仕様内にも定義されています。

属性値が無効

コード INVALID_ATTR_VALUE
形式 "The attribute '%1' in tag '%2' is set to the invalid value '%3'."
修正方法 属性値を有効な値に修正します。

このエラーは、HTML タグに指定されている属性の属性名は正しいものの、値が無効であることを表しています。 たとえば、このエラーの原因としてよくあるのが、無効な URL 値です。 すべての URL の値(href 属性と src 属性内)は、指定可能な属性値のいずれかに一致する必要があります。

重要: AMP で使用する URL 値の多くは HTTPS であることが必要です。 このエラーが発生して、その原因がわからない場合は、該当する AMP タグの仕様を調べて 属性を HTTPS にする必要がないかどうかを確認してください。

属性が許可されていない

コード DISALLOWED_ATTR
形式 "The attribute '%1' may not appear in tag '%2'."
修正方法 HTML タグから属性を削除します。

属性はホワイトリストに登録されていて、許可されていない属性を網羅したリストはありません。 各タグでサポートされている属性を確認するには、AMP 検証ツールの仕様で HTML タグを検索してから、attrs を検索します。

どの AMP タグも、各タグごとのホワイトリストに登録された属性に加えて、$GLOBAL_ATTRS 以下のホワイトリストにある属性を使用できます。また、"data-" で始まる属性もすべてホワイトリストに登録されています。

必須のテキストがない、または正しくない

コード MANDATORY_CDATA_MISSING_OR_INCORRECT
形式 "The mandatory text (CDATA) inside tag '%1' is missing or incorrect."
修正方法 タグ内の必須のテキストを追加するか、または修正します。

CDATA は、HTML の開始タグと終了タグの間に記述するコンテンツ データで、現在のところ、ホワイトリストとブラックリストの両方を使って評価されます。必須の CDATA が含まれるタグは次のとおりです。

<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>

この場合に表示される詳細なメッセージは次のいずれかです。

  • "Mandatory style boilerplate (js enabled)"
  • "Mandatory style boilerplate (noscript)"
  • "Disallowed -amp- CSS class name prefix"
  • "Disallowed !important attribute in CSS"
  • "Disallowed @charset in CSS"
  • "Disallowed @import in CSS"
  • "Disallowed @namespace in CSS"
  • "Disallowed @supports in CSS"
  • "Disallowed @document in CSS"
  • "Disallowed @page in CSS"
  • "Disallowed @viewport in CSS"

タグ内のテキストが許可されていない

コード CDATA_VIOLATES_BLACKLIST
形式 "The text (CDATA) inside tag '%1' matches '%2', which is disallowed."
修正方法 許可されていないテキストを削除します。

重要な CSS AMP ルールを評価するため、特定の CSS データはブラックリストに登録されています。

ブラックリストに登録されている CSS データは以下のとおりです(AMP 検証ツールの仕様内の blacklisted_cdata_regex もご覧ください)。

  • "\\.i?-amp-"(「CSS クラス名接頭辞 -amp-」)
  • "!important"
  • "charset"
  • "@import"
  • "@namespace"
  • "@document"
  • "@page"
  • "@viewport"

タグの属性内のプロパティが許可されていない

コード DISALLOWED_PROPERTY_IN_ATTR_VALUE
形式 "The property '%1' in attribute '%2' in tag '%3' is disallowed."
修正方法 指定された属性内の許可されていないプロパティを削除します。

このエラーは、属性内のプロパティ名が許可されていない場合に発生します。この文脈における「プロパティ」という用語は、属性内の構造化された Key-Value データを意味します。たとえば、<meta name="viewport content="width=device-width;minimum-scale=1"> 内では、widthminimum-scale がプロパティ名です。

次のコードは DISALLOWED_PROPERTY_IN_ATTR_VALUE エラーになります。

<meta name="viewport content="width=device-width;invalidfoo=1">

別の例として、次のコードもエラーになります。

<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">

正しくは、<meta http-equiv="X-UA-Compatible" content="ie=edge"> です。

プロパティ値が無効

コード INVALID_PROPERTY_VALUE_IN_ATTR_VALUE
形式 "The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."
修正方法 無効なプロパティ値を修正します。

このエラーは、属性内のプロパティ値が無効である場合に発生します。この文脈における「プロパティ」という用語は、属性内の構造化された Key-Value データを意味します。たとえば、<meta name="viewport content="width=device-width;minimum-scale=1"> 内では、device-width1 がプロパティ値です。

次のコードは INVALID_PROPERTY_VALUE_IN_ATTR_VALUE エラーになります。

<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">

別の例として、次のコードもエラーになります。

<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">

正しくは、<meta http-equiv="X-UA-Compatible" content="ie=edge"> です。

URL が指定されていない

コード MISSING_URL
形式 "Missing URL for attribute '%1' in tag '%2'."
修正方法 有効な URL を追加します。

このエラーは、href 属性や src 属性など、URL の指定が必要な属性で URL が指定されていない場合に発生します。

URL が無効

コード INVALID_URL_PROTOCOL
形式 "Malformed URL '%3' for attribute '%1' in tag '%2'"
修正方法 無効な URL を修正します。

このエラーは、属性に指定されている URL が無効である場合に発生します。

URL プロトコルが無効

コード INVALID_URL_PROTOCOL
形式 Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.
修正方法 有効なプロトコルに(たとえば `http` を `https` に)変更します。

このエラーは、タグ内の href または src で特定のプロトコルに設定する必要がある場合に発生します。たとえば、多くのタグでは https が必要です。

属性値に必須のプロパティがない

コード MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE
形式 "The property '%1' is missing from attribute '%2' in tag '%3'."
修正方法 欠落しているプロパティを追加します。

現在、このエラーは以下の必須プロパティが指定されていない場合に発生します。

  • content="...ie=..."
  • content="...width=..."
  • content="...minimum-scale=..."

これらは次のようなタグで使用されます。

  • <meta http-equiv="X-UA-Compatible" content="ie=edge">
  • <meta name=viewport content="width=device-width;minimum-scale=1">

同時に指定できない属性が含まれている

コード MUTUALLY_EXCLUSIVE_ATTRS
形式 "Mutually exclusive attributes encountered in tag '%1' - pick one of %2."
修正方法 同時に指定できない属性のいずれか 1 つを削除します。

このエラーは、同時に指定できない 2 つの属性がどちらもタグに含まれている場合に発生します。 たとえば、次のタグではどちらか 1 つしか指定できません。

リスト内の必須属性がない

コード MANDATORY_ONEOF_ATTR_MISSING
形式 "The tag '%1' is missing a mandatory attribute - pick one of %2."
修正方法 指定可能な属性リストの中から、欠落している必須属性を選んで追加します。

このエラーは、複数の選択肢がある必須属性が 1 つも指定されていない場合に発生します。 たとえば、次のタグでは 2 つの属性のうちどちらか 1 つを指定する必要があります。

親タグが間違っている

コード WRONG_PARENT_TAG
形式 "The parent tag of tag '%1' is '%2', but it can only be '%3'."
修正方法 正しい親タグの子にします。

特定のタグでは、(階層が離れた祖先ではなく)直接の親タグが必要です。 以下に挙げるものが、親タグが必要なタグです(タグ、親タグの順)。

  • !doctype には親タグ root が必要
  • html には親タグ !doctype が必要
  • head には親タグ html が必要
  • body には親タグ html が必要
  • link には親タグ head が必要
  • meta には親タグ head が必要
  • style amp-custom には親タグ head が必要
  • style には親タグ boilerplate (noscript) が必要
  • noscript には親タグ head が必要
  • script には親タグ head が必要
  • source にはメディアタグ(amp-audioamp-video など)が必要

祖先にできないタグ

コード DISALLOWED_TAG_ANCESTOR
形式 "The tag '%1' may not appear as a descendant of tag '%2'."
修正方法 ネストが許可されてないタグを削除(または移動)します。

このエラーは、いずれかのタグが、祖先として有効でないタグの子孫になっている場合に発生します。現在のところ、この唯一の例は template タグです。このタグは別の template タグにネストすることはできません。

必須の祖先タグ

コード MANDATORY_TAG_ANCESTOR
形式 "The tag '%1' may only appear as a descendant of tag '%2'."
修正方法 問題のタグを削除するか、または指定されたタグの子孫にします。

必須の子孫は、AMP 検証ツールの仕様mandatory_ancestor として定義されています。

このエラーは、以下のタグで mandatory_ancestor が指定されていない場合に発生します(タグ、祖先の順)。

  • img は必ず noscript の子孫にする
  • video は必ず noscript の子孫にする
  • audio は必ず noscript の子孫にする
  • noscript は必ず body の子孫にする

必須の祖先タグとヒント

コード MANDATORY_TAG_ANCESTOR_WITH_HINT
形式 "The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"
修正方法 問題のタグを削除するか、指定されたタグの子孫にするか、またはヒントで提示されたタグと置き換えます。

このエラーは、AMP ドキュメントで見つかった以下のいずれかのタグが、必須の親タグに正しくネストされていない場合に発生します。

  • img が親タグ noscript 内にない
  • video が親タグ noscript 内にない
  • audio が親タグ noscript 内にない
  • noscript が親タグ body 内にない

一意のタグが重複している

コード DUPLICATE_UNIQUE_TAG
形式 "The tag '%1' appears more than once in the document."
修正方法 重複しているタグのうち 1 つを AMP ドキュメントから削除します。

このエラーは、タグのインスタンスが 1 つしか許可されていないにもかかわらず、重複が見つかった場合に発生します。

一意のタグの一覧は次のとおりです。

  • <doctype html>
  • <html amp>
  • <head>
  • <link rel=canonical href=...>
  • <link rel=amphtml href=...>
  • <meta charset="utf-8">
  • <meta viewport>
  • <style amp-custom>
  • <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>
  • <body>
  • <script src="https://cdn.ampproject.org/v0.js">

スタイルとレイアウトのエラー

スタイルとレイアウトのエラーの説明に移る前に、AMP でのスタイルレイアウトの仕組みを理解しておくことをおすすめします。 AMP ページは HTML ページであるため、スタイルも HTML ページと非常によく似ています。 ただし、ページの読み込みを高速化するためのいくつかの制限があり、AMP 検証ツールではそれらの制限が守られているかどうかをチェックします。

AMP ページではレイアウトのほうがより多くの制約を受けます。 ページに表示されるタグはすべて、高さと幅を事前に定義しておく必要があります。 それによってレンダリングやスクロール パフォーマンスの低下を大幅に軽減できるためです。ただし、これらの属性を手入力で追加する必要があるわけではありません。 特定のレイアウト タイプについてはデフォルト値を前提としているため、AMP 検証ツールでエラーになることはありません。

各 AMP タグには supported_layouts のリストがあります(AMP 検証ツールの仕様で定義されています)。 検証ツールは、サポートされていないレイアウトに対してはエラーを返し、事前定義されたレイアウトについては検証ルールをチェックします。

スタイルシートが長すぎる

コード STYLESHEET_TOO_LONG
形式 "The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."
修正方法 スタイルシートのサイズを 50,000 バイトより小さくします。

AMP 検証ツールがこのエラーを返すのは、<style amp-custom> 内のスタイルのコンテンツのサイズが上限の 50,000 バイトを超えている場合です。

CSS 構文エラー

コード CSS_SYNTAX
形式 "CSS syntax error in tag '%1' - %2."
修正方法 CSS 構文エラーを修正します。

このエラーは、指定されたタグに CSS 構文エラーがあった場合に発生します。 エラーの原因がわからない場合は、オンラインの CSS 検証ツール(csslint)などで CSS を実行してみてください。

特定のルールでの CSS 構文エラー

コード CSS_SYNTAX_INVALID_AT_RULE
形式 "CSS syntax error in tag '%1' - saw invalid at rule '%2'."
修正方法 指定された CSS 構文エラーを修正します。

このエラーは、CSS 内のアットルールに関するものです。 AMP で使用できるアットルールはごくわずかです(AMP 仕様もご覧ください)。たとえば、@import は許可されていません。 検証エラーでは無効なルールが具体的に示されるため、該当するルールを簡単に修正できます。

暗黙的レイアウトが AMP タグでサポートされていない

コード IMPLIED_LAYOUT_INVALID
形式 "The implied layout '%1' is not supported by tag '%2'."
修正方法 該当するタグに、有効なレイアウト属性を指定します。

このエラーは、AMP タグのレイアウトが指定されておらず、(幅、高さ、サイズを基にした)暗黙的レイアウトがサポートされていない場合に発生します。 AMP 検証ツールの仕様でタグの supported_layout の値を確認してください。

実際のレイアウトの動作は layout 属性によって決まります。 レイアウトが機能する仕組みについては、レイアウトを設定する方法についての説明や AMP HTML レイアウト システムの仕様のページをご覧ください。

注: レイアウトを指定せず、width 値と height 値も指定しない場合、レイアウトはデフォルト値の CONTAINER に設定されます。 AMP タグで CONTAINER がサポートされていないと、検証ツールはエラーを返します。 その場合は、CONTAINER 以外のレイアウトを指定するか、width 値または height 値、あるいはその両方を追加すればエラーは解消されます。

暗黙的レイアウトで属性が許可されていない

コード ATTR_DISALLOWED_BY_IMPLIED_LAYOUT
形式 "The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."
修正方法 許可されていない属性をタグから削除するか、その属性を使用できるレイアウトを指定します。

このエラーは、AMP タグのレイアウトが指定されておらず、許可されていない属性が暗黙的レイアウトに含まれている場合に発生します。 AMP HTML レイアウト システムの仕様に、許可されていない属性がレイアウト タイプ別に記載されています。

指定されたレイアウトが AMP タグでサポートされていない

コード SPECIFIED_LAYOUT_INVALID
形式 "The specified layout '%1' is not supported by tag '%2'."
修正方法 タグでサポートされているレイアウトを指定します。

このエラーは、タグに指定されたレイアウトがサポートされていない場合に発生します。 AMP 検証ツールの仕様でタグの supported_layout の値を確認してください。

実際のレイアウトの動作は layout 属性によって決まります。 レイアウトが機能する仕組みについては、レイアウトを設定する方法についての説明や AMP HTML レイアウト システムの仕様のページをご覧ください。

指定されたレイアウトで属性が許可されていない

コード ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT
形式 "The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."
修正方法 許可されていない属性をタグから削除するか、その属性を使用できるレイアウトを指定します。

このエラーは、AMP タグのレイアウトが指定されていて、そのレイアウトに許可されていない属性が含まれている場合に発生します。 AMP HTML レイアウト システムの仕様に、許可されていない属性がレイアウト タイプ別に記載されています。

レイアウトで必要な属性の値が無効

コード ATTR_VALUE_REQUIRED_BY_LAYOUT
形式 "Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."
修正方法 属性の値を、指定された値に設定します。

このエラーは、指定されたレイアウトの属性値が無効である場合に発生します。 このエラーの原因を把握するには、各レイアウトの動作をよく理解する必要があります。

たとえば、レイアウトを fixed-height に設定し、heightwidth の両方に数値を指定したとします。 fixed-height レイアウトで必要なのは height の値であり、width 属性については、何も指定しないか、または auto に設定する必要があります。 そのため、検証ツールにより ATTR_VALUE_REQUIRED_BY_LAYOUT が返されます。

幅と高さの単位が一致していない

コード INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT
形式 "Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."
修正方法 幅と高さの単位を同じにします。

layout=fixed を例外として、幅と高さの属性には同じ単位を使用する必要があります。単位が異なる場合にこのエラーが発生します。

たとえば、<amp-img src="" layout="responsive" width="42px" height="42rem"> と指定すると、次のエラー メッセージが表示されます。

「タグ「amp-img」の幅と高さの単位が一致していません。幅は「px」で指定されていますが、高さは「rem」で指定されています。」

テンプレートのエラー

AMP ページにテンプレートの構文を含めることはできません。ただし、テンプレートを含めるために特別に設計された AMP タグ(たとえば amp-mustache)内にあるテンプレートの構文は例外です。

ソースファイルから生成された出力にテンプレートが含まれなければ、ソースファイルにテンプレートを追加してもかまいません(CSS プリプロセッサの使用についての説明もご覧ください)。

テンプレートの構文が属性に含まれている

コード TEMPLATE_IN_ATTR_NAME
形式 "Mustache template syntax in attribute name '%1' in tag '%2'."
修正方法 属性から Mustache テンプレートの構文を削除します。

このエラーは、属性値内に Mustache テンプレートの構文が見つかった場合に発生します。

エスケープされていないテンプレートの構文が属性に含まれている

コード UNESCAPED_TEMPLATE_IN_ATTR_VALUE
形式 "The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."
修正方法 Mustache テンプレートをエスケープします。

このエラーは、属性値内にエスケープされていない Mustache テンプレートの構文が見つかった場合に発生します。

テンプレートのパーシャルが属性に含まれている

コード TEMPLATE_PARTIAL_IN_ATTR_VALUE
形式 "The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."
修正方法 Mustache のパーシャルを削除します。

このエラーは、属性値内に Mustache のパーシャルが見つかった場合に発生します。

サポート終了によるエラー

サポートが終了したタグ

コード DEPRECATED_TAG
形式 No error message defined as yet (no deprecated tags).
修正方法 サポートが終了したタグを削除します。

この警告は、以前有効だった AMP タグが AMP ドキュメント内で検出されたときに表示されます。これは単なる警告であり、警告付きのままでも AMP ドキュメントは引き続き有効です。現在のところ、サポートが終了したタグは存在しません。この警告は、今後タグのサポートを終了するときのために予約されています。

サポートが終了した属性

コード DEPRECATED_ATTR
形式 "The attribute '%1' in tag '%2' is deprecated - use '%3' instead."
修正方法 サポートが終了した属性を削除することをおすすめします。

この警告は、以前有効だった AMP 属性が AMP ドキュメント内で検出されたときに表示されます。これは単なる警告であり、警告付きのままでも AMP ドキュメントは引き続き有効です。

各 AMP タグについて、サポートが終了した属性を確認するには、 AMP 検証ツールの仕様deprecation を検索してください。