web100tips’s blog

webエンジニアが知っておくべきこと100を1日1投稿します

Webブラウザのレンダリングの流れ

 

Webブラウザレンダリングの流れを完全理解

この記事では、Webページがどのように表示されるか、ブラウザ内部で行われているレンダリングの流れを、実践的かつ網羅的に解説します。

1. レンダリングとは?

レンダリングとは、HTML・CSSJavaScriptといったコードを、ユーザーの画面上に“見える”形に変換するプロセスのことです。ブラウザが「コード → 画面表示」へと処理する流れを正確に理解することで、パフォーマンス改善やデバッグにも役立ちます。

2. レンダリングの全体フロー

  1. HTMLの読み込みとパース(DOMツリーの構築)
  2. CSSの読み込みとパース(CSSOMツリーの構築)
  3. DOMとCSSOMを統合(レンダーツリーの構築)
  4. レイアウト(リフロー)
  5. ペイント(再描画)
  6. コンポジット(画面表示)

3. DOMとCSSOMの構築

HTMLが読み込まれると、ブラウザは順番にタグを読み取り、DOM(Document Object Model)ツリーを構築します。同時にCSSもパースされ、CSSOM(CSS Object Model)ツリーが作られます。

4. レンダーツリーの構築

DOMとCSSOMを統合して、実際に表示するためのレンダーツリー(Render Tree)を作ります。たとえば、非表示の要素(display: none など)はここで除外されます。

5. レイアウト(Reflow)

レンダーツリーの各ノードの正確な位置や大きさを計算します。これを「リフロー」と呼び、ページ構造やサイズが変わるたびに再実行されます。

6. ペイント(Paint)

各要素に色やテキスト、画像などを描画します。レイアウトの結果に基づいて、グラフィック的な描写が行われます。

7. コンポジット(Composite)

PaintされたパーツをGPUで最終的に組み合わせて、ユーザーが実際に見る画面を完成させます。

8. JavaScriptとの関係

JavaScriptはDOMやCSSOMを変更することで、レンダリングに影響を与えます。特に同期的なDOM操作(document.write や innerHTML など)は、再パースやリフローを引き起こすため注意が必要です。

9. レンダリング最適化のヒント

  • DOMのサイズを最小限に保つ
  • CSSセレクタはシンプルに
  • アニメーションはtransformやopacityを使う
  • 不要なJavaScriptのDOM操作を避ける
  • 画像やフォントの読み込みに遅延を取り入れる

10. 実際に確認するには?

Chrome DevToolsなどのツールを使うと、パフォーマンスのプロファイリングや、どの段階で遅延が起きているかの確認が可能です。「Performance」タブで、リフローやペイントの回数・時間を確認できます。

まとめ

Webブラウザレンダリングの流れは、単なる読み込みではなく、段階的な処理の積み重ねで成り立っています。フロントエンドエンジニアとして、これらの仕組みを理解しておくことで、より効率的で高速なUIを提供できるようになります。