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

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

標準の更新サイクル

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

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

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

拡張機能の更新の配布状況をモニタリングする

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

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

拡張機能を手動で更新する

ユーザーが最新の更新をすぐに受け取りたい場合、Chrome には手動更新メカニズムが用意されています。これは、更新をテストする場合にも便利なツールです。

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

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

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

拡張機能から更新を確認する

chrome.runtime API には、拡張機能が更新メカニズムとやり取りするためのツールが用意されています。

オンデマンドで更新を確認する

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

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

利用可能な更新をリッスンする

更新がダウンロードされ、インストールする準備が整うと、chrome.runtime.onUpdateAvailable イベントが発生します。このイベントは、詳細に新しいバージョン番号を提供します。このイベントをリッスンすることで、拡張機能は更新が利用可能であることを確認し、必要に応じて chrome.runtime.reload() を使用してアイドル状態にするか、再読み込みを行うことができます。

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

例外的なケースでは、 chrome.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 バージョンよりも高いバージョンに増えると、その拡張機能の更新は自動的に停止します。デベロッパーはこれを認識し、ユーザーベースの大部分に影響する可能性がある場合はユーザーに通知する必要があります。