Chrome 拡張機能の更新ライフサイクル

このガイドでは、拡張機能の更新フロー全体について詳しく説明します。標準の更新プロセス、手動オーバーライド、デベロッパー API、エンタープライズ ポリシーの大きな影響について説明します。

標準の更新サイクル

Chrome は、インストールされている拡張機能を最新バージョンに自動的に更新するように設計されています。これにより、ユーザーは新機能やセキュリティ修正を利用できます。デフォルトでは、Chrome は起動時と数時間ごとに拡張機能の更新をチェックします。

更新プロセスの重要な側面は、拡張機能がアイドル状態と見なされた場合にのみ更新がインストールされることです。拡張機能がアイドル状態になるには、そのコンポーネントがアクティブに使用されていない必要があります。Manifest V3 のコンテキストでは、これは主に拡張機能の Service Worker が実行されていないことを意味します。Service Worker はイベント駆動型で、一定期間操作がないと終了するように設計されています。また、サイドパネル、ポップアップ、オプション ページなどの開いている拡張機能ページがあると、拡張機能がアイドル状態と見なされなくなります。アクティブなコンテンツ スクリプトは、拡張機能がアイドル状態と見なされるかどうかに影響しません。

このアイドル状態の要件により、頻繁にアクティブになる拡張機能の更新が遅れる可能性があります。拡張機能の Service Worker がイベントによって常にトリガーされている場合、アイドル状態になることはなく、ブラウザが再起動されるまで更新は延期されます。

拡張機能のアップデートの配布をモニタリングする

拡張機能の最新バージョンを使用しているユーザーの数を確認するには、Chrome ウェブストアのアナリティクス ダッシュボードを使用します。Chrome ウェブストア デベロッパー ダッシュボードに移動し、公開済みの拡張機能のいずれかを選択します。サイド ナビゲーション バーで [アナリティクス] -> [ユーザー] に移動し、[アイテム別の 1 日あたりのユーザー数グラフ] までスクロールします。ここでは、最新バージョンをすでに使用しているユーザーの数を確認できます。

サンプル拡張機能の 1 日のユーザー数をバージョン別に示したスクリーンショット。

広告表示オプションを手動で更新する

ユーザーが最新のアップデートをすぐに取得したい場合は、Chrome の手動更新メカニズムを利用できます。これは、アップデートをテストする際にも役立つツールです。

個々のユーザーは、次の手順に沿って、インストールされているすべての拡張機能を強制的に更新できます。

  1. chrome://extensions に移動します。
  2. 右上にあるボタンを使って [デベロッパー モード] を有効にします。
  3. 表示された [更新] ボタンをクリックします。

この操作を行うと、Chrome はインストールされているすべての拡張機能の最新バージョンを Chrome ウェブストアから直ちに取得します。

拡張機能からアップデートを確認する

browser.runtime API は、拡張機能が更新メカニズムとやり取りするためのツールを提供します。

オンデマンドでアップデートを確認する

browser.runtime.requestUpdateCheck() 関数を使用すると、拡張機能でプログラムによって更新チェックを開始できます。これは、バックエンド サービスに重要な依存関係があり、最新の互換性のあるバージョンを実行していることを確認する必要がある拡張機能に特に便利です。

この関数が呼び出されると、Chrome は Chrome ウェブストアに新しいバージョンを問い合わせ、新しいバージョンが利用可能な場合はダウンロードします。関数のコールバックは、チェックの結果を示すステータスを受け取ります。

利用可能なアップデートをリッスンする

browser.runtime.onUpdateAvailable イベントは、アップデートがダウンロードされ、インストールする準備ができたときに発生します。このイベントの詳細は、新しいバージョン番号を提供します。このイベントをリッスンすることで、拡張機能は更新が利用可能かどうかを判断し、必要に応じてブラウザをアイドル状態にしたり、browser.runtime.reload() を使用して再読み込みを発生させたりすることを検討できます。

次のコードは、基本的な実装パターンを示しています。

例外的なケースでは、browser.runtime.requestUpdateCheck() を使用して、ブラウザに拡張機能の更新の確認を強制的に実行させることができます。

requestUpdateCheck() を頻繁に呼び出すと、ブラウザによってスロットリングされることに注意してください。この関数は、更新が利用可能であることを確認した場合にのみ使用してください。たとえば、更新されたバックエンドで新しいバージョンの拡張機能が必要な場合などです。

エンタープライズ ポリシーによるアップデートの制御

管理対象のエンタープライズ環境では、標準の拡張機能更新フローはシステム管理者が設定したポリシーの対象となります。これらのポリシーは、セキュリティと安定性を確保するためにデフォルトの動作をオーバーライドできます。

自動的にインストール

ExtensionInstallForcelist ポリシーを使用すると、管理者はユーザー向けに特定の拡張機能を自動的にインストールできます。このポリシーでインストールされた拡張機能をユーザーが無効にしたり、アンインストールしたりすることはできません。

拡張機能のバージョンを固定する

ただし、企業では、他のソフトウェアとの互換性を確保するために、使用する拡張機能の正確なバージョンを制御する必要があることがよくあります。この場合、管理者は拡張機能を特定のバージョンに「固定」できます。この設定は Google 管理コンソールで行います。管理者は組織部門に必要なバージョンを選択できます。拡張機能を固定すると、Chrome は指定されたバージョン以降に更新しなくなります。

更新ソースをオーバーライドする

企業は、セキュリティやカスタマイズの理由から、拡張機能のフォーク バージョンを独自にホストできます。これを行うには、override_update_url プロパティが true に設定された ExtensionSettings ポリシーを使用します。これにより、Chrome は Chrome ウェブストアではなく、指定された URL から拡張機能とその更新を取得するようになります。

Chrome の最小バージョンを設定する

拡張機能のマニフェスト ファイルで minimum_chrome_version を指定できます。これにより、拡張機能が使用する API をサポートする Chrome のバージョンにのみ拡張機能がインストールされるようになります。

新規インストールの場合、Chrome ウェブストアでは、古いバージョンの Chrome を使用しているユーザーが拡張機能をインストールできないようにし、「互換性がありません」というメッセージを表示します。既存のユーザーの場合、拡張機能の更新によって minimum_chrome_version がユーザーのインストール済み Chrome バージョンよりも高いバージョンに引き上げられると、その拡張機能の更新は自動的に停止します。デベロッパーはこれを認識し、ユーザーベースの大部分に影響が及ぶ可能性がある場合は、ユーザーに通知する必要があります。