AMPのこれまでとこれから

@goran_nasai
こんにちは。GORAN
です。今日は僕がエンジニアを志すキッカケにもなった技術AMPについての記事です。(全て個人の意見です)
半年くらい前にCore Web Vitalsについてという記事で「AMP
オワコンというわけでもないぞ」という主旨のことをつぶやいておりましたが、その理由も今回語ろうと思っています。
はじめに
AMP
が発表されたのは2015年、リリースされたのは2016年でして、プロジェクト自体はかれこれ6年モノになります。僕としてはuskay氏の勉強会がAMP
との出会いでして、2017年の5月くらいだった記憶です。
当時は「ページ読み込みに3秒かかったら53%が離脱する」みたいなキャッチフレーズで、表示速度への問題提起とセットにして売り出されてましたね。
リリースの背景
Googleがウェブにおける体験に対するページ表示速度の占める割合の大きさに気づいた(問題意識を持ち始めた)ことがキッカケだろうと思っています。かなり初期の段階で「AMP
をキッカケにウェブの体験を変えていきたい」という意思表示はあったので、CWV
やSXG
など、昨今リリースされたAMP
での(ある種の)成功体験に基づく基準や技術というのは構想に入っていたでしょうし、そこまで見据えてのリリースだった可能性もありますね。
普及までの流れ
それまで読み込み速度の改善というのは以下の2つの壁に阻まれており、意識の高いデベロッパーがいたとしても、社内を啓蒙し世界の意識へスケールさせていくようなことは不可能でした。
- 非機能要件の壁
- プライオリティの壁
AMP
が流行った理由はこの2つの障壁を排除したことにあり、トーンダウンしてきたのもその排除の仕方に起因します。
非機能要件の壁を越える
AMP
が採択した解決方法は、これまで非機能要件であった読み込み速度を仕様として機能要件に落とし込むというものでした。具体的には、Validationを設けて「validかinvalidか」という検証可能な状態を作りました。(これによって「非AMP
」というワードが生まれました)
デベロッパーにとっては「AMP valid
なページを作る」というのが要件に入ってくるわけですから、対応方針の見通しが良くなります。
プライオリティの壁を越える
非機能要件が持つ永遠の課題ですが、個人がそれに対して問題意識を持っていても組織の意思決定として「予算が〜」「工数が〜」という理由で結果「やりたくてもやれない」状況に陥るのは定番のパターンです。AMP
はそれをSEOでの優遇措置という手法で解決しました。
具体的には、AMP validなページには(モバイル検索結果において)以下のインセンティブがありました。
AMP
バッジがつく- トップカルーセルにキュレーションされる
- GoogleドメインのCDN(AMP Cache)から配信される
いずれもSEO界隈(特に大手パブリッシャー)にとってはあまりにも強力なものであり、(ほぼ強制的に)AMP
に対応せざるを得ない状況になりました。
トーンダウン
こうした対応により爆発的に普及したAMP
ですが、GORAN
の感覚としては、この1年くらいでだいぶトーンダウンしてきたかなと感じています。
その原因というのは上述の通り、2つの障壁の排除の仕方にあったわけですが、2018年に公開されたAMP letterという文書の中で、既に問題視されていたことでした。そこではウェブというエコシステムに対してAMP
が有する以下の問題が指摘されています。
- SEO視点での優遇措置
- ユーザーが気付かぬうちにGoogleのドメイン内に留まってしまう
SEO視点での優遇措置
この対応によってAMP
は一時代を築きあげたわけですが、言い換えればAMP対応していないページにディスアドバンテージを作っていることと大差ないので、フェアではありません。
ユーザーが気付かぬうちにGoogleのドメイン内に留まってしまう
もうひとつURLの問題がありました。これはAMP Cacheの仕様によるものですが、AMP validなページはGoogleのCDNにキャッシュされ、モバイルの検索結果画面からの遷移ではそのキャッシュが読まれます。つまりはGoogleのドメインから配信されることになり、元のURLが表示されないという大きな問題がありました。URLを細かくチェックするユーザーというのは非常に少ないと思われますが、それらが気付かぬうちに(意図せぬまま)Googleのドメイン内に留まるというのは健全ではありません。
以上の懸念されていた問題点は予想通り膨れ上がり、結果としていずれもGoogleが提供を停止することが発表されています。その発表をもって大手のパブリッシャーたちも軒並みAMP
対応から手を引き、現状の「そういえばAMP
聞かんなぁ」という状況になっているわけです。
AMPじゃない方が速い
AMP letterでは指摘されていませんが、もうひとつの大きな問題です。AMP
は簡単にいうと遅くしようがない技術という思想ですので、決して最速の技術ではありません。きちんとした最適化を図れば自前で作る方が絶対に速くなります。
そういった観点で、リリース当初から、既にAMP
を導入するよりもパフォーマンスの良いコンテンツを配信していたデベロッパー・ウェブマスターの反感を買っていました。
もちろんGoogleの狙いとしてはAMP
が普及することによるウェブコンテンツ全体の表示速度の底上げだったはずなので、それに対しては一定の結果が得られたのだろうと思います。
AMPのこれから
GORAN
としては、トーンダウンしてきたことは事実として認めつつ、総合的には「AMPによって間違いなく表示速度に対する世界の意識が変わった」というポジティブな印象を持っています。トーンダウンしてきたことに対しても、AMP
が持っていた「表示速度に対する意識の啓蒙」という役割を終えたに過ぎず、Web ComponentsやフレームワークとしてのAMP
の成長に対してはまだ伸び代を感じています。
Bento
これが今回この記事を書くキッカケにもなったファクトで、先日ようやく正式リリースされました。構想自体は2018年のAMP Confで発表されていました記憶です。僕もpaul氏が#eccube_dayで来日されていた際のセミナー聞いてました。(2019年だったかな)
AMP
はリリース当初からWb Componentsベースの設計を進めていて、<amp-img>
に始まり、今では<amp-tiktok>
など相当数のコンポーネントが用意されています。
AMP
がもたらした素晴らしい体験はかなり早いうちから「非AMP
でも同様の体験を」という意思表示がされていて、そのうちのひとつとしてAMP CacheはSXG
として羽ばたいていったわけですが、「非AMP
でもAMP componentを使って良いんだよ」という啓蒙も頻繁にされていました。当時はBento AMPと呼称されていて、この度晴れてBento
として日の目を浴びることとなったわけです。これによってAMP
は「validなページを作るための枠組み・制約」から「部品単位で簡単に使えて、かつパフォーマンスも良いコンポーネントライブラリ」として進化を遂げたと思っています。今回は経緯を解説する記事なので、Bento
の詳しい仕様は別記事にします。
Stories
もうひつの伸びしろです。イマイチ流行っていないのが不思議なのですが、AMP
にはWeb Storiesという使い方があります。(AMP Storiesとも呼ばれます)
ご存知ない方はまずはSan Francisco Chronicle
の事例をご覧ください。
簡単にいうと、Instagramのストーリーズと同じことをウェブでも再現できるフレームワークです。この見せ方はクリエイティブと非常に相性が良いので、スポーツ×Webの業界に身を置くものとしては、今後チケットLPの代替になっていったりするのではなかろうかと期待もしています。
実を言うとGoogleはすでにStories
に対する優遇措置を設けていて、Google Discover・Google検索・Google画像検索においてリッチリザルトを提供しています。
また、最近もアクションボタンやインタラクションのアップデートがあるなど、開発コミュニティとしても落ち込んでいないので、息の長いものになるのではないかと予想しています。こちらも別記事にて詳細は解説したいなと思います。
おわりに
以上がAMP
に対するGORAN
なりの見解です。抜け落ちている箇所もあるかと思いますが、それでもそこそこ長くなってしまいました。笑
この記事を読んで、「まだAMP
可能性あるかも」と感じていただけたなら幸いです。GORAN
はこれからもAMP
を追い続けますし、応援し続けます。Make the web faster!!
これまでAMP
をさまざまな角度から追いかけていましたが、最近見かけた本サイトの AMP 提供の停止とここまでの振り返りという記事がおそらく最も詳細に事実がまとめらていると思います。(本記事の参考にもさせていただいてます)