テーマを変える前後の表示速度を測る|ChromeでLCPとCLSを5回測って中央値を出す
「テーマを変えたら表示が速くなる」と言われても、本当に速くなったのかは測らないと分かりません。この記事では、Chromeを自動で動かしてLCP(最大コンテンツの表示時間)とCLS(レイアウトのずれ)を5回測り、中央値を出す方法を、筆者のサイト5ページで実行した結果とあわせて紹介します。テーマを変える前後の比較に、そのまま使えます。
(確認:2026年10月20日に、筆者のPC(Windows 11・Chrome・Python 3.13・Playwright)で実行。通信の制限(スロットリング)は掛けていません。読み取りだけで、サイトの設定は変えていません)
指標の意味と、基準(web.dev)
Googleのweb.devの説明(確認日:2026年10月20日)では、次のとおりです。
- LCP:ページの読み込みが始まってから、最大の要素が表示されるまで。2.5秒以内が良好の目安
- CLS:表示中にレイアウトがずれた量の合計。0.1以下が良好の目安(0.25より大きいと低速の扱い)
- INP:操作への反応の速さ。200ミリ秒以下が良好の目安(今回は測っていません)
web.devには、ほとんどのユーザーで目標を達成するには、モバイルとデスクトップに分けて75パーセンタイルで測るのが適切とも書かれています。つまり、ユーザーの実際のデータ(フィールドデータ)で評価するものです。この記事の方法は手元で1台のPCから測る「ラボデータ」なので、実際のユーザーの数字とは一致しません。テーマの変更前後を同じ条件で比べる用途に向いています。
コード(Playwrightで5回測る)
import statistics
from playwright.sync_api import sync_playwright
JS = """
() => new Promise(res => {
let lcp = 0, cls = 0;
new PerformanceObserver(l => { for (const e of l.getEntries()) lcp = e.startTime; })
.observe({type: 'largest-contentful-paint', buffered: true});
new PerformanceObserver(l => { for (const e of l.getEntries()) if (!e.hadRecentInput) cls += e.value; })
.observe({type: 'layout-shift', buffered: true});
const done = () => setTimeout(() => {
const n = performance.getEntriesByType('navigation')[0];
res({lcp: Math.round(lcp), cls: Math.round(cls * 1000) / 1000, ttfb: Math.round(n.responseStart)});
}, 2500);
if (document.readyState === 'complete') done(); else addEventListener('load', done);
})
"""
def measure(url, runs=5):
rows = []
with sync_playwright() as p:
b = p.chromium.launch(channel="chrome", headless=True)
for _ in range(runs):
ctx = b.new_context(viewport={"width": 1366, "height": 800}) # 毎回キャッシュなし
pg = ctx.new_page(); pg.goto(url, wait_until="load"); rows.append(pg.evaluate(JS)); ctx.close()
b.close()
return {k: statistics.median(r[k] for r in rows) for k in ("lcp", "cls", "ttfb")}
毎回、新しいブラウザ環境(キャッシュなし)で開き、読み込み完了の2.5秒後に値を取っています。5回の中央値を使うのは、1回だけだと通信の揺らぎで外れ値が出るためです。
筆者の5ページの結果(中央値)
| ページ | LCP | CLS | TTFB | 読み込み完了 | 転送量 |
|---|---|---|---|---|---|
| サイトAのトップ | 448ミリ秒 | 0.001 | 45ミリ秒 | 1,198ミリ秒 | 約3,255KB |
| サイトAの記事 | 364ミリ秒 | 0.044 | 45ミリ秒 | 1,136ミリ秒 | 約2,631KB |
| サイトBのトップ | 480ミリ秒 | 0 | 215ミリ秒 | 1,588ミリ秒 | 約886KB |
| サイトCのトップ | 568ミリ秒 | 0.002 | 302ミリ秒 | 1,425ミリ秒 | 約1,106KB |
| サイトDのトップ | 608ミリ秒 | 0.002 | 327ミリ秒 | 1,599ミリ秒 | 約686KB |
(転送量は、CSS・JavaScript・画像などの追加のファイルの合計で、ページ本体のHTMLは含みません。コードにはTTFBとLCPとCLSだけを載せています)
5ページとも、LCPは0.4〜0.6秒、CLSは0.044以下で、web.devの目安(LCP 2.5秒、CLS 0.1)をラボの環境では大きく下回りました。ただしこれは通信の制限なしで、高速なPCから測った値なので、スマホの低速回線では数字が悪くなります。
面白いのは、転送量が一番多いサイトAが、TTFBもLCPも一番速かった点です。転送量(約3,255KB)が多くても、最初のバイトが早く返り、最大の要素が早く出れば、LCPは速くなります。TTFBの測り方はcurlでTTFBを10回測る方法にあります。サイトごとの条件(テーマ・プラグイン・キャッシュ・画像)は違うため、この表から「どのテーマが速いか」は言えません。
テーマの比較に使う時の注意
- 同じページ、同じ時間帯、同じPCで測る(テーマだけを変える)
- 5回以上の中央値で比べる。1回の差は誤差の範囲に入ることが多い
- モバイル相当の条件でも測る(Chromeの開発者ツールでスロットリングをかける)。今回は掛けていません
- 実際のユーザーの数字は、Google Search Consoleの「ウェブに関する主な指標」で見る
この記事で確かめていないこと
- INP(操作への反応)
- モバイルや低速回線での数値
- テーマを実際に変えた前後の差(今回は変更していません)
テーマを変える前の件数や構成の記録の取り方は、別の記事「テーマを変える前に今のサイトの状態を記録する」にまとめています。有料テーマの比較はXwriteの料金プランの選び方にあります。
まとめ
- PlaywrightでChromeを動かすと、LCP・CLS・TTFBを5回測って中央値を出せる
- 筆者の5ページは、LCP 0.36〜0.61秒・CLS 0.044以下で、web.devの目安(2.5秒・0.1)を下回った(通信制限なしのラボの値)
- 転送量が多くても、最初のバイトと最大要素が早ければLCPは速い
- テーマの前後比較は、同じ条件・5回以上の中央値で。実ユーザーの数字はSearch Consoleで見る
本記事は測定方法の説明であり、特定のテーマや製品を勧めるものではありません。


