STATUS IS UPウェブサイト最適化ウィキ
24高速化
パフォーマンスと配信 / 高速化

Critical CSS:効果的に使う時と回帰を避ける方法

計測で改善が確認できる場合に限り、初期ビューポート用の小さくテスト済みのスタイルのみを使用し、すべての画面と状態に対して保守可能な完全なスタイル経路を維持する。

Critical CSS:効果的に使う時と回帰を避ける方法 — ビジュアルガイド
読む
8 分
出典
6
再検証
2027-03-27
レビュー済み
ウェブパフォーマンスおよびリリースエンジニアリング レビュアー
短い答え

まず決断から始める。

クリティカルCSSは、訪問者がスクロールする前に必要な最小限のスタイル集合です。パーサー生成のスタイルシートは、ブラウザがCSS Object Model(CSSOM)をダウンロードして構築する間に初回ペイントを遅らせることがあります。抽出したセットをドキュメントの head にインライン化すると、そのスタイルシート待ちを解消でき、残りは後で読み込めます。レンダーブロッキングなCSSが原因でコールドキャッシュ時の訪問が遅延している場合に使用してください。

デフォルトで使わないでください。インラインCSSはHTMLを肥大化させ、後続ページでキャッシュされたスタイルシートの再利用を失います。視覚的に再スタイルする(フラッシュ)か、レスポンシブ、認証、ローカライズ、同意、エラーなどの状態を見落とす可能性があります。まずはCSSの削減と分割を行い、代表的なビューポートと状態で小さなセットをテストしてください。SIUは主要なパスが壊れる前にプレフライトチェックを実施する、可逆的なリリース変更としてこの手法を扱います。

ビジュアルガイド

作業をシステムとして見る。

個別の戦術に取り掛かる前に、この記事の意思決定をこのマップで結び付けてください。

SIU高速化
01クリティカルCSSが解くべき問題かを判断する
02初期ビューポートをテストマトリクスとして定義する
03ソース・オブ・トゥルースから小さなセットを抽出する
04残りのCSSを安全に読み込み、ポリシー制約を尊重する
01

クリティカルCSSが解くべき問題かを判断する

監査ラベルではなく証拠から始めてください。優先ページのコールドキャッシュ読み込みを代表的なモバイルとデスクトッププロファイルで計測します。ウォーターフォールとトレースを確認してください:スタイルシートが初回コンテンツを遅らせており、その影響が十分に重要ですか?DevToolsのCoverageはあるセッションで使われたCSSを示すだけで、すべてのルートや状態を表すわけではありません。

まずはメンテナンス負荷が低い作業を試してください:未使用ルールの削除、出力の最小化と圧縮、ルートごとのCSSを必要な箇所でのみ読み込むこと、そして平易なCSSの@import連鎖を避けること。web.devは抽出と遅延を高度な技術と呼んでいます。

良い候補

計測で初回描画の遅延がCSSに結び付くこと、コールド訪問が重要であること、そして初期レイアウトを維持できること。

不適切な候補

サーバー遅延、画像、フォント、JavaScript、あるいは既に小さなスタイルシートがボトルネックである場合、インラインCSSは効果が薄いでしょう。

02

初期ビューポートをテストマトリクスとして定義する

初期ビューポート(いわゆる above the fold)は、スクロール前に訪問者が目にする領域です。普遍的な高さはなく、デバイス、ズーム、言語、クッキー、コンテンツのバリアントにより変わります。1つのデスクトップスクリーンショットでは電話端末や翻訳された見出しを見落とします。

名前付きプロファイルを使ってください。狭いレイアウトと広いレイアウト、主要なブレークポイント、ログイン状態の違い、ページ上部に現れる同意バナー、プロモーション、メンテナンス告知、検証エラーなどを含めます。

状態インベントリ

テンプレート、ビューポート、ロケール、認証、同意、ページ上部のバリアントを記録して、セットを生成・テストします。

インタラクション境界

素早いスクロール、メニュー、フォームフォーカスをテストしてください。遅延されたルールのコントロールがフルCSS適用前に現れるなら安全ではありません。

03

ソース・オブ・トゥルースから小さなセットを抽出する

本番ビルドからクリティカルCSSを生成してください。抽出はビューポートで使われたルールを特定できますが、条件付きルール、ダイナミックなルール、トランジションはレビューが必要です。コンポーネントやマークアップが進化するので、二重に手でデザインシステムをコピーしてテンプレートに置くべきではありません。

出力は生成・バージョン管理され、ソースのCSSが権威であり続けるようにします。最初に必要な状態のルールだけをインライン化してください。大きなインラインブロックはHTMLを遅くし、外部CSSのキャッシュから再利用できなくなります。改善を判断する前にコールドとウォームのナビゲーションを比較してください。

重複予算

圧縮されたインラインバイト数、残りのスタイルシートバイト数、重複ルールを追跡します。ブロッキングリクエストが一つ減っても必ずしも純増利ではありません。

ビルドのガードレール

抽出が空、インラインサイズ予算を超過、あるいはレビュー済み基準から予期せず変化したときにビルドでフラグを立てます。

04

残りのCSSを安全に読み込み、ポリシー制約を尊重する

残りのスタイルシートは、下位コンテンツや後続の状態が完全に見える前に到着している必要があります。一般的なパターンは、CSSを一旦 preload または style として要求し、読み込み完了後にスタイルシートに切り替える方法で、JavaScriptが無い場合のフォールバックも用意します。preloadはリソースを早く要求しますが、CSSを適用しません。不完全なセットは視覚的な再スタイル(フラッシュ)を引き起こします。

インラインの onload ハンドラを使う前に Content Security Policy(CSP)を確認してください。web.dev はポリシーがインラインonloadを禁止する可能性があると指摘しており、互換性のあるローダーか別の設計を使ってください。JavaScript無効での挙動もテストしてください。メディアクエリ付きのファイルは印刷など正当な条件付きスタイルに役立ちます。問い合わせに一致しないメディアはレンダーブロッキングしませんが、ダウンロードされる場合があります。

No-script(JavaScript無効)パス

JavaScriptを無効にした訪問者でも完全なCSSが提供され、優先ジャーニーを完了できることを検証してください。

優先順位の分離

初回ビューポートで遅れるフォントや画像は別に調査してください。クリティカルCSSはそれらのフェッチ挙動を修正しません。

05

視覚的・機能的・キャッシュ回帰をテストする

命名された各ビューポートとページ上部の状態で視覚比較を行ってください。無スタイルのテキスト、重なり、ナビゲーションの隠れ、フォーカス指標の欠落、レイアウトシフト、遅延CSS適用時のスナップをチェックします。キーボード操作、タッチ経路、エラー、素早いスクロールを含めて操作を確認してください。遅延されたルールでコントロールが使えなくなるなら、そのルールはクリティカルパスに含めるか、デザインを変更する必要があります。

コールドとウォームの両方でテストしてください。コールドテストはCSS待ちを取り除いたときの描画改善を示し、ウォームテストは繰り返しのインラインバイトコストを示します。キャッシュされた古いHTMLとデプロイ後の再訪も確認してください。互換性のある資産を保持し、キャッシュされたHTMLがそれらを要求する可能性があるため、フィンガープリント済みスタイルシートURLを上書きしないでください。

結果を計測する

まず first content と main visible content を比較し、トレースを使って得られた改善または回帰を説明します。

アクセシビリティレビュー

フォーカス、コントラスト、モーションの嗜好、ズーム、読みやすい順序を含めてください。表示が速くなっただけでは、インターフェースがアクセシブルであるとは言えません。

06

可逆的な配信機能として運用する

パイプラインに担当者を割り当て、入力、アーティファクト、テンプレート、テストプロファイル、インラインサイズ上限を文書化してください。CSS、マークアップ、コンポーネントライブラリ、機能フラグ、あるいはページ上部に影響するサードパーティが変更されるたびにテストを実行します。Coverageはレビューを導くツールですが、1回の記録であるルールがあらゆる場所で安全であると証明することはできません。

可能なら可逆的な設定でリリースしてください。既知の良好なスタイルシートパス、アーティファクトのバージョン、ビルド識別子、復旧方法を記録します。回帰が現れたら、まず互換性のある配信を復元し、その後で見落とした状態を診断してください。SIUはこのワークフローを使って主要パスの安定化を行い、顧客影響が広がる前に対処します。

変更トリガー

新しいバナー、同意フロー、ロケール、ブレークポイント、アカウントレイアウトは再生成とテストを必要とします。

ロールバック運用

互換性のある生成にテンプレートと配信設定を戻してください。公開済みのイミュータブルURLを参照する古いドキュメントを壊さないこと。

実行 / 検証

実践的なTo‑Doガイド。

  1. 01

    優先ルートのベースラインを取る

    重要なモバイルとデスクトッププロファイルでコールドとウォームの読み込みを記録する。

    検証: 記録にはURLまたはテンプレート、ブラウザプロファイル、キャッシュ状態、CSSボトルネックが含まれている。
  2. 02

    まず通常のCSSを削減する

    未使用ルールを削除し、出力を最小化・圧縮し、ルートごとのCSSに分割し、回避可能な@import連鎖を置き換える。

    検証: 低リスクの変更後に再計測して結果を確認する。
  3. 03

    抽出マトリクスを定義する

    関連するビューポートとページ上部のロケール、認証、同意、バナー、検証状態を一覧にする。

    検証: 各アーティファクトに文書化されたプロファイルと状態がある。
  4. 04

    本番CSSから生成する

    リリース済みのスタイルシートとバージョン設定から抽出を実行し、出力を取得する。

    検証: クリーンビルドで手動テンプレート編集なしにインラインアーティファクトが再現される。
  5. 05

    重複に予算を設ける

    圧縮されたインラインCSSのレビュー閾値を設定し、外部ファイルとの重複を確認する。

    検証: リリースレポートがHTML、残りのCSS、コールドとウォームの結果をベースラインと比較している。
  6. 06

    遅延読み込みとフォールバックを実証する

    完全なCSSが適用されることを検証し、次にJavaScript無効でのフォールバックとContent Security Policyの挙動をテストする。

    検証: テストしたすべてのパスでポリシーエラーなく使用可能なスタイリングがある。
  7. 07

    視覚と操作の回帰テストを実行する

    初期表示と確定後のレンダリングを比較し、フォーカス、ズーム、スクロール、メニュー、フォーム、エラーを操作する。

    検証: ページ上部のどの状態も、完全なCSS到着前に無スタイル、アクセス不能、重なり、または使用不可になっていない。
  8. 08

    キャッシュとデプロイ互換性を確認する

    リリースに対して以前のキャッシュ済みHTMLをテストし、参照された資産を保持する。

    検証: 現在と以前のドキュメントが404や視覚破損なしでスタイルを読み込む。
  9. 09

    所有とロールバックを文書化する

    担当者、アーティファクトバージョン、テスト証拠、復旧手順、レビューのトリガーを記録する。

    検証: 非本番ドリルで、公開済みのイミュータブルURLを変更せずに既知の良好なCSS配信を復元できる。
議論のテーマ

トレードオフを比較し、非公開データは共有しないでください。

これらのプロンプトをチームやサイトオーナーコミュニティで使ってください。手法や学びは共有して構いませんが、認証情報や顧客データ、非公開インフラの詳細を貼り付けないでください。

  1. 01

    あなたのサイトで、単一のデスクトップテストでは最も見落とされやすいページ上部の状態はどれですか?それを抽出マトリクスにどう追加しますか?

  2. 02

    コールドでの初回訪問の改善を、帰ってくる訪問者が負う繰り返しHTMLのコストとどう比較しますか?

  3. 03

    初期ビューポートを予期せず変えるリリース変更を最も早く検出するための軽量なプレフライトは何ですか?

人気/信頼できる資料

出典資料を開く。

web.devExtract critical CSS ↗

クリティカルCSSを定義し、なぜCSSがレンダリングをブロックするか、インラインサイズ、キャッシュ、ビューポート、抽出のトレードオフを説明する資料。

レビュー日 2026-09-27
web.devDefer non-critical CSS ↗

遅延パターンの実装例、Coverageワークフロー、no-scriptフォールバック、Content Security Policyの制約を示す解説。

レビュー日 2026-09-27
web.devOptimize resource loading ↗

レンダーブロッキング、CSS分割、未使用CSS、@importのリクエスト連鎖、インラインキャッシュのトレードオフ、保守性に関する議論を含むリソース。

レビュー日 2026-09-27
MDN Web DocsCSS performance optimization ↗

メディアクエリ付きスタイルシート、ミニファイ、圧縮、レスポンシブプリロードに関するブラウザ寄りのCSSガイダンス。

レビュー日 2026-09-27
Chrome for DevelopersCoverage: Find unused JavaScript and CSS ↗

セッション記録の方法、使用・未使用CSSバイトの検査、Coverageパネルの解釈方法を説明する資料。

レビュー日 2026-09-27
WHATWG HTML StandardLink type stylesheet ↗

パーサー生成のスタイルシートリンクが暗黙的に潜在的なレンダーブロッキングになり得ることを明示する仕様的な注意。

レビュー日 2026-09-27

出典ポリシー この記事は公開基準と第一者のブラウザおよびウェブプラットフォーム文書を利用しています。クリティカルCSSを計測に基づく、コンテキスト依存の配信技術として提示し、普遍的な性能主張は避けます。リソースは読者の参照用であり、内部リンクとSIDリンクは証拠ではなくナビゲーションです。

簡単な補足

よくある質問

すべてのサイトでクリティカルCSSをインライン化すべきですか?

いいえ。これはメンテナンスとキャッシュのコストを伴う高度な手法です。まずはCSSが原因の初回描画のボトルネックであることを計測し、通常のCSSを削減してから検討してください。多くのサイトでは、メインスタイルシートを小さくし、ルート別に分割してキャッシュしやすくする方が先です。

どれくらいの量のCSSをクリティカルにすべきですか?

ドキュメント化したビューポートと状態マトリクスで初期の使える状態に必要なルールのみです。普遍的なバイト数やフォールド高さはありません。プロジェクト固有のインラインサイズ予算を設定し、コールドとウォームの結果を比較し、遅延CSSが到着する前に不要なルールを削除してください。

preloadだけでスタイルシートを非レンダーブロッキングにできますか?

いいえ。preloadは早期にフェッチをスケジュールしますが、CSSを適用しません。従来のリンクされたスタイルシートは依然として潜在的にレンダーブロッキングです。preloadからスタイルシートに切り替える設計はフォールバック、ポリシー、および視覚的な再スタイルの検証が必要です。

Status Is UP Editorial Team · Uptime Enablement 編集者

レビュー: ウェブパフォーマンスおよびリリースエンジニアリング レビュアー。公開 2026-09-27、更新 2026-09-30。