仕組みから学ぶ Web
応用読了目安 14#Core Web Vitals#LCP#INP#CLS#パフォーマンス

Core Web Vitals — 数字を上げるのではなく、何が遅いかを特定する

LCP・INP・CLS は原因ではなく症状の分類。3つが何の代理指標なのかを知ると、直す場所が工程の中で決まる。

この記事の進み方

What — 3つが何を測っているのか

Core Web Vitals は3つの指標です。名前を覚えるより、何の代理指標なのかを押さえるほうが役に立ちます。

Compare3つの指標

表示されるまで待たされる

Largest Contentful Paint
測っているもの
最大の要素が描かれるまでの時間
利用者の困りごと
何も出ないまま待つ
良いとされる値
2.5 秒以内
合成値か
**合計。内訳は含まない**
  • サーバーの応答・リソースの読み込み・描画の合計
  • どこが支配的かは、この数字からは分からない
  • 最大要素がどれかは、画面幅や内容で変わる

どれも「利用者が何に困るか」を1つの数字に代理させたもの。数字そのものに意味はなく、困りごとの分類として使う。

フィールドデータ
実際の利用者の環境で集めた値。端末も回線もばらばらで、これが評価の対象になる。
ラボデータ
決まった条件で測った値。再現性はあるが、利用者の実際とは違う。
TTFB
Time To First Byte。サーバーが最初の1バイトを返すまで。LCP の内訳の先頭。
パーセンタイル
評価は 75 パーセンタイルで見る。平均ではなく「4人に3人はこれより速い」という値。

LCP は合計値。分解しないと直せない

冒頭の事故はここでした。LCP は4つの区間の合計です。

FigureLCP 4.2 秒の内訳
  1. 1TTFBサーバーが返し始めるまで重い
  2. 2リソースの読み込み開始までHTML を読んで、画像の存在を知るまで
  3. 3リソースの読み込み画像そのもののダウンロード軽い
  4. 4描画読み終わってから画面に出るまで

ブラウザの開発者ツールで、LCP の内訳は区間ごとに出る。まずそこを見る。画像を疑うのは、画像の区間が長かったときだけ。

1/4
TTFBこの事故では 2.6 秒。DB の遅いクエリが原因だった。フロントの改善では1ミリ秒も縮まらない。

同じ 4.2 秒でも、どこが支配的かで直す場所がまったく違う。合計だけ見ていると、全体の1割を削って満足する。

確認 — ここまで読めたか

LCP が 4.2 秒でした。最初にやるべきことはどれですか?

まず選ぶ(解答例は a〜d の記号で説明します)

Why — なぜこの3つなのか

速さを表す数字は昔からありました。読み込み完了、最初の描画、リソースの総量。どれも**「利用者が何に困っているか」とずれていました**。

読み込み完了は、画面がとっくに使える状態でも、末尾の解析タグを待って遅く出ます。最初の描画は、背景色が塗られただけで「描画された」ことになります。

Core Web Vitals は逆から作られています。利用者が困る場面を3つに分類して、それぞれに数字を当てた。

困りごと指標
何も出ないまま待つLCP
押したのに反応しないINP
押そうとしたものが動くCLS

だから3つなのであって、技術的な工程に対応しているわけではありません。症状の分類です。

75 パーセンタイルで見る理由

評価は平均ではなく 75 パーセンタイルです。「4人に3人はこれより速い」という値。

平均だと、速い多数が遅い少数を隠します。ハイエンドの端末で 1 秒、古い端末で 12 秒でも、平均は良い数字になります。困っている人がいることが見えません。

かといって最悪値だと、極端な1件に振り回されます。75 パーセンタイルは、無視できない多数派の中で、いちばん困っている層を見る位置です。

ラボとフィールドが食い違う

手元の開発者ツールで測ると良い数字が出るのに、実際の利用者の値は悪い。よくあります。

理由は単純で、測っている条件が違うからです。手元は高速な回線、高性能な端末、キャッシュ済み、拡張機能なし。利用者はその逆が混ざります。

ラボの数字は変更の前後を比べるのに向きます。フィールドの数字はいま困っている人がいるかを知るのに向きます。用途が違うので、片方でもう片方を代用できません。

確認 — ここまで読めたか

INP が悪いとき、いちばん疑うべきものはどれですか?

まず選ぶ(解答例は a〜d の記号で説明します)

演習 — まず自分で判断する

解説を読む前に、まず自分で判断してみてください。ここで一度詰まっておくと、 次の節の判断軸が「なるほど」ではなく「そう来たか」に変わります。

演習 — 設計判断を問う

この数字から、どこを調べますか?

与えられた条件
  • EC サイトの商品一覧。フィールドデータの75パーセンタイルで LCP 3.8 秒、INP 450ms、CLS 0.02
  • 手元の開発者ツールでは LCP 1.2 秒、INP 90ms
  • 一覧は商品を50件表示し、それぞれに画像がある
  • 検索と絞り込みは、押してから結果が出るまで体感で遅い
  • サーバーの応答時間は監視していて、平均 120ms
この軸で考える
  • · ラボとフィールドが食い違う理由
  • · 3つの数字のうち、どれから手を付けるか
  • · 平均 120ms という監視値をどう扱うか
まず選ぶ(解答例は a〜d の記号で説明します)

演習 — 説明できるか

「LCP を 2.5 秒以内にしてほしい」と言われたとき、何を確認しますか

与えられた条件
  • 依頼してきたのは、計測ツールのレポートを見た非エンジニア
  • 期日は今月末
  • 断りたいわけではなく、正しく進めたい

読み終わりましたか?

読了にすると、これを前提とする記事がロードマップで開放されます。