ユーザーが PWA をインストールするときに、ブラウザは PWA を一意に識別する方法が必要です。しかし、最近まで、ウェブアプリ マニフェストの仕様では PWA を一意に識別する方法が明示的に定義されていなかったため、ブラウザが判断し、実装が異なる結果になっていました。ブラウザによっては start_url が使用され、ブラウザによってはマニフェスト ファイルのパスが使用されるため、どちらのフィールドも更新できません。
この問題を解決するため、ウェブアプリ マニフェスト仕様に新しいオプションの id プロパティが追加されました。これにより、PWA に使用する ID を明示的に定義できます。マニフェストに id プロパティを追加すると、start_url またはマニフェストの場所への依存関係が解除され、今後の更新が可能になります。
id プロパティの機能
id プロパティは、ブラウザに対する PWA の ID を表します。ブラウザは、インストール済みの PWA と一致する ID がないマニフェストを見つけると、別の PWA と同じ URL から提供されている場合でも、そのマニフェストを新しい PWA として扱います。ただし、すでにインストールされている PWA と一致する ID を持つマニフェストが検出されると、そのマニフェストはインストール済みの PWA として扱われます。
ブラウザ サポート
id プロパティのサポートが Chrome 96 でリリースされました。
id のないアプリがある場合はどうすればよいですか?
何もする必要はありません。ウェブアプリ マニフェストに id を追加しなくても、(start_url とマニフェスト パスが同じである限り)問題は発生しません。PWA を将来に備えて対応するには、ウェブアプリ マニフェストに id プロパティを追加します。
id を特定して設定するにはどうすればよいですか?
PWA の id を最も安全かつ正確に決定する方法は、Chrome によって計算された値を確認することです。
- Chrome 96 以降を使用して、DevTools の [Application] パネルの [Manifest] ペインを開きます。
- ウェブアプリ マニフェスト ファイルで
idが指定されていない場合、[計算されたアプリ ID] プロパティの下に注記が表示されます。 - メモに記載されている
idの値をコピーします(下のスクリーンショットを参照)。 - 注に記載されている
id値を使用して、ウェブアプリ マニフェストにidプロパティを追加します。
![DevTools の [アプリケーション] パネルで計算されたアプリ ID。](https://developer.chrome.com/static/docs/capabilities/pwa-manifest-id/image/note-showing-id-value.png?authuser=7&hl=ja)
{
...
id: "/?homescreen=1",
start_url: "/?homescreen=1",
...
}
id を設定しない場合
ご安心ください。データが破損することはありません。Chrome 96 以降、ウェブアプリ マニフェストの start_url に基づいて、マニフェストに id がない場合、ブラウザは id を生成します。
ウェブアプリ マニフェストに id を追加すると、start_url とマニフェスト パスを変更できます(特定の送信元が同じ場合に限ります)。ブラウザは、start_url やマニフェスト パスではなく、指定された id に基づいて PWA を識別するためです。
テスト方法
動作をテストする手順は次のとおりです。
- PWA をインストールします。
about://web-app-internals/を開き、インストールされている PWA のmanifest_idプロパティとstart_urlプロパティを確認します。- 上記の
idを特定して設定する方法の手順に沿って、ウェブアプリ マニフェストにidプロパティを追加します。 chrome://restartを使用してブラウザを再起動し、about://appsから PWA を起動してから PWA を閉じて、マニフェスト ファイルを強制的に更新します。about://web-app-internals/を開き、インストールされている PWA のmanifest_idプロパティを確認して、変更されていないことを確認します。- ウェブアプリ マニフェストの
start_urlを変更します。 chrome://restartを使用してブラウザを再起動し、about://appsから PWA を起動してから PWA を閉じて、マニフェスト ファイルを強制的に更新します。about://web-app-internals/を開き、インストールされている PWA のstart_urlプロパティを確認して、想定どおりに更新されていることを確認します。