Interaction to Next Paint(INP)

Browser Support

  • Chrome: 96.
  • Edge: 96.
  • Firefox: not supported.
  • Safari: not supported.

Source

Chrome の使用状況データによると、ユーザーがページに費やす時間の 90% はページの読み込みに費やされています。そのため、ページのライフサイクル全体でレスポンシブ性を慎重に測定することが重要です。これが INP 指標で評価されるものです。

応答性が良好とは、ページが操作に迅速に応答することを意味します。ページが操作に応答すると、ブラウザはペイントする次のフレームで視覚的なフィードバックを表示します。視覚的なフィードバックは、オンライン ショッピング カートに追加した商品が実際に追加されているかどうか、モバイル ナビゲーション メニューが開いているかどうか、ログイン フォームの内容がサーバーで認証されているかどうかなどをユーザーに伝えます。

操作によっては、他の操作よりも時間がかかるものがありますが、特に複雑な操作の場合は、何か処理が行われていることをユーザーに伝えるために、最初の視覚的なフィードバックをすばやく表示することが重要です。ブラウザが描画する次のフレームが、これを実行できる最短のタイミングです。

したがって、INP の目的は、ネットワーク取得や他の非同期オペレーションからの UI 更新など、インタラクションの最終的な効果をすべて測定することではなく、次回のペイントがブロックされるまでの時間を測定することになっています。視覚的なフィードバックを遅らせると、ページの応答が速くないという印象を与える可能性があります。INP は、このユーザー エクスペリエンスの部分を開発者が測定できるように開発されました。

次の動画の右側の例では、アコーディオンが開いていることをすぐに視覚的にフィードバックしています。左の例は、応答性の低さと、それがユーザー エクスペリエンスの低下につながる様子を示しています。

レスポンスの良し悪しの例。左側では、長いタスクにより、アコーディオンが開きません。これにより、ユーザーはエクスペリエンスが機能していないと思い、複数回クリックすることになります。メインスレッドが遅れた入力を処理すると、その結果、アコーディオンが予期せず開閉します。右側のページはレスポンシブ性が高く、問題なくアコーディオンがすぐに開きます。

このガイドでは、インプレッション数(INP)の仕組みと測定方法について説明します。また、INP を改善するためのリソースも紹介します。

INP とは何ですか?

INP は、ユーザーによるページアクセスの全期間中に発生するすべてのクリック、タップ、キーボード操作のレイテンシをモニタリングすることで、ユーザー インタラクションに対するページの全体的な応答性を評価するための指標です。最終的な INP 値は、最大時間を要したことがモニタリングされたインタラクションであり、外れ値は無視されます。

INP は、ページで行われたすべてのインタラクションをモニタリングして計算されます。ほとんどのサイトでは、レイテンシが最も長いインタラクションが INP としてレポートされます。

ただし、インタラクションが多いページでは、ランダムな問題が発生すると、通常はレスポンシブなページでも異常に高いレイテンシのインタラクションが発生する可能性があります。特定のページで発生するインタラクションが多いほど、この問題が発生する可能性が高くなります。

インタラクションが多いページの実際の応答性をより正確に測定するため、50 件のインタラクションごとに最も高いインタラクションを 1 件無視します。ほとんどのページ エクスペリエンスでは 50 回を超えるインタラクションが発生しないため、最も悪いインタラクションのみが報告されることが多いです。その後、すべてのページビューの 75 パーセンタイルが通常どおり報告されます。これにより、さらに外れ値が除外され、ほとんどのユーザーが経験する値以上が算出されます。

インタラクションとは、同じ論理的なユーザー操作中に発生するイベント ハンドラのグループです。たとえば、タッチスクリーン デバイスでの「タップ」操作には、pointeruppointerdownclick などの複数のイベントが含まれます。インタラクションは、JavaScript、CSS、組み込みのブラウザ コントロール(フォーム要素など)、またはそれらの組み合わせによって駆動できます。

インタラクションのレイテンシは、ユーザーがインタラクションを開始してからブラウザが次にフレームをペイントできるまでの時間で、インタラクションを駆動するイベント ハンドラのグループの単一の最も長い時間で構成されます。

優れた INP スコアとは

応答性の指標に「良好」や「低い」などのラベルを固定することは困難です。一方で、優れた応答性を重視した開発手法を奨励する必要があります。一方で、ユーザーが使用するデバイスの機能にはかなりのばらつきがあるため、達成可能な開発の期待値を設定する必要があります。

優れた応答性でユーザー エクスペリエンスを提供するために、モバイルとデスクトップ デバイスに分けて、フィールドで記録されたページ読み込みの75 パーセンタイルを測定するのが適切なしきい値です。

  • INP が 200 ミリ秒未満または 200 ミリ秒の場合、ページの応答性が良好です。
  • INP が 200 ミリ秒を超え、500 ミリ秒未満または 500 ミリ秒の場合は、ページの応答性に改善が必要です。
  • INP が 500 ミリ秒を超える場合、ページの応答性が低いことを意味します。
良好な INP 値は 200 ミリ秒未満、低い値は 500 ミリ秒を超えます。その間の値は改善が必要です。
適切な INP 値は 200 ミリ秒未満です。低速な値は 500 ミリ秒を超えます。

インタラクションの内容

メインスレッドでのインタラクションを示す図。ブロック タスクの実行中にユーザーが入力を行った。これらのタスクが完了するまで入力は遅延され、その後、ポインタアップ、マウスアップ、クリックのイベント ハンドラが実行され、次にフレームが表示されるまでレンダリングとペイント処理が開始されます。
インタラクションのライフサイクル。入力遅延は、イベント ハンドラの実行が開始されるまで発生します。これは、メインスレッドでの長時間のタスクなどの要因が原因で発生する可能性があります。その後、インタラクションのイベント ハンドラ コールバックが実行され、次のフレームが表示されるまでに遅延が発生します。

インタラクティビティの主な推進力は JavaScript ですが、ブラウザは JavaScript で動くもの以外のコントロール(チェックボックス、ラジオボタン、CSS で動くコントロールなど)を通じてインタラクティビティを提供します。

INP の目的として、次のインタラクション タイプのみが記録されます。

  • マウスでクリックする。
  • タッチスクリーン搭載デバイスをタップしている様子。
  • 物理キーボードまたは画面キーボードのキーを押す。

インタラクションは、埋め込み動画の再生ボタンのクリックなど、メインのドキュメントまたはドキュメントに埋め込まれた iframe で発生します。エンドユーザーは iframe に何が含まれているかを認識しません。そのため、最上位ページのユーザー エクスペリエンスを測定するには、iframe 内の INP が必要です。JavaScript Web API は iframe の内容にアクセスできないため、CrUX と RUM の差異として表示されることがあります。

インタラクションには複数のイベントが含まれる場合があります。たとえば、キーストロークには keydownkeypresskeyup イベントが含まれます。タップ操作には、pointerup イベントと pointerdown イベントが含まれます。インタラクション内で最も長い時間のイベントが、インタラクションの合計レイテンシに影響します。

2 つのインタラクションを含むより複雑なインタラクションの描写。1 つ目は mousedown イベントです。これは、マウスボタンが離される前にフレームを生成し、結果として別のフレームが提示されるまでさらに処理を開始します。
複数のイベント ハンドラとのやり取りを示す図。インタラクションの最初の部分は、ユーザーがマウスボタンを押下したときに入力を受け取ります。ただし、マウスボタンを放す前にフレームが表示されます。ユーザーがマウスボタンを放すと、次のフレームが表示される前に、別の一連のイベント ハンドラを実行する必要があります。

ページの INP は、ユーザーがページを離れたときに計算されます。結果は、ページのライフサイクル全体における全体的な応答性を示す単一の値です。INP が低いということは、ページがユーザー入力に安定して応答していたことを意味します。

INP と初回入力遅延(FID)の違いは何ですか?

INP は、初回入力遅延(FID)の後継指標です。どちらも応答性の指標ですが、FID はページでの最初の操作の入力遅延のみを測定していました。INP は、入力遅延からイベント ハンドラの実行時間、ブラウザが次のフレームをペイントするまでのページ上のすべてのインタラクションをモニタリングすることで、FID を改善します。

これらの違いは、INP と FID の両方が異なるタイプの応答性指標であることを意味します。FID は、ユーザーに対するページの第一印象を評価するために設計された読み込み応答性の指標でしたが、INP は、ページのライフサイクルのどの時点で発生したとしても、全体的な応答性のより信頼性の高い指標です。

INP 値が報告されない場合はどうなりますか?

ページから INP 値が返されない場合があります。次のような原因が考えられます。

  • ページは読み込まれたが、ユーザーがクリック、タップ、キーボードのキー入力をしていない。
  • ページは読み込まれたが、ユーザーが測定対象外のジェスチャー(スクロールや要素のホバーなど)を使用してページを操作した。
  • ページにアクセスしている bot(検索クローラやヘッドレス ブラウザなど)が、ページを操作するようにスクリプト化されていない。

INP を測定する方法

INP は、現実的なユーザー インタラクションをシミュレートできる範囲で、現場ラボの両方で測定できます。

業務の現場

理想的には、フィールド データから INP の最適化を開始します。リアルユーザー モニタリング(RUM)のフィールド データでは、ページの INP 値だけでなく、INP 値自体の原因となった特定のインタラクション、インタラクションが発生したタイミング(ページの読み込み中か読み込み後か)、インタラクションの種類(クリック、キープレス、タップ)、その他の有用なタイミングなど、インタラクションのどの部分が応答性に影響しているかを特定するのに役立つコンテキスト データを取得できます。

ウェブサイトが Chrome ユーザー エクスペリエンス レポート(CrUX)に含まれる場合は、PageSpeed Insights の CrUX(およびその他の Core Web Vitals)を使用して INP のフィールド データをすばやく取得できます。少なくとも、ウェブサイトの INP のオリジンレベルの画像を取得できますが、URL レベルのデータも取得できる場合があります。

ただし、CrUX は問題があるかどうかを判断できますが、問題の原因を特定することはできません。RUM ソリューションは、レスポンシビリティの問題が発生しているページ、ユーザー、ユーザー操作について詳細を把握するのに役立ちます。INP を個々のインタラクションに関連付けることで、推測や無駄な労力を回避できます。

実験室

ページのインタラクションに遅延があることを示すフィールドデータが得られたら、ラボでテストを開始することをおすすめします。フィールドデータがあれば、問題のあるインタラクションの再現をラボで行う作業が大幅に簡素化されます。

ただし、フィールドデータがない可能性もあります。一部のラボツールでは INP を測定できますが、ラボテスト中のページの INP 値は、測定期間中に行われたインタラクションによって異なります。ユーザーの行動は予測不可能で、変化が激しいため、ラボでのテストでは、フィールドデータと同じように問題のあるインタラクションが見つからない可能性があります。また、一部のラボツールでは、インタラクションなしでページの読み込みのみをモニタリングするため、ページの INP が報告されません。このような場合、合計ブロッキング時間(TBT)は INP の適切な代替指標となる可能性がありますが、それ自体が INP の代用となるわけではありません。

ページの INP を評価する際にラボツールに制限があるものの、ラボでインタラクションの遅延を再現するための戦略はいくつかあります。戦略には、一般的なユーザーフローを追跡してその過程でインタラクションをテストする方法や、ページの読み込み時にページを操作する(メインスレッドが最も負荷が高い場合が多い)方法などがあります。これにより、ユーザー エクスペリエンスの重要な部分でインタラクションの遅延を特定できます。

INP を改善する方法

INP の最適化に関するガイド集では、現場でのインタラクションの遅延の特定、ラボデータの使用による原因の特定と最適化のプロセスについて説明しています。

変更履歴

指標の測定に使用される API や、指標自体の定義でバグが見つかることがあります。その結果、変更が必要になることがあります。これらの変更は、内部レポートやダッシュボードで改善または回帰として表示される場合があります。

これらの指標の実装または定義に対するすべての変更は、この変更ログに表示されます。

これらの指標に関するフィードバックがある場合は、web-vitals-feedback Google グループでフィードバックを送信してください。

理解度テスト

INP 指標の主な目的は何ですか?

ユーザーが開始したすべての操作またはほとんどの操作で、ユーザーが操作を開始してから次のフレームがペイントされるまでの時間を最小限に抑える。
ページが完全に操作可能になるまでにかかる時間を評価します。
ページの最初のコンテンツが表示されるまでにかかる時間を測定します。
ページの視覚的な安定性を定量化し、予期しないレイアウトの変化を最小限に抑える。

INP の計算では、次のインタラクションの種類のうちどれが測定されますか?該当するものをすべて選択してください。

要素にマウスカーソルを合わせる。
キーボードのキーを押す。
ページの拡大または縮小。
マウスホイールまたはトラックパッドによるページのスクロール。
マウスでクリックする。
タッチスクリーンをタップする。

INP でインタラクションの「レイテンシ」はどのように定義されますか?

ページ上のすべてのインタラクションから視覚的なレスポンスが得られるまでの平均時間。
ブラウザがインタラクションに関連付けられたイベント ハンドラの処理を開始するまでの時間。
ブラウザがインタラクションのイベント ハンドラを処理する時間。
インタラクションの開始から次のフレームが完全に表示されるまでの時間。

INP と FID の違いは何ですか?

違いはありません。INP と FID は同じ指標の 2 つの異なる名前にすぎません。
INP と FID は、ページがインタラクティブになるタイミングの異なるタイムスタンプを測定します。
INP は、ページの最初のコンテンツが表示されるまでの時間を測定します。一方、FID はユーザー入力に対する応答性を測定します。
INP はすべてのインタラクションの全時間を考慮しますが、FID は最初のインタラクションの入力遅延のみを測定します。

PageSpeed Insights などのツールで、ページの INP データを利用できないのはどのような状況ですか?

ページで、INP データを報告しないカスタム パフォーマンス測定ライブラリを使用している。
ユーザーがスクロールとホバーのみでページを操作した場合、これは INP の対象外となります。
このページは、INP 向けに自動的に最適化されるフレームワークを使用して作成されているため、報告する必要はありません。
CrUX データセットで有意な INP 値を計算するのに十分な Chrome ユーザーのインタラクション データがありません。

ラボ環境で操作の遅延を再現するための最も効果的な戦略は何ですか。

ほとんどのユーザーが遭遇する可能性の低い、複雑なエッジケースの操作に焦点を当てる。
ページが完全に読み込まれてアイドル状態になった後にのみ、インタラクションをテストする。
高速で信頼性の高いネットワーク接続のないハイエンド デバイスをシミュレートして、厳しい条件を作り出す。
読み込み中にページを操作し、一般的なユーザーフローに沿って潜在的なボトルネックを特定します。

このクイズは Gemini 1.5 によって生成され、人間によって確認されています。フィードバックをお寄せください