いつの頃からか分からないが、GoogleからAMPという技術についてのエラー通知、修正依頼、警告などの自働メールが多く届くようになった。
そのようなメールが奇跡的にITに超絶詳しい人に届けばいいが、ほとんどの一般人にとってはエーエムピー?アンプ?なにそれ状態であろう。その証拠に、AMPのエラーの修正に関する事をネットで検索しても詳しい情報はほとんど出てこない。恐らくみんなモヤモヤとしつつ放置しているのだろう。
そもそもこのAMP、Googleが勝手に始めたテクノロジーだ。向こうさんが勝手に決めたルールで、いつの間にかスタートした基準に照らし合わせてああしろこうしろと言われても、こちとら何をしなければならないのかが全く以て不明なのである。エラーを表示するだけなら小学生でもできる。エラーを表示するのであれば、詳細な解決策もセットで伝えて欲しい。それが真のUIではないか。
というかGoogleほどの世界規模のスーパーテクノロジー企業であるならば、たかだかHTML内のタグがおかしいくらいでコンテンツ制作者側に修正を指示するのはどうなのと。そんなのご自慢のスーパーサーバーでもってがちゃがちゃとコードを適当に書き換えて、いい感じで表示しといてよと。
てかこのAMPとやらは、スマホでのwebページ表示の速度を上げる技術らしいが、たかが2,3秒ダウンロードが早くならないからっていって検索順位が上下してしまうのは本末転倒だと思う。
さらに言うと、自分はただたんにWordPressにAMPのプラグインを入れているだけなので、AMPに関することはユーザー側に通知するのでは無く、プラグイン開発者コミュニティ的なところとGoogleさん同士で話し合ってくれないかなあと、そう思う訳です。
この思いが沢山の人に伝われば良いなと思ったので、あえてAMPのエラーメッセージを本記事内下記に羅列しておきます。そして自分で解決できた感じのエラー内容は、意味を要約しておきます。
構造化データの項目が不足しているか無効です。
→意味:ページ内に画像や動画、内部リンク外部リンクが満足するほど無く、内容が無いようなのでAMP化する価値がないページです。このメッセージは以前はエラーというレベルでしたが、最近は「指摘」というレベルに変わったそうなので、気にすることは無いようです。内容だけに。
参照している AMP URL はスタンドアロン AMP です。
→意味:AMPページのソースコードにおいて、<head>部分の中に<link rel="canonical" href="http://○○">というタグを書く必要があるが、このhref=で指し示されているURLがAMP元のHTMLページへのリンクになっていない。(恐らく多くの場合、ampページそれ自身のURLを参照してしまっている可能性が高い。)
AMP HTML タグの属性で指定されたレイアウトが無効です。
→意味:AMP元のHTMLページ内にある画像に、heightとwidthが設定されていないため、AMPページで表示したときに、スマホ用(またはタブレット用に)画像をきちんと伸縮できないでいます。自分の場合はアマゾンの商品の画像とかを埋め込みコードでやるとこれが良く起こる。まさかアマゾンのアフィリエイト埋め込みコードはampに対応していないとかなのか?
コンテンツの不一致: 埋め込み動画なし
→意味:AMPページに埋め込まれた動画が、正しく埋め込み動画として認識されていない。これは自分の環境では、通常の記事ページにコピペしたyoutubeのURLではこのエラーが起きることはなかったが、固定ページにコピペしたyoutubeのURLだとこのエラーが起きた。そのため、WordPressのAMPプラグインが固定ページまでまだ対応していないか、もしくは使っているWordPressテンプレート側にも問題があるかもしれない。これを回避するには、AMPのHTML内にyoutubeのURLをそのまま書くのではなく、埋め込みたい動画の「埋め込みコード」を書く必要があった。埋め込みコードがある場所は、埋め込みたいyoutube動画のページ→共有→埋め込むアイコンを選択、で取得可能。なおコードの取得はchromeじゃないと上手くいかない時が多かった。表示するAMPページのHTMLを別個に編集するには、WordPress記事投稿作成画面の下の方に編集できるところがある。
カバレッジ○○で問題が検出されました。送信された URL に noindex タグが追加されています。
→意味:サイト内に検索エンジンでヒットしない(検索対象にさせない)ページがあるということ。ぶっちゃけこれはログインが必要なサイトを運営している場合や、コンタクトフォームを使っているサイトに限ってはそれらがヒットさせないページとなるので、このエラーが出るのは自然なことですね。
AMP コンポーネントの「script」タグがありますが、使用されていません。
→意味:ページ内に埋め込んだscriptタグがAMPページ表示の時に上手く動作していない模様。これは大体の場合、広告関連のスクリプトの埋め込みが上手くいっていない場合に起こるようだ。自分の場合ではGoogleの広告を埋め込んでいるが、AMPページでGoogleの広告を正しく表示させるためには、headタグ内とBodyタグ直後の二カ所にコードをコピペしないとならないようで、それをしてなかったためにこのエラーが起こっていた。この二カ所に書くコードは、adsenseトップページ→広告→サマリー→AMPはオンです。から取得可能。
まあこうしてみるといかにこのAMPという技術がザルでgoogleの一人舞台で、適当に運営されているものかが分かりますね。
タグ「img」はタグ「noscript」の子孫としてのみ使用できます。「amp-img」ではありませんか?タグ「amp-iframe」には拡張機能 JavaScript の「amp-iframe」が含まれている必要があります。
必須属性「target」がタグ「FORM [method=GET]」にありません。許可されていない属性が HTML タグ「FORM [method=POST]」にあります。タグ「input」の HTML 属性「type」の値が無効。タグ「amp-iframe」の HTML 属性「style」の値が無効。許可されていない属性が HTML タグ「td」にあります。
タグ「div」の属性「style」のプロパティ「zoom」は許可されていません。許可されていない属性が HTML タグ「a」にあります。タグ「a」の HTML 属性「href」の URL プロトコルが無効。タグ「FORM [method=GET]」の HTML 属性「action」の URL プロトコルが無効。タグ「amp-iframe」のレイアウト「width」に含まれる属性の値が無効。
属性「action」はタグ「FORM [method=POST]」で使用できません。「amp-ad」で必要なタグ「amp-ad extension .js script」がないか、正しくありません。これはまもなくエラーとなります。
HTML タグに同じ属性が複数含まれています。必須の構造化データ要素のエラー。タグ「amp-iframe」に必須属性がありません。タグ「FORM [method=GET]」の属性「action」の URL プロトコルが無効です。HTML タグに必須属性がありません。
許可されていない属性または属性値が HMTL タグにあります。このページには AMP コンポーネントの「script」タグが必要ですが、このタグがありません。タグ「a」の属性「href」の URL プロトコルが無効です。