バックグラウンド サービスをデバッグする

Sofia Emelianova
Sofia Emelianova

Chrome DevTools の [バックグラウンド サービス] セクションには、JavaScript API 用のツールが集約されています。これらのツールを使用すると、ユーザーがウェブサイトを開いていないときでも、ウェブサイトが更新を送受信できるようになります。バックグラウンド サービスは、機能的にはバックグラウンド プロセスに似ています。

[バックグラウンド サービス] セクションでは、次のバックグラウンド サービスをデバッグできます。

Chrome DevTools では、DevTools が開いていなくても、取得、同期、通知イベントを 3 日間ログに記録できます。これにより、イベントが想定どおりに送受信されていることを確認できます。

DevTools では、バックグラウンド サービス イベントに加えて、次のこともできます。

バックグラウンド フェッチ

Background Fetch API を使用すると、サービス ワーカーがバックグラウンド サービスとして、映画やポッドキャストなどの大規模なリソースを信頼性を持ってダウンロードできます。DevTools が開いていなくても、バックグラウンド取得イベントを 3 日間ログに記録するには:

  1. DevTools を開きます。たとえば、こちらのデモページで開きます。
  2. [Application] > [Background services] > [Background fetch] に移動し、記録します。 [Record] をクリックします。

    [バックグラウンド フェッチ] ペイン。

  3. デモページで、[アセットをローカルに保存] をクリックします。これにより、一部のバックグラウンド フェッチ アクティビティがトリガーされます。DevTools は、イベントをテーブルに記録します。

    [バックグラウンド取得] ペインにイベントのログが表示されます。

  4. イベントをクリックすると、表の下のスペースに詳細が表示されます。

  5. DevTools を閉じて、最大 3 日間録画の実行を続行できます。録画を停止するには、停止して。 [停止] をクリックします。

バックグラウンド同期

Background Sync API を使用すると、オフラインのサービス ワーカーは、信頼性の高いインターネット接続が再確立されたらサーバーにデータを送信できます。DevTools を開いていないときでも、バックグラウンド同期イベントを 3 日間ログに記録するには:

  1. DevTools を開きます。たとえば、こちらのデモページで開きます。
  2. [アプリ] > [バックグラウンド サービス] > [バックグラウンド同期] に移動し、記録します。 [記録] をクリックします。

    [バックグラウンド同期] ペイン。

  3. デモページで [バックグラウンド同期を登録] をクリックして、該当するサービス ワーカーを登録し、プロンプトが表示されたら [許可] をクリックします。

    サービス ワーカーの登録はバックグラウンド同期アクティビティです。DevTools は、イベントをテーブルに記録します。

    [バックグラウンド同期] ペインにイベントのログが表示されます。

  4. イベントをクリックすると、表の下のスペースに詳細が表示されます。

  5. DevTools を閉じて、最大 3 日間録画の実行を続行できます。録画を停止するには、停止して。 [停止] をクリックします。

(試験運用版)バウンス トラッキング対策

Chrome のバウンス トラッキング対策の試験運用版では、バウンス トラッキング手法を使用してクロスサイト トラッキングを行っていると思われるサイトの状態を特定して削除できます。トラッキング対策を手動で強制的に適用し、状態が削除されたサイトのリストを表示できます。

トラッキング対策を強制的に適用するには:

  1. Chrome でサードパーティ Cookie をブロックするその他メニュー。 > [設定] > セキュリティ。 [プライバシーとセキュリティ] > [Cookie と他のサイトデータ] > ラジオボタンがオンになっている。 [サードパーティ Cookie をブロックする] に移動して有効にします。
  2. chrome://flags で、バウンス トラッキング対策テストを [削除ありで有効] に設定します。
  3. DevTools を開くデモページなど)で、[Application] > [Background services] > [Bounce tracking mitigations] に移動します。
  4. デモページで離脱リンクをクリックし、Chrome が離脱を記録するまで待ちます(10 秒ほど)。[問題] タブには、今後の状態の削除に関する警告が表示されます。
  5. [強制実行] をクリックして、状態をすぐに削除します。

バウンス トラッキング対策に、状態の削除が表示されます。

通知

Service Worker がサーバーからプッシュ メッセージを受信すると、Service Worker は Notifications API を使用してデータをユーザーに表示します。DevTools が開いていなくても 3 日間通知を記録するには:

  1. DevTools を開きます。たとえば、こちらのデモページで開きます。
  2. [Application] > [Background services] > [Notifications] に移動し、記録します。 [Record] をクリックします。

    [通知] ペイン。

  3. デモページで [通知のスケジュール設定] をクリックし、メッセージが表示されたら [許可] をクリックします。

  4. 通知が表示されるまで待ちます。DevTools は、通知イベントをテーブルに記録します。

    [通知] ペインのイベントログ。

  5. イベントをクリックすると、表の下のスペースに詳細が表示されます。

  6. DevTools を閉じて、最大 3 日間録画の実行を続行できます。録画を停止するには、停止して。 [停止] をクリックします。

投機的読み込み

推測読み込みでは、定義した推測ルールに基づいてほぼ瞬時にページを読み込むことができます。これにより、ウェブサイトは、アクセスされる可能性が高いほとんどのページをプリフェッチしてプリレンダリングできます。

プリフェッチはリソースを事前に取得しますが、プリレンダリングはさらに一歩進んで、非表示のバックグラウンド レンダラ プロセスでページ全体をレンダリングします。

投機的読み込みは、[アプリケーション] > [バックグラウンド サービス] > [投機的読み込み] セクションでデバッグできます。このセクションには、次の 3 つのビューがあります。

  • 投機的読み込み。現在のページの投機的ステータス、現在の URL、現在のページが投機的に読み込みを試みるページ、およびそれらのステータスを含みます。
  • ルール。[要素] パネルには、現在のページのルールセットと推測の全体的なステータスが表示されます。
  • 推測。推測読み込みの試行とそのステータスに関する情報が記載された表が表示されます。試行が失敗した場合は、テーブルでその試行をクリックすると、詳細情報と失敗の理由を確認できます。

こちらのデモページで、投機的読み込みのデバッグを試してみましょう。

  1. ページで DevTools を開き、[アプリケーション] > [バックグラウンド サービス] > [投機的読み込み] に移動します。ページによって開始された推測的読み込みが表示されない場合は、ページを再読み込みします。

    このページで投機的に読み込まれた URL(2 件は成功、1 件は失敗)。

  2. デモの開始ページでは 2 つのページが事前レンダリングされますが、1 つのページは事前レンダリングされません。[すべての投機的読み込みを表示] をクリックします。

  3. [推測] で、ステータスが [Failure] の推測を選択すると、下部に詳細情報を含む [Failure reason] セクションが表示されます。

    失敗した推測が選択されています。

    この場合、ウェブサイトに /next3.html ページがないため、プリレンダリングに失敗しました。

  4. [ルール] セクションを開き、[ステータス] をクリックして、下部に表示されるルールセットを確認します。[ルールセット] リンクをクリックすると、[要素] パネルが表示され、投機ルールが定義されている場所を確認できます。

    ルールセットへのリンクを含む [ルール] セクション。

詳細なチュートリアルについては、推測ルールのデバッグをご覧ください。

プッシュ メッセージング

ユーザーにプッシュ通知を表示するには、Service Worker がまず Push Message API を使用してサーバーからデータを受信する必要があります。サービス ワーカーが通知を表示する準備が整うと、Notifications API を使用します。DevTools を開いていないときでも、プッシュ メッセージを 3 日間ログに記録するには:

  1. DevTools を開きます。たとえば、こちらのデモページで開きます。
  2. [Application] > [Background services] > [Push Messaging] に移動し、記録します。 [Record] をクリックします。

    [プッシュ メッセージング] ペイン。

  3. デモページで [Enable push notifications] を切り替え、プロンプトが表示されたら [許可] をクリックし、メッセージを入力して送信します。DevTools は、プッシュ通知イベントをテーブルに記録します。

    [Push Messaging] ペインに表示されるイベントのログ。

  4. イベントをクリックすると、表の下のスペースに詳細が表示されます。

  5. DevTools を閉じて、最大 3 日間録画の実行を続行できます。録画を停止するには、停止して。 [停止] をクリックします。

Reporting API

一部のエラーは本番環境でのみ発生します。実際のユーザー、ネットワーク、デバイスによってゲームが変化するため、ローカルや開発中は発生しません。

たとえば、新しいサイトが document.write() を使用して重要なスクリプトを読み込むサードパーティ ソフトウェアに依存しているとします。世界中の新規ユーザーがサイトを開きますが、テストで使用した接続よりも遅い接続を使用している可能性があります。ネットワークが遅い場合、Chrome が document.write() に対して介入するため、ユーザーにはサイトが正常に表示されなくなります。また、コードベースで使用されている非推奨の API やまもなく非推奨になる API にも注意してください。

Reporting API は、非推奨の API 呼び出しやページのセキュリティ違反などをモニタリングできるように設計されています。レポートは、Reporting API を使用してウェブ アプリケーションをモニタリングするで説明されているように設定できます。

ページで生成されたレポートを表示するには:

  1. chrome://flags/#enable-experimental-web-platform-features に移動し、[試験運用版のウェブ プラットフォームの機能] を [有効] に設定して Chrome を再起動します。
  2. DevTools を開くと、[Application] > [Background services] > [Reporting API] に移動します。たとえば、こちらのデモページでレポートを確認できます。

    Reporting API にリストされているレポート

[Reporting API] タブは次の 3 つの部分に分かれています。

  • [レポート] 表には、各レポートに関する次の情報が表示されます。
    • レポートの生成をトリガーしたURL
    • 違反のタイプ
    • レポートのステータス
    • 宛先エンドポイント
    • 生成日時のタイムスタンプ
    • レポートの本文
  • [レポート本文] プレビュー セクション。レポート本文をプレビューするには、レポートの表でレポートをクリックします。
  • [エンドポイント] セクションには、Reporting-Endpoints ヘッダーで構成されているすべてのエンドポイントの概要が表示されます。

レポートのステータス

[ステータス] 列には、Chrome がレポートを正常に送信したか、送信しようとしているか、失敗したかが示されます。

ステータス 説明
Success ブラウザがレポートを送信し、エンドポイントが成功コード(200 または別の成功レスポンス コード 2xx)で応答しました。
Pending ブラウザがレポートの送信を試行しています。
Queued レポートは生成されていますが、ブラウザはまだ送信を試みていません。レポートが Queued として表示されるケースは次の 2 つです。
  • レポートが新規で、ブラウザが他のレポートが届くかどうかを待ってから送信しようとしている。
  • レポートは新規ではありません。ブラウザはすでにこのレポートの送信を試みて失敗しており、再試行を待機しています。
MarkedForRemoval しばらく再試行した後(Queued)、ブラウザはレポートの送信を停止し、まもなく送信するレポートのリストから削除します。

レポートは、送信が成功したかどうかにかかわらず、しばらくすると削除されます。