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 Console | web-vitals JS | |
|---|---|---|
| データソース | CrUX(Chrome 限定) | 全ブラウザ |
| 反映 | 28 日ローリング | リアルタイム |
| サンプル | 全 Chrome ユーザー | 自社訪問者 |
| 分析軸 | 限定 | 自由 |
送信先の選択肢
| 送信先 | 用途 |
|---|---|
| GA4 | 標準的、無料 |
| 自前 API + DB | 完全カスタム |
| Datadog | エンタープライズ |
| Sentry | エラー連携 |
| Vercel Analytics | Vercel ホスティング統合 |
| Cloudflare Web Analytics | Cloudflare 統合 |
サンプリング
全イベント送信は重い:
- 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 ツールで OK | RUM が実ユーザー体感 | Field vs Lab |
実務での適用
段階的実装
- web-vitals npm install
- 主要 5 指標を GA4 送信
- ダッシュボード化
- 月次でトレンド確認
- 施策後の即時効果測定
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 問形式で確認できる。