Core Web VitalsのフィールドデータをConsoleのみで確認する方法

自分がページを開いたときの[CLS](https://web.dev/cls/), [LCP](https://web.dev/lcp/), [FID](https://web.dev/fid/) のようなCore Web Vitalsのフィールドデータを確認するためには
[公式のChrome拡張機能](https://chrome.google.com/webstore/detail/web-vitals/ahfhijdlegdabablpippeagghigmibma)を使うのが一番ラクですが、諸事情あって拡張機能を利用できない場合はChrome DevToolsのConsoleパネルから以下のスニペットを動かすことでも確認可能です。

BASIC認証がかかった検証用のページでも利用可能です。

```js:
import('https://unpkg.com/web-vitals@3?module')
  .then((module) => {
    module.onLCP(console.log);
    module.onCLS(console.log);
    module.onINP(console.log);
    module.onFID(console.log);
    console.log('Please switching tabs and then switching back.');
  });
```

本スニペットはGoogle公式のCore Web Vitalsのフィールドデータを確認するためのコードをConsole上でスマートに動かせるように[動的インポート](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import#dynamic_imports) の形に変更して作成しています。

https://github.com/GoogleChrome/web-vitals#from-a-cdn

## 使い方
1. [Chrome DevToolsのConsoleパネル](https://qiita.com/aqril_1132/items/a0f7e81a772006847ec3)を開きます。
2. ページの読み込みが完了するまで待ってConsoleにスニペットを貼り付けてEnterキーを叩きます。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/c27c2a31-096c-6e11-b163-b737e502f5b7.png)
3. ページ内のボタンやリンクをクリックするとFIDの数値が出力されます。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/5710d72a-1bbf-3976-690c-27612efb37ef.png)
4. ブラウザの別のタブを開いてもう一度スニペットを動かしたタブに戻ってくるとLCP, CLSの数値も出力されます。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/32fee964-08bf-bae5-478d-0c75da8e1d72.png)

このような動作をする理由
> Note that some of these metrics will not report until the user has interacted with the page, switched tabs, or the page starts to unload. If you don't see the values logged to the console immediately, try reloading the page (with preserve log enabled) or switching tabs and then switching back.
> 
> Also, in some cases a metric callback may never be called:
> 
> ・FID is not reported if the user never interacts with the page.
> ・FCP, FID, and LCP are not reported if the page was loaded in the background.
> In other cases, a metric callback may be called more than once:
> 
> ・CLS should be reported any time the page's visibilityState changes to hidden.
> ・CLS, FCP, FID, and LCP are reported again after a page is restored from the back/forward cache.
https://github.com/GoogleChrome/web-vitals#basic-usage

公式のChrome拡張機能と数字を見比べてみると同じデータを確認できていることが分かります。
（四捨五入による処理で僅かに異なる数値となる場合もあります）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/c7daab43-5000-abcf-6b08-0f455551297a.png)

## 出力結果の見方

- value: 各指標の出力時点での数値
- delta: 同じページビュー中に数値の更新があった場合、前回報告したときのスコアとの差分
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/d476c386-d5ee-328f-3a84-ce6f5ff8be99.png)

実際に検索順位に影響を与える[ページエクスペリエンスシグナル](https://developers.google.com/search/docs/advanced/experience/page-experience)が考慮する数字は過去28日間にGoogleに送信された十分な量のフィールドデータの内75パーセントタイルの成績です。

https://support.google.com/webmasters/thread/107597847/core-web-vitals-page-experience-faq-v2-0?hl=ja

右向きの三角形が付いた行はクリックすることで展開することができます。
出力結果のentriesを展開することで各数値に影響を与えた要素の情報を確認することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/e1e3b9ce-e0a5-6582-43c8-06557c22aefb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/04a5d1f2-6730-bf8c-f1bd-b93c0f01f07d.png)


## その他
コードに記述を加えることにより[TTFB](https://web.dev/ttfb/)や[FCP](https://web.dev/fcp/)の値を確認することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/8927521d-e4ac-9f1b-ac8d-383284667994.png)

```js:


import('https://unpkg.com/web-vitals@3?module')
  .then((module) => {
    module.onLCP(console.log);
    module.onCLS(console.log);
    module.onINP(console.log);
    module.onFID(console.log);
    module.getFCP(console.log);
    module.getTTFB(console.log);
    console.log('Please switching tabs and then switching back.');
  });
```

### CoreWebVitalsのスコアを確認する様々な方法
https://web.dev/i18n/ja/vitals-tools/