ブラウザの仕組み — 設計図を受け取って画面を組み立てる

中級の解説は準備中のため、中級の内容を表示しています。

概要 — まず全体をつかむ

初級ではブラウザを「大工さん」と捉えました。中級では、設計図がピクセルになるまでの工程と、ブラウザのセキュリティ境界を見ます。

詳細 — 1段階ずつ追う

これは何をする係?

ブラウザは複数のエンジンの集合体です。

  • レンダリングエンジン — HTML/CSSを解析して画面を描く
  • JSエンジン — JavaScriptを実行する(DOMを操作する)
  • ネットワーク/ストレージ — 通信、Cookie・キャッシュ・localStorage の管理
  • サンドボックス — タブやサイトを隔離し、悪意あるコードの影響を閉じ込める

登場人物メモ:

  • ※1 DOM/CSSOM — HTML/CSSから作られる木構造
  • ※2 レンダーツリー — 実際に描くべき要素の木(表示されない要素は除く)

仕事の流れ(描画パイプライン)

  1. パース — HTMLから DOM、CSSから CSSOM を作る
  2. レンダーツリー — 両者を合わせ、描くべきものを決める
  3. レイアウト — 各要素の位置・大きさを計算する
  4. ペイント/合成 — ピクセルに変換し、レイヤーを重ねて表示する
  5. JSが DOM を書き換えると、必要な範囲で リフロー(再計算)/リペイント(再描画) が走る
  6. JS実行と描画は 単一のメインスレッド を奪い合う(イベントループ)。重いJSが走っている間は描画も入力も止まる=画面が固まる
アニメーション『イベントループ(単一メインスレッド)』を開く
単一メインスレッドとイベントループタスクキュー(順番待ちの行列)① クリック② タイマー③ 再描画(paint)④ 入力(キー)先に入ったものから 1つずつ③④ は処理されず待ち先頭を1つ渡すイベントループ空いたら次を取り出すメインスレッド(1本だけ)重いJSタスク実行中・長く居座る終わるまで離さない1本しかないのでこれが終わるまで次へ進めない再描画が止まる入力に反応しない画面が固まる描画も入力も反応しない(フリーズ)JSと描画は同じ1本のスレッドを奪い合う

ブラウザのセキュリティ境界

  • 同一オリジンポリシー(SOP) — 別オリジンのデータに勝手に触れないよう制限する基本ルール
  • CORS — 正当に跨ぐときの、サーバ側の許可の仕組み
  • CSP(Content-Security-Policy) — SOP/CORSと並ぶ境界。読み込んでよいスクリプトの出所を制限し、不正なスクリプト実行を防ぐ
  • 保存領域 — Cookie(サーバに自動送信)/localStorage(手元だけ)の使い分け
  • 開発者ツール — 描画・通信・パフォーマンスを観察できる

⚠️ うまくいかないとき

  • リフロー多発で重い — レイアウトを何度も再計算させている(まとめて変更する)
  • JSのブロッキング — 重いJSが描画を止める(分割・遅延読み込み)
  • CORSエラー — サーバの許可設定が無く、別オリジンAPIが弾かれる
  • CLS(表示中のガタつき) — 画像や広告の領域を先に確保していない

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. 別オリジンのAPIをJSから呼ぶと既定でブロックされ、サーバ側の許可設定が要る仕組みは?

2. HTMLを解析してできる「要素の木構造」を何と呼ぶ?

3. HTMLからDOMができるように、CSSを解析してできる木構造を何と呼ぶ?

4. 「読み込んでよいスクリプトの出所を制限し、不正なスクリプト実行を防ぐ」ブラウザの境界はどれ?

5. Cookieとlocalstorageの違いとして正しいのはどれ?

6. 表示の途中で画像や広告が入り込み、レイアウトがガタッとずれる(領域を先に確保していない)現象を何という?

7. JSの実行と画面の描画が奪い合う、ブラウザの主となる1本の実行の流れを何と呼ぶ?

8. JSがDOMを書き換えたとき、各要素の位置や大きさを計算し直す再計算を何と呼ぶ?