初級ではブラウザを「大工さん」と捉えました。中級では、設計図がピクセルになるまでの工程と、ブラウザのセキュリティ境界を見ます。
中級の解説は準備中のため、中級の内容を表示しています。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
ブラウザは複数のエンジンの集合体です。
- レンダリングエンジン — HTML/CSSを解析して画面を描く
- JSエンジン — JavaScriptを実行する(DOMを操作する)
- ネットワーク/ストレージ — 通信、Cookie・キャッシュ・localStorage の管理
- サンドボックス — タブやサイトを隔離し、悪意あるコードの影響を閉じ込める
登場人物メモ:
- ※1 DOM/CSSOM — HTML/CSSから作られる木構造
- ※2 レンダーツリー — 実際に描くべき要素の木(表示されない要素は除く)
仕事の流れ(描画パイプライン)
- パース — HTMLから DOM、CSSから CSSOM を作る
- レンダーツリー — 両者を合わせ、描くべきものを決める
- レイアウト — 各要素の位置・大きさを計算する
- ペイント/合成 — ピクセルに変換し、レイヤーを重ねて表示する
- JSが DOM を書き換えると、必要な範囲で リフロー(再計算)/リペイント(再描画) が走る
- JS実行と描画は 単一のメインスレッド を奪い合う(イベントループ)。重いJSが走っている間は描画も入力も止まる=画面が固まる
アニメーション『イベントループ(単一メインスレッド)』を開く
ブラウザのセキュリティ境界
- 同一オリジンポリシー(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を書き換えたとき、各要素の位置や大きさを計算し直す再計算を何と呼ぶ?