GoogleAMP-HTMLページからAmpページへ

この章では、通常のhtmlページをampページに変換する方法を理解します。また、アンプのページを検証し、最後に出力を確認します。

まず、以下に示す通常のhtmlページを見てみましょう-

test.html

<!DOCTYPE html>
<html>
   <head>
      <meta charset = "utf-8">
      <title>Tutorials</title>
      <link href = "style.css" rel = "stylesheet" />
      <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
      <script src = "js/jquery.js"></script>
   </head>
   <body>
      <header role = "banner">
         <h2>Tutorials</h2>
      </header>
      <h2>Some Important Tutorials List</h2>
      <article>
         <section>
            <img src = "images/tut1.png" width="90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut2.png" width="90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut3.png" width="90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut4.png" width="90%" height = "90%"/>
         </section>
      </article>
      <footer>
         <p>For More tutorials Visit <a href = 
         "https://tutorialspoint.com/">Tutorials Point</a></p>
      </footer>
   </body>
</html>

その中でstyle.cssを使用しており、cssファイルの詳細は次のとおりであることに注意してください-

h1 {color: blue;text-align: center;}
   h2 {text-align: center;}
      img {
         border: 1px solid #ddd;
         border-radius: 4px;
         padding: 5px;
      }
      article {
         text-align: center;
      }
      header{
         width: 100%;
         height: 50px;
         margin: 5px auto;
         border: 1px solid #000000;
         text-align: center;
         background-color: #ccc;
      }
      footer {
         width: 100%;
         height: 35px;
         margin: 5px auto;
         border: 1px solid #000000;
         text-align: center;
         background-color: yellow;
      }

上記の.htmlでjquery.jsファイルも使用していることに注意してください。

ここで、test.htmlをローカルでホストし、ここに示されているリンクに表示される出力を確認します-

http://localhost:8080/googleamp/test.html

それでは、ステップバイステップで上記のtest.htmlファイルをtest_amp.htmlファイルに変更してみましょう。

まず、test.htmlをtest_amp.htmlとして保存し、以下の手順に従う必要があります。

Step 1 −以下に示すように、ヘッドセクションにアンプライブラリを追加します−

<script async src = "https://cdn.ampproject.org/v0.js">
</script>

たとえば、test_amp.htmlに追加すると、次のようになります。

<head>
   <meta charset = "utf-8">
   <title>Tutorials</title>
   <script async src = "https://cdn.ampproject.org/v0.js">
   </script>
   <link href = "style.css" rel = "stylesheet" />
   <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
      <script src = "js/jquery.js"></script>
</head>

次に、ブラウザでtest_amp.htmlページを実行し、ブラウザコンソールを開きます。以下のようなコンソールメッセージが表示されます-

HTMLファイルが有効なアンプであるかどうかを知るには、以下に示すように、最後にHTMLページのURLに#development = 1を追加します。

http://localhost:8080/googleamp/test_amp.html#development=1

ブラウザとGoogleChromeコンソールで上記のURLを押します。アンプ仕様の観点から、アンプが無効と考えるエラーが一覧表示されます。

test_amp.htmlで発生したエラーを次に示します-

アンプの成功メッセージが表示されるまで、1つずつ修正してみましょう。

Step 2 −コンソールに次のエラーが表示されます−

htmlタグに⚡またはampを追加することで修正できます。以下に示すように、htmlタグにampを追加します-

<html amp>

Step 3 −以下に示すように、headタグにcharsetとname =” viewport”のメタタグがあることを確認してください−

<head>
   <meta charset = "utf-8">
   <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
</head>

Step 4 −次に発生するエラーをここに示します−

リンクrel = stylesheetにhrefと表示されます。つまり、次のリンクがエラーをスローしています。これは、ampがhref付きのリンクを使用する外部スタイルシートをページ内に配置することを許可していないためです。

<link href = "style.css" rel = "stylesheet" />
We can add the all the css in style.css as follows −
<style amp-custom>
   /*All styles from style.css please add here */
</style>

したがって、style.cssに存在するcssデータは、amp-custom属性を使用してスタイルで追加する必要があります。

<style amp-custom>
   h1 {color: blue;text-align: center;}
   h2 {text-align: center;}
      img {
         border: 1px solid #ddd;
         border-radius: 4px;
         padding: 5px;
      }
      article {
         text-align: center;
      }
      header{
         width: 100%;
         height: 50px;
         margin: 5px auto;
         border: 1px solid #000000;
         text-align: center;
         background-color: #ccc;
      }
      footer {
         width: 100%;
         height: 35px;
         margin: 5px auto;
         border: 1px solid #000000;
         text-align: center;
         background-color: yellow;
      }
</style>

アンプページにスタイルタグを追加します。上記のスタイルタグを使用して、ブラウザで同じことをテストしてみましょう。test_amp.htmlに対してこれまでに行った変更をここに示します-

<!DOCTYPE html>
<html amp>
   <head>
      <meta charset = "utf-8">
      <title>Tutorials</title>
      <script async src = "https://cdn.ampproject.org/v0.js">
      </script>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
      <script src = "js/jquery.js"></script>
      <style amp-custom>
         h1 {color: blue;text-align: center;}
         h2 {text-align: center;}
            img {
               border: 1px solid #ddd;
               border-radius: 4px;
               padding: 5px;
            }
            
            article {
               text-align: center;
            }
            header{
               width: 100%;
               height: 50px;
               margin: 5px auto;
               border: 1px solid #000000;
               text-align: center;
               background-color: #ccc;
            }
            footer {
               width: 100%;
               height: 35px;
               margin: 5px auto;
               border: 1px solid #000000;
               text-align: center;
               background-color: yellow;
            }
      </style>
   </head>
   <body>
      <header role = "banner">
         <h2>Tutorials</h2>
      </header>
      <h2>Some Important Tutorials List</h2>
      <article>
         <section>
            <img src = "images/tut1.png" width = "90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut2.png" width = "90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut3.png" width = "90%" height = "90%"/>
         </section>
         <section>
            <img src = "images/tut4.png" width="90%" height = "90%"/>
         </section>
      </article>
      <footer>
         <p>For More tutorials Visit <a href = 
         "https://tutorialspoint.com/">Tutorials Point</a></p>
      </footer>
   </body>
</html>

上記のページのコンソールで出力とエラーを見てみましょう。次のスクリーンショットをご覧ください-

コンソールに表示されるエラーは次のとおりです-

これで、アンプの一部のエラーについて、スタイルが削除されていることがわかります。残りのエラーを修正しましょう。

Step 5 −リストに表示される次のエラーは次のとおりです−

jqueryファイルを呼び出すスクリプトタグを追加しました。ampページでは、ページにカスタムJavaScriptを使用できないことに注意してください。それを削除し、入手可能なアンプコンポーネントを使用する必要があります。

たとえば、アニメーションが必要な場合はamp-animationを使用し、ページにgoogle分析コードを追加する場合はamp-analyticsを使用します。同様に、ページに表示される広告を表示するためのamp-adコンポーネントがあります。srcを同じオリジンにポイントし、必要に応じてamp-iframeでカスタムjavascriptを呼び出すことができるamp-iframeコンポーネントもあります。

それでは、ページからスクリプトタグを削除しましょう。

Step 6 −次に表示されるエラーをここに示します−

上記のエラーは、ページで使用した画像タグを示しています。Ampでは、ページ内で<img src =”” />タグを使用することはできません。代わりにamp-imgタグを使用する必要があることに注意してください。

ここに示すように、<img>タグを<amp-img>に置き換えましょう-

<section>
   <amp-img alt = "Beautiful Flower"
      src = "images/tut1.png"
      width = "500"
      height = "160"
      layout = "responsive">
   </amp-img>
</section>
<section>
   <amp-img alt = "Beautiful Flower"
      src = "images/tut2.png"
      width = "500"
      height = "160"
      layout = "responsive">
   </amp-img>
</section>
<section>
   <amp-img alt = "Beautiful Flower"
      src = "images/tut3.png"
      width = "500"
      height = "160"
      layout = "responsive">
   </amp-img>
</section>
<section>
   <amp-img alt = "Beautiful Flower"
      src = "images/tut4.png"
      width = "500"
      height = "160"
      layout = "responsive">
   </amp-img>
</section>

上記のように、すべての<img>タグを<amp-img>に置き換えました。それでは、ブラウザでページを実行して、出力とエラーを確認しましょう-

エラー

エラーが少なくなっていることを確認してください。

Step 7 −コンソールに表示される次のエラーは次のとおりです−

ヘッドセクションにリンクrel = canonicalタグを追加する必要があります。これは必須のタグであり、常に次のように頭に追加する必要があることに注意してください-

<link rel = "canonical" href =
   "http://example.ampproject.org/article-metadata.html">

Step 8 −欠落しているために表示される次のエラー noscript tag ここに示すようにコンソールで-

次のように、ヘッドセクションにamp-boilerplateで囲まれた<noscript>タグを追加する必要があります-

<noscript>
   <style amp-boilerplate>
      body{
         -webkit-animation:none;
         -moz-animation:none;
         -ms-animation:none;
         animation:none}
   </style>
</noscript>

Step 9 −次に表示されるエラーを以下に示します−

もう1つの必須タグは、amp-boilerplateを使用したスタイルタグであり、noscriptタグの前に配置する必要があります。アンプボイラープレート付きのスタイルタグをここに示します-

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

上記のスタイルタグをtest_amp.htmlページに追加します。

完了したら、ブラウザでページをテストして、出力とコンソールを確認します-

コンソールの詳細はここに表示されます-

したがって、最終的にすべてのエラーが解決され、test_amp.htmlページが有効なampページになりました。

ヘッダーとフッターが切り捨てられるため、追加するスタイルがいくつかあります。追加したカスタムスタイルで同じスタイルを更新できます。そのため、ヘッダーとフッターからwidth:100%を削除しました。

これが最終出力です-

最終的なtest_amp.htmlファイル

<!DOCTYPE html>
<html amp>
   <head>
      <meta charset = "utf-8">
      <title>Tutorials</title>
      <link rel = "canonical" href=
      "http://example.ampproject.org/article-metadata.html">
      <script async src = "https://cdn.ampproject.org/v0.js">
      </script>
      <meta name = "viewport" content = "width = device-width, 
      initial-scale = 1.0">
      
      <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>
         h1 {color: blue;text-align: center;}
         h2 {text-align: center;}
            amp-img {
               border: 1px solid #ddd;
               border-radius: 4px;
               padding: 5px;
            }
            article {
               text-align: center;
            }
            header{
               height: 50px;
               margin: 5px auto;
               border: 1px solid #000000;
               text-align: center;
               background-color: #ccc;
            }
            footer {
               height: 35px;
               margin: 5px auto;
               border: 1px solid #000000;
               text-align: center;
               background-color: yellow;
            }
      </style>
   </head>
   <body>
      <header role = "banner">
         <h2>Tutorials</h2>
      </header>
      <h2>Some Important Tutorials List</h2>
      <article>
         <section>
            <amp-img 
               alt = "Beautiful Flower"
               src = "images/tut1.png"
               width = "500"
               height = "160"
               layout = "responsive">
            </amp-img>
         </section>
         <section>
            <amp-img 
               alt = "Beautiful Flower"
               src = "images/tut2.png"
               width = "500"
               height = "160"
               layout = "responsive">
            </amp-img>
         </section>
         <section>
            <amp-img 
               alt = "Beautiful Flower"
               src = "images/tut3.png"
               width = "500"
               height = "160"
               layout = "responsive">
            </amp-img>
         </section>
         <section>
            <amp-img 
               alt = "Beautiful Flower"
               src = "images/tut4.png"
               width = "500"
               height = "160"
               layout = "responsive">
            </amp-img>
         </section>
      </article>
      <footer>
         <p>For More tutorials Visit <a href = 
         "https://tutorialspoint.com/">
            Tutorials Point</a>
         </p>
      </footer>
   </body>
</html>

したがって、最終的に、通常のhtmlファイルをampに変換することができます。