0Pricing
React Academy · レッスン

リアルユーザーモニタリングとWeb Vitals

web-vitalsライブラリを使い、LCP、FID、CLS、カスタムパフォーマンスマークをOTelメトリクスとして取得します。

「リアルユーザーモニタリングとWeb Vitals」はCoddyKit上の無料React Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

web-vitals ライブラリ

Google の web-vitals npm パッケージは、実際のユーザーのブラウザーで Core Web Vitals を測定するためのシンプルな API を提供します。npm install web-vitals でインストールし、各メトリクスのコールバックである onLCP、onFID(非推奨)、onCLS、onFCP、onTTFB、および Interaction to Next Paint 用の最新の onINP を個別にインポートします。

メトリクスのコールバックとメトリクスオブジェクト

各コールバック(onLCP、onCLS、onINP など)は、name('LCP')、value(ミリ秒または単位のないスコア)、rating('good'、'needs-improvement'、'poor')、および id(重複排除用の一意な識別子)を含むメトリクスオブジェクトを受け取ります。コールバックは、メトリクスの値が確定した時点で 1 回実行されます。

Web Vitals を分析エンドポイントに報告する

メトリクスを分析エンドポイントに報告するには、Navigator.sendBeacon API または fetch を使用します。sendBeacon はページがアンロードされた後も処理を継続するため、ページが非表示になったときに確定する CLS などのメトリクスには特に適しています。可能な場合は、すべてのメトリクスの報告を 1 つの beacon にまとめてください。

Web Vitals を OTel メトリクスとして送信する

Web Vitals を OpenTelemetry と統合するには、各メトリクス用の Gauge インストルメントを作成します。const lcp = meter.createObservableGauge('web_vitals.lcp')。各 onLCP コールバックで、関連する属性(ページパス、デバイスの種類)とともに値を記録します。これにより、オブザーバビリティバックエンドで P75 LCP の悪化に対してアラートを設定できます。

カスタム React パフォーマンスマーク

Web Vitals では取得できない React 固有のパフォーマンスを測定するには、User Timing API を使用します。レンダリング前に performance.mark('render-start')、レンダリング後に performance.mark('render-end') を実行し、その後 performance.measure('component-render', 'render-start', 'render-end') を実行します。これらの計測結果は Chrome DevTools の Performance タブに表示されます。

React Profiler API

React Profiler コンポーネントはサブツリーをラップし、タイミングデータとともに onRender コールバックを呼び出します。データには id(Profiler の id)、phase('mount' または 'update')、actualDuration(レンダー時間)、baseDuration(メモ化を行わない場合の推定レンダー時間)が含まれます。開発中にこれを使用して、処理の遅いコンポーネントを特定してください。

エラー追跡を OTel span として行う

未処理のエラーや Promise の拒否は、エラーステータスを持つ OTel span として捕捉できます。グローバルリスナーを設定します:window.addEventListener('error', handler) および window.addEventListener('unhandledrejection', handler)。span を作成し、span.setStatus({ code: SpanStatusCode.ERROR }) を設定して、エラーメッセージとスタックトレースを属性として追加し、その後 span を終了します。

React Error Boundaries の統合

React Error Boundaries は、コンポーネントツリー内で発生したレンダリングエラーを捕捉します。componentDidCatch メソッドでエラーを表す OTel span を作成し、ステータスを ERROR に設定して、error.message と componentStack を属性として付加し、span.end() を呼び出します。これにより、React のレンダリングエラーが分散トレースのパイプラインに送られます。

スタックトレース解決のためのソースマップ

本番環境で minify された JavaScript では、"a.b at bundle.min.js:1:84721" のような読みにくいスタックトレースが生成されます。CI/CD のビルドプロセス中にソースマップを Sentry、Datadog、または OTel パイプラインにアップロードしておくと、未加工のスタックトレースが元の TypeScript ファイル名と行番号に自動的に解決されます。

RUM セッションのサンプリング

すべてのセッションについて完全なトレースデータを送信すると、コストが高くなります。セッションサンプリングを実装し、最初のページ読み込み時に sessionSampled フラグをランダムに割り当てて sessionStorage に保存します。サンプリング対象のセッション(例:10%)に対してのみ OTel SDK を初期化し、トレースを送信します。エラーが発生したセッションは常に 100% サンプリングしてください。

Web Vital の悪化に対するアラート

Web Vitals を OTel メトリクスとして報告すると、SLO に基づくアラートを設定できます。1 時間の期間において、5% を超えるセッションで P75 LCP が 2.5 秒を超えた場合にアラートを発生させます。これにより、バックエンドのインフラストラクチャメトリクスではなく、ユーザー体験に直接結び付いた、エンジニアリングチームが対応可能なシグナルを得られます。

Web Vitals の onLCP コールバック

web-vitals ライブラリの onLCP コールバックはいつ実行されますか。

レッスンのまとめ

web-vitals ライブラリは、実際のユーザーのブラウザーで LCP、INP、CLS、FCP、TTFB を測定するためのシンプルなコールバックを提供します。これらを OTel メトリクスとして報告して SLO に基づくアラートを設定し、グローバルリスナーと React Error Boundaries を使用してエラーを OTel span として捕捉し、ソースマップをアップロードして minify されたスタックトレースを解決します。セッションをサンプリングしてデータ量を管理しながら、エラーは 100% 保持してください。

よくある質問

「リアルユーザーモニタリングとWeb Vitals」レッスンは無料ですか?

はい。「リアルユーザーモニタリングとWeb Vitals」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「リアルユーザーモニタリングとWeb Vitals」で何を学びますか?

web-vitalsライブラリを使い、LCP、FID、CLS、カスタムパフォーマンスマークをOTelメトリクスとして取得します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「リアルユーザーモニタリングとWeb Vitals」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. フロントエンドのオブザーバビリティ:概要と重要性
  2. ブラウザーからOpenTelemetryトレースを取得する
  3. リアルユーザーモニタリングとWeb Vitals
  4. フロントエンドとバックエンドのトレースを関連付ける
← React Academyに戻る