DevTools の使い方を可能な限りスクショ付きで解説してみる
以下の公開計測会でやったものを個別に解説してみる。
細かいテクニックが多いのだが、それを可能な限りテキストとスクショで解説したい。使い方の解説が中心で、どういう意味があるかは解説しない。
Chrome131時点のスクリーンショットで、後で読む場合は頻繁にUIが変わっている点に注意。大事なのは意図。
宣伝: これを御社のサイトで解説する仕事をやっています。
デモのURL
これに意味はなく、今日偶然見ていただけで意図はない。関係ないがエッジランナーズは最高のアニメ。
DevTools を開く
F12 or 右クリックから「検証」

DevTools > Lighthouse
この状態で計測

このとき、新しいプロファイルを作ったりして、可能な限り Chrome拡張が入ってない状態にすること。Chrome拡張による処理も計測に含まれてしまう。
Lighthouse レポートの読み方
点数部分にマウスオーバーすると、内訳が見える

See Calculator をクリックすると、Google側の現在のスコアの重みがわかる

View Treemap で簡易なJSチャンクのサイズ比率と、実行された行のカバレッジが見える。


Lighthouse 計測環境の再現の仕方
レポート末尾に設定がある。この状態に合わせると再現できる

Lighthouse Dignosticsの読み方
上からスコア影響が大きいものが並んでいる。Show audits relevant to ... で絞り込める

クリックすると詳細が見える。これはLCPがいつ確定したかのレポート(大事)

複数のLighthouseレポートを比較
- で追加できる。

DevTools > Performance
読み込み時間を取りたい場合、 Record ではなく Record and Reload を押す。
この時、CPUやNetwork を低速化して、Lighthouse計測環境に合わせることができる

計測するとこうなる

大事なのは Network と Main(Thread)
マウスホバーしてレンダリング状態を確認
そのタイムラインではどういう状態だったか、ここのマウスオーバーで確認できる

Network
Network をクリックして展開する。LCP タイミングを意識しながらウォーターフォール図をみる。

マウスドラッグで移動できる
範囲指定のボタンをドラッグすると、詳細な区間を絞り込むことが出来る

区間はマウスホイールでも操作できる。
右上に赤いオーバーレイ表示があるのはレンダーブロッキングコンテンツで、順序指定があり他の読み込みを止める可能性がある。
マウスホバーでリクエストの状態がわかる。たとえばこれは画像が初期表示に含まれることがわかって、画像の読み込みプライオリティが Low -> High に上がっているところ。

各リクエストは右クリックして Networkの詳細に飛ぶこともできる。

Main
主に CPU で行われている=(ユーザー操作に割り込む)操作。

赤いロングタスクがフレームに割り込んでる超過している部分になる。
ドラッグや範囲操作はNetworkと同じ。
タスクをクリックすると、下のタブで詳細がみえる。

下のタブから Bottom Up を選ぶとそのコールスタックの内訳がみえる。

DevTools Network
主にネットワークを中心としたデータがみえる。
この画面を開いてからロードしたものが見えるので、この状態でリロードして確かめる。

タブを右クリックすると表示内容を制御できる。

クリックするとその軸でソートできる。
個人的にはここでもWaterfallを表示しておくのを推奨。

表示内容を絞り込める

リクエストにホバーでタイミングの詳細が取れる。

クリックで詳細

ホバーしているときにでてる Timing の詳細

Initiator で発火のチェーンがわかる

Source でリクエストを書き換える
準備として、 DevTools > Source > Overrides で + Select folder to overrides を選択

なんでもいいので、適当なディレクトリを作って(新規作成して)選択する

Chrome でこのポップアップが出るので許可する。

キャッシュを保存するディレクトリができた。ここで Enable Local Overrides しておく。

ここまでやってから、ネットワークタブから右クリックして Override Content

ここでプレビューが編集可能になる。ここを書き換えると、そのリクエスト対象の内容を書き換えることができる。

これは Lighthouse の計測時や再ロードで反映される。
書き換えたものは紫でマークが付く。

書き換えた内容は、強制的に HTTP1.1 扱いになるので注意。HTTP/2のストリーム処理にならずに、点が悪化したことがある。
Network Blocking した状態でLighthouseを計測
Network から右クリックで、Block request URL(Domain) できる

現在のブロック状態は、下側の Network Request Blocking で確認できる

この状態で再度ロードすると、 1 blocked と確認できる(実際にはGTMの後段の他のリクエストも消えている)

実際のリクエスト本数や転送量は、Network タブのここで確認できる。ブロック前後を比較する。

このブロッキングの状態は、Lighthouseにも反映される。

Memory Profiler
Take Snapshot で現在のメモリ使用量が取れる

詳細

一つだけとってもろくな調査は出来ない。
基本的には2つとって比較する。
Snapshot2 から Comparison Snapshot1 を選択

