開発者の皆様へ、Chrome拡張機能は必ずしも良いものである必要はありません。「数時間で何百万人ものユーザーにとって大きな改善がもたらされる可能性があります」

Table of Contents

開発者の皆様へ、Chrome拡張機能は必ずしも良いものである必要はありません。「数時間で何百万人ものユーザーにとって大きな改善がもたらされる可能性があります」

ウェブサイト監視ビジネス DebugBear の創設者 Matt Zeunert 氏は、最も人気のある Chrome 拡張機能 1,000 個のパフォーマンスを分析し、そのうちのかなりの数はコーディングを改善できることを発見しました。

ロンドンを拠点とする開発者は月曜日のエッセイで、ページの CPU 時間、ページのレンダリングの遅延、バックグラウンドの CPU 時間、ブラウザのメモリ消費に注目しながら Chrome 拡張機能の詳細を説明した。

彼のテストでは、拡張機能なしのChromeでexample.comというウェブサイトを読み込むのに約40ミリ秒かかりました。こうした計測結果は、接続状況やシステムパフォーマンスの観点から、実行方法、実行時間、実行場所によって大きく異なります。

ChromeでEvernote Web ClipperとGrammarly(それぞれ400万人以上と1000万人以上のユーザーを抱えるブラウザ拡張機能)を使用すると、CPU時間が500ミリ秒以上に増加しました。JavaScript処理やページレイアウト処理に関連する操作がブラウザのメインスレッドをブロックし、他の処理を遅延させるため、これは理想的ではありません。

財布を痛める

このような遅延は単独では大したことではないように思えますが、1~2秒を超えると、ウェブサイトのパフォーマンスが収益に影響を及ぼします。これは、Chromeで拡張機能がサポートされていないモバイルデバイスではより深刻な問題となる可能性がありますが、他の選択肢もあり、遅延に対する感度は高くなります。また、拡張機能が一般的に利用されているデスクトップやノートパソコンでのブラウジングでも、この問題は重要です。

「多くのユーザーは複数の拡張機能をインストールしているため、パフォーマンスへの小さな影響が積み重なってユーザーエクスペリエンスに大きな悪影響を及ぼす可能性がある」と彼は書いている。

Evernote Web Clipperは上位100の拡張機能の中で最も遅く、ブラウザで読み込まれるすべてのページに2.9MBのコンテンツスクリプトを追加します。Chrome拡張機能はJavaScriptコードの解析とコンパイルに140ミリ秒、読み込み後の評価に300ミリ秒を費やしています。

Zeunert氏は、このコードはユーザーがEvernote拡張機能アイコンをクリックするまで呼び出されず、開発者は必要な場合にのみコードを読み込む方がよいと指摘しています。彼は、昨年発見されたパフォーマンスの問題を修正したHoneyというショッピング拡張機能を例に挙げ、スクリプトを読み込む前にコードが必要かどうかを確認することでパフォーマンスを改善しました。

多くの拡張機能がページの読み込みに影響を与えることを考えると、拡張機能のパフォーマンスには十分な注意が払われていないと思います。

「多くの拡張機能がページの読み込み一つ一つに影響することを考えると、拡張機能のパフォーマンスへの注目が十分ではないと思います」とZeunert氏はThe Registerへのメールで述べた。「つまり、簡単に改善できる点がたくさんあるということです。開発者が数時間費やすだけで、何百万人ものユーザーにとって大きな改善につながる可能性があります。Honeyの実行時間が1年前は1秒だったのが、今では100ミリ秒未満になったのを見て、とても満足しています。」Chrome拡張機能トップ1000のうち、ページCPU遅延が最も大きかったのは、約20万人のユーザーを抱えるブラジルのクーポンおよび価格表示拡張機能であるVigia de Preçoだった。Zeunert氏は、この拡張機能がトークン生成にfingerprintjs2と呼ばれるJavaScriptブラウザフィンガープリンティングライブラリを使用しているため、メインスレッドが1.6秒間ブロックされることを発見した。

Chrome拡張機能は、ネットワークプロセスの実行や計算処理のためにバックグラウンドページを利用することがよくあります。Avira Browser SafetyはバックグラウンドCPUテストで低い結果を示し、バックグラウンドページでのコード実行に約3秒かかりました。一方、他の拡張機能は200ミリ秒未満で実行できました。

理由の一つは、拡張機能のホワイトリストに30以上の正規表現パターンエントリが含まれていることです。Example.com はこのリストに含まれていないため、Avira Browser Safety 拡張機能はファイル全体をアルファベット順に検索します。リストに含まれるサイト、例えば apple.com を検索すると、ヒット数が大幅に増加します。

あなたはそれを広告しました

広告ブロッカーやプライバシー拡張機能は、ドメインブロックリストの保存にブラウザメモリを大量に消費することが判明しています。しかし、不要なコンテンツを読み込まないことで、ページメモリとサブフレームメモリの消費量も削減します。テストとして、536MBのメモリを必要とするニュース記事を例に挙げると、コンテンツブロッカーのバックグラウンドページは、最もパフォーマンスの低い拡張機能では最大142MBのメモリを必要とする可能性があります。同時に、これらの拡張機能はページメモリとサブフレームメモリを最大640MB削減しました。

「ほとんどの広告ブロッカーにかかるコストはそれほど大きくないが、パフォーマンスが最適化されていない広告付きサイトを訪問する場合、そのメリットは非常に大きい」と同氏は語った。

CPU時間に関しては、DuckDuckGo Privacy Essentialsがトップに立ち、ネットワークリクエストの95%をブロックし、ページサイズを80%削減することで、記事ページ表示時間を31秒から1.6秒に短縮しました。もう一つの拡張機能であるuBlock Originも優れたパフォーマンスを発揮しました。

詐欺

参考までに:Chrome拡張機能は何千種類もあり、偽のインストールでユーザーを騙して使用させようとするものが非常に多くあります

続きを読む

Googleは、Manifest v3と呼ばれる一連のルールに基づき、Chrome拡張機能プラットフォームAPIの見直しを進めています。同社は、Chrome拡張機能のパフォーマンス低下を軽減し、セキュリティを強化するためにこの変更を行っていると主張しています。

大きな影響を与える可能性のある変更点の一つは、webRequestエンタープライズユーザーを除くすべてのユーザーに対するAPIの廃止と最終的な削除です。APIwebRequestは、Webリクエストをリアルタイムで傍受・変更するために使用され、強力であると同時に悪用される可能性も秘めています。APIの代替となるdeclarativeNetRequestAPIは、事前定義されたルールに基づいて動作するため、動的な判断よりも柔軟性に欠けます。

ゼイナート氏は、Chrome拡張機能に関するセキュリティ上の懸念は正当なものだと認めています。「現在、Chrome拡張機能の権限は非常に広範囲に及ぶ傾向があります」と彼は述べ、自身が評価した拡張機能の一部が調査中に削除されたことを指摘しました。「例えば、同一のコードを持ち、インストール数が極めて疑わしい拡張機能が2つありました。当初リストに挙げていた1000個の拡張機能(おそらく数十万人のユーザーがいると思われます)のうち、ここ数週間で17個がChromeウェブストアから削除されました。」

しかし、彼はGoogleがManifest v2拡張機能に起因するパフォーマンス問題に関して懸念していることはそれほど説得力がないと考えている。彼は、自身のテストでは、現在の拡張機能APIを使用してパフォーマンスの高い広告ブロッカーを構築できることが示されていると述べた。

「一部の広告ブロッカーはパフォーマンスが低いですが、最も人気のあるものはそうではありません」と彼は述べた。「Manifest v3により、パフォーマンスの高い広告ブロッカーの開発が容易になりますが、パフォーマンスはwebRequestAPIを廃止する強力な根拠にはならないと思います。」

また、開発者が制限を回避しようとして、その過程でパフォーマンスの問題を引き起こすリスクもあると彼は述べた。「例えば、開発者はどのリクエストがブロックされたかの詳細な統計情報を取得できない場合、代わりにコンテンツスクリプトを使ってページ内から情報を収集するかもしれません」と彼は述べた。®

Discover More