debug-optimize-lcp
LCP(Largest Contentful Paint)のデバッグと最適化を、Chrome DevTools の MCP ツールを使ってガイドするスキルです。ユーザーが LCP のパフォーマンス改善、ページの読み込み速度、Core Web Vitals の最適化について質問したり、ヒーロー画像やメインコンテンツの表示が遅い原因を調べたいときに活用してください。「largest contentful paint」「page load speed」「CWV」といったキーワードが挙がった場合にも適用されます。
description の原文を見る
Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions "largest contentful paint", "page load speed", "CWV", or wants to improve how fast their hero image or main content renders.
SKILL.md 本文
LCP とはなぜ重要なのか
Largest Contentful Paint(LCP)は、ページの主要なコンテンツがどの程度の速さで表示されるかを測定します。ナビゲーション開始から、最大の画像またはテキストブロックがビューポート内でレンダリングされるまでの時間です。
- 良好: 2.5 秒以下
- 改善が必要: 2.5~4.0 秒
- 低: 4.0 秒より長い
LCP は Core Web Vital の一つであり、ユーザーエクスペリエンスと検索ランキングに直接影響を与えます。モバイルページの 73% では、LCP 要素は画像です。
LCP サブパーツの内訳
すべてのページの LCP は、ギャップやオーバーラップのない 4 つの連続したサブパーツに分解されます。どのサブパーツがボトルネックであるかを理解することが、効果的な最適化の鍵となります。
| サブパーツ | LCP の理想的な割合 | 測定内容 |
|---|---|---|
| Time to First Byte (TTFB) | 約 40% | ナビゲーション開始 → HTML の最初のバイト受信 |
| Resource load delay | 10% 未満 | TTFB → ブラウザが LCP リソースの読み込み開始 |
| Resource load duration | 約 40% | LCP リソースのダウンロード時間 |
| Element render delay | 10% 未満 | LCP リソース ダウンロード → LCP 要素レンダリング |
「遅延」サブパーツはできるだけゼロに近い必要があります。どちらかの遅延サブパーツが LCP 全体に対して大きい場合、そこが最初の最適化対象です。
よくある落とし穴: 他の部分をチェックせずに 1 つのサブパーツ(例えば、読み込み時間を減らすための画像圧縮)のみを最適化する。レンダリング遅延が実際のボトルネックの場合、より小さい画像は役に立たず、短縮された時間がレンダリング遅延にシフトするだけです。
デバッグワークフロー
以下のステップを順番に実行します。各ステップは前のステップの上に構築されます。
ステップ 1: パフォーマンストレースを記録
ページに移動してから、LCP を含む完全なページロードをキャプチャするためにリロード付きのトレースを記録します。
navigate_pageでターゲット URL に移動performance_start_traceをreload: trueおよびautoStop: trueで実行
トレース結果には LCP タイミングと利用可能なインサイトセットが含まれます。出力からインサイトセット ID をメモしておきます。次のステップで必要になります。
ステップ 2: LCP インサイトを分析
performance_analyze_insight を使用して LCP 固有のインサイトを詳しく調べます。トレース結果で以下のインサイト名を探してください。
- LCPBreakdown — 4 つの LCP サブパーツと各部のタイミングを表示
- DocumentLatency — TTFB に影響するサーバーレスポンス時間の問題
- RenderBlocking — LCP 要素のレンダリングをブロックしているリソース
- LCPDiscovery — LCP リソースが早期に検出可能だったかどうか
トレース結果からインサイトセット ID とインサイト名を指定して performance_analyze_insight を呼び出します。
ステップ 3: LCP 要素を特定
references/lcp-snippets.md にある 「LCP 要素を特定」スニペット を使用して evaluate_script を実行し、LCP 要素のタグ、リソース URL、および生のタイミングデータを明らかにします。
url フィールドは、ネットワークウォーターフォール内で探すリソースを示します。url が空の場合、LCP 要素はテキストベース(読み込むリソースなし)です。
ステップ 4: ネットワークウォーターフォールを確認
list_network_requests を使用して、LCP リソースが他のリソースに相対して読み込まれたときを確認します。
list_network_requestsをresourceTypes: ["Image", "Font"]でフィルタリングして呼び出し(ステップ 3 に基づいて調整)get_network_requestを LCP リソースのリクエスト ID で呼び出して完全な詳細情報を取得
主要なチェック項目:
- 開始時刻: HTML ドキュメントと最初のリソースと比較。LCP リソースが最初のリソースよりもはるかに遅く開始する場合、排除すべきリソース読み込み遅延があります。
- 期間: リソース読み込み時間が長い場合、ファイルが大きすぎるか、サーバーが遅い可能性があります。
ステップ 5: よくある問題について HTML を検査
references/lcp-snippets.md にある 「よくある問題を監査」スニペット を使用して evaluate_script を実行し、ビューポート内の遅延読み込み画像、欠落した fetchpriority、およびレンダリングをブロックするスクリプトをチェックします。
最適化戦略
ボトルネックサブパーツを特定した後、優先順位の高い以下の修正を適用します。
1. リソース読み込み遅延を排除(目標: 10% 未満)
最も一般的なボトルネック。LCP リソースは直ちに読み込まれるべきです。
- 根本原因: LCP 画像が JS/CSS 経由で読み込まれる、
data-srcの使用、またはloading="lazy" - 修正: 標準的な
<img>をsrcで使用。LCP 画像を決して遅延読み込みしないでください。 - 修正: 画像が HTML で検出可能でない場合、
<link rel="preload" fetchpriority="high">を追加 - 修正: LCP
<img>タグにfetchpriority="high"を追加
2. 要素レンダリング遅延を排除(目標: 10% 未満)
要素はロード後すぐにレンダリングされるべきです。
- 根本原因: 大規模なスタイルシート、
<head>内の同期スクリプト、またはメインスレッドのブロック - 修正: クリティカル CSS をインライン化し、非クリティカル CSS/JS を遅延。
- 修正: メインスレッドをブロックしている長いタスクを分割。
- 修正: サーバーサイドレンダリング(SSR)を使用して、要素が初期 HTML に存在するようにする。
3. リソース読み込み時間を削減(目標: 約 40%)
リソースをより小さくするか、より速く配信する。
- 修正: 最新の形式(WebP、AVIF)とレスポンシブ画像(
srcset)を使用。 - 修正: CDN から配信。
- 修正:
Cache-Controlヘッダーを設定。 - 修正: LCP が Web フォントによってブロックされているテキストの場合、
font-display: swapを使用。
4. TTFB を削減(目標: 約 40%)
HTML ドキュメント自体の到着に時間がかかっています。
- 修正: リダイレクトを最小化し、サーバーレスポンス時間を最適化。
- 修正: HTML をエッジ(CDN)でキャッシュ。
- 修正: ページが戻る/進むキャッシュ(bfcache)の対象になることを確認。
修正の検証とエミュレーション
- 検証: トレースを再実行(
performance_start_traceをreload: trueで実行)し、新しいサブパーツの内訳と比較。ボトルネックが縮小するはずです。 - エミュレーション: ラボの測定値は実際の体験と異なります。制約下でテストするために
emulateを使用。emulateをnetworkConditions: "Fast 3G"およびcpuThrottlingRate: 4で実行。- これにより、遅いネットワーク/デバイスでのみ表示される問題が浮き彫りになります。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- chromedevtools
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/chromedevtools/chrome-devtools-mcp / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。