Domain 139 / 225

Web Vitals JavaScript 計測は web-vitals ライブラリで RUM データを取る

web-vitals RUM の要点

web-vitals は Google 公式の JS ライブラリで、ブラウザで Core Web Vitals を計測し独自分析基盤に送信できる。Search Console は 28 日集計の遅延データだが、RUM ならリアルタイムで施策効果を測定。GA4 / Datadog / 自前 API へ送信

なぜこれを学ぶか

Search Console は 28 日ローリング集計で改善反映が遅い。 web-vitals JS で RUM 構築すれば、リアルタイムで施策効果を測定できる。

サイト速度を継続的に改善するすべての担当者で重要。

学ばないと起きること

よくある事故被害
Search Console のみで判断改善効果の確認が 4 週間後
Lab データのみで判断実ユーザー体感とズレ

学ぶメリット

  • 改善効果の即時確認
  • 自社独自の分析軸
  • 商談で「web-vitals + RUM」を即答

仕組み

web-vitals ライブラリ

公式: https://github.com/GoogleChrome/web-vitals

npm install web-vitals

基本実装

import { onLCP, onINP, onCLS, onTTFB, onFCP } from 'web-vitals';

const sendToAnalytics = (metric) => {
  fetch('/api/analytics', {
    method: 'POST',
    body: JSON.stringify({
      name: metric.name,
      value: metric.value,
      rating: metric.rating,
      url: location.href,
      navigationType: metric.navigationType
    })
  });
};

onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);
onTTFB(sendToAnalytics);
onFCP(sendToAnalytics);

Google Analytics 4 連携

import { onLCP } from 'web-vitals';

onLCP((metric) => {
  gtag('event', metric.name, {
    value: Math.round(metric.value),
    metric_id: metric.id,
    metric_value: metric.value,
    metric_rating: metric.rating
  });
});

計測される指標

指標内容
LCP最大要素描画時間
INPインタラクション応答性
CLSレイアウトずれ累積
TTFBサーバ応答時間
FCP最初のコンテンツ描画

キー概念

Search Console との違い

Search Consoleweb-vitals JS
データソースCrUX(Chrome 限定)全ブラウザ
反映28 日ローリングリアルタイム
サンプル全 Chrome ユーザー自社訪問者
分析軸限定自由

送信先の選択肢

送信先用途
GA4標準的、無料
自前 API + DB完全カスタム
Datadogエンタープライズ
Sentryエラー連携
Vercel AnalyticsVercel ホスティング統合
Cloudflare Web AnalyticsCloudflare 統合

サンプリング

全イベント送信は重い:

  • 10% サンプリング
  • セッション開始時に判定
  • 重要な不良値は全送信
const SAMPLE_RATE = 0.1;
if (Math.random() < SAMPLE_RATE) {
  onLCP(sendToAnalytics);
}

attribution ビルド

詳細な原因情報を取得:

import { onLCP } from 'web-vitals/attribution';

onLCP((metric) => {
  console.log(metric.attribution.element);  // 該当要素
  console.log(metric.attribution.url);  // リソース URL
  console.log(metric.attribution.timeToFirstByte);
});

よくある誤解

よくある誤解実際のところ出典
RUM は Search Console と同じデータソースが違うweb-vitals ドキュメント
全 PV を送信すべきサンプリングで十分同上
Lab ツールで OKRUM が実ユーザー体感Field vs Lab

実務での適用

段階的実装

  1. web-vitals npm install
  2. 主要 5 指標を GA4 送信
  3. ダッシュボード化
  4. 月次でトレンド確認
  5. 施策後の即時効果測定

attribution の活用

INP / LCP の不良時:

  • どの要素が原因か
  • どのスクリプトが原因か
  • ユーザーセグメント別の傾向

トラブル別の対処

症状確認すべきこと
RUM データと SC データが乖離サンプル / 期間 / ブラウザの違い

公式ソース

自己テスト

Q1. web-vitals JS の主な利点は?

リアルタイム計測 / 全ブラウザ対応 / 自由な分析軸 / 即時施策効果測定

Q2. Search Console と web-vitals JS の違いは?

SC は CrUX(Chrome 限定)28 日ローリング、web-vitals JS は全ブラウザのリアルタイム

Q3. attribution ビルドで何が取れる?

該当要素 / リソース URL / TTFB 内訳など、原因特定に必要な詳細情報

これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。