[レベル: 上級]
「SharedArrayBuffers の使用に必要な新しい要件」という件名で一部のサイトに Google Search Console から警告が送られています。
SharedArrayBuffers
が何のことかわからず困っているサイト管理者もいそうです。
Google は、警告の意味と対処方法を検索セントラルブログで説明しました。
「SharedArrayBuffers の使用に必要な新しい要件」の警告
日本語では次のような警告文になります。
[サイト URL] での SharedArrayBuffers の使用に必要な新しい要件
このたび、Google のシステムにより、[サイト URL] で SharedArrayBuffers(SAB)の使用が検出されましたが COOP または COEP ヘッダーが配信されていないようです。
ウェブの互換性を確保するため、Chrome 91(2021 年 5 月 25 日)以降では、SAB を使用する場合に COOP または CCEP が必要となります。この変更に備えて、サイトに「cross-origin-isolated」の動作を実装してください。
英語では次のような警告文になります。
New requirements for SharedArrayBuffers on [Site URL]
Google systems have recently detected that Shared ArrayBuffers (SABs) are used on [Site URL], but COOP and/or COEP headers are not served.
For Web Compatibility reasons Chrome is planning to require COOPCOEP for the use of SABS from Chrome 91 (2021-05-25) onwards. Please implement cross-origin-isolated behavior on your site.
SharedArrayBuffers とは
SharedArrayBuffers
とは JavaScript のオブジェクトです。
サイト内でメモリ空間を共有する機能を持ちます。
「Spectre(スペクター)」と呼ばれる脆弱性が SharedArrayBuffers
には発見されています(Spectre の詳細については、web.dev のサイトや Wikipedia を参照)。
Spectre は、ハードウェアレベルの脆弱性のため、アプリケーションであるブラウザ側では現状では根本的には解決できません。
それでも、SharedArrayBuffers
を安全に有効化するための対処策として、cross-origin isolation という仕組みが標準化されました。
5 月後半リリース予定の Chrome 91 からは、cross-origin isolation が構成されているサイトでのみ SharedArrayBuffers
を有効にするように仕様が変わります。
つまり、SharedArrayBuffer
の警告は、cross-origin isolation をサイトに構成しないと、あなたのサイトは Chrome では正常に機能しなくなるかもしれませんよという注意喚起です。
Google 検索では、Chrome をレンダリングサービスとして利用しています。
ひょっとしたら、検索にも影響が及ぶことも可能性としてはありえます。
なお、cross-origin isolation での SharedArrayBuffer
利用は、Firefox ではバージョン 76 ですでに有効になっています(Firefox の最新バージョンは 86)。
サイト側の対処方法
SharedArrayBuffers
警告の対処方法に関しては、簡単かもしれないし難しいかもしれません。
サイトによって異なりそうです。
基本的な手順は次のようになります。
SharedArrayBuffer
が何に使われているかを特定するSharedArrayBuffer
が本当に必要かどうかを検討する- 不要であれば削除する、必要であれば cross-origin isolation を構成する
SharedArrayBuffer が何に使われているかを特定する
SharedArrayBuffer が何に使われているかを特定するには、Chrome のデベロッパーツールを利用できます。
具体的にどのページで SharedArrayBuffer
が使われているかは Search Console の警告文は示していません。
自分でだいたいの見当をつけて調べます。
機械的に調査するには Reporting API を使います。
検証を自動化できます。
開発者であれば、特定は造作もないことでしょう。SharedArrayBuffer
を実装した本人であればなおさらです。
しかし、最初のステップの特定でつまづく人がいるかもしれません。
なぜなら、サードパーティ製の要素たとえば広告で SharedArrayBuffer
が使われていることもあります。
利用している CMS テンプレートにデフォルトで組み込まれているかもしれません。
知らないところで SharedArrayBuffer
が使われていて、しかも技術に強くなかったとしたら何が問題なのかを発見することすら困難でしょう。
なお、今回の SharedArrayBuffer
警告は Google アナリティクス とは関係ありません。
SharedArrayBuffer が本当に必要かどうかを検討する
SharedArrayBuffer
がどこでどのように使われているかを特定できたら、本当に必要かどうかを検討します。
不要であれば、削除するのが最も簡単で確実な対処策です。
サイトの運営上 SharedArrayBuffer
が必要な要素であれば、cross-origin isolation を構成します。
cross-origin isolation については、こちらの解説記事と、えーじさんの動画を参照してください。
SharedArrayBuffer 警告に対処しないとどうなる?
SharedArrayBuffer
の警告に対処せずに(できずに)、放置しておいたらどうなるでしょうか?
SharedArrayBuffer
の使われ方に依存します。
特に大切ではない要素に使われていたのであれば、致命的な不具合は生じないでしょう。
広告に使われていたとしたら、ひょっとしたら、広告が表示されなかったり計測できなかったりするかもしれません。
サイトの生成に重要な役割を SharedArrayBuffer
が果たしていたら、Chrome での閲覧に支障が出るかもしれないし、ひいては検索にも悪影響が出るかもしれません。
したがって、まずは SharedArrayBuffer
が何に使われているかを特定することから始まります。
もっとも、その作業が難しい人にとっては試練ですが。
いずれにしても、大多数のサイトにとっては SharedArrayBuffer
問題は関係ありません。
対象となるのは、限られた数のサイトです。