【入門編】 スクリプトによるパースブロックの挙動 – Webブラウザの仕組み実践ガイド

こんにちは!フロントエンドの現場を渡り歩いているチーフアーキテクトの私です。

Webサイトを作っていて、「あれ?なんだか画面が表示されるまでに変なタイムラグがあるな……」「JavaScriptを読み込ませたら、ページの表示がなんだかモッサリした気がする……」なんて悩んだ経験はありませんか?

大丈夫ですよ、その感覚はめちゃくちゃ鋭いです!実はそれ、Webブラウザの頭の中を覗くことですべて綺麗に解決できちゃうんです。今回は、ブラウザがHTMLを読み込んで画面を描き上げるまでの「裏側のドラマ」と、そこに忍び寄る「スクリプトによるパースブロック」の正体に迫っていきましょう!

—

1. ブラウザは「料理人」、HTMLは「レシピ」

まず、Webブラウザが画面を表示する仕組みを、レストランの厨房に例えてみましょう。

ブラウザという名の優秀な料理人は、サーバーから届いたHTMLという名の「レシピ」を上から順番に読み込んでいきます。
この「レシピを一行ずつ読み解いて、頭の中で料理の組み立て図(DOMツリー)を作る作業」を、専門用語でHTMLパース(解析)と呼びます。

料理人は超特急でレシピを読み進めます。「あ、ここに『見出し』があるな」「ここに『画像』を置くんだな」と、テキパキと頭の中で料理の段取りをつけていくわけです。

ところが、この平和な厨房に、ある「厄介な存在」が突如として現れます。それが、HTMLの中に書かれた `` が置いてあったとします。

ここで、ブラウザ(料理人)はパタッと手を止めてしまうんです。これを技術用語で「パースブロック(解析の停止)」と呼びます。

なぜ、料理人は手を止めてしまうのでしょうか?理由は単純で、「めちゃくちゃ危険だから」です。

JavaScriptには、今まさに料理人が作っている最中のレシピ(HTML)の中身を、書き換えたり、削除したり、全く別のものに変えてしまうという「超能力」があります。
もし料理人がレシピの続きを読み進めている裏で、JavaScriptがそのレシピをビリビリに破り捨てたら大混乱ですよね?

だからブラウザは、
1. 「おい、ちょっと待て!一度HTMLを読むのをストップ!」
2. 「サーバーからJavaScriptのファイルを急いでダウンロードして、実行し終わるまで絶対に動かないぞ!」

という安全第一の判断を下します。この瞬間、ユーザーの画面には何も表示されず、ただ白紙の画面がポツンと取り残されることになるのです。これが、JavaScriptが原因でページの表示が遅くなるメカニズムの正体です。

---

3. 救世主現る! `defer` と `async` のスマートな立ち回り

「じゃあ、JavaScriptを使うと必ず画面の表示が遅くなっちゃうの?困るよ!」と思いますよね。安心してください。現代のブラウザには、このパースブロックを華麗に回避する「2人のスーパーヒーロー」が用意されています。

それが、`




こんにちは、ブラウザの仕組みの世界へようこそ!

このテキストが表示される頃には、スクリプトのせいで画面が固まる心配はありません。


チーフアーキテクトからの実践アドバイス

迷ったら、まずは「メインのスクリプトには `defer` をつけておく」と覚えておけば間違いありません。これだけで、Webサイトの表示スピード(体感速度)がグッと向上し、ユーザーが途中でイライラして離脱してしまう確率をグッと下げることができます。

---

5. まとめ

今回は、ブラウザの裏側で起きているHTMLのパースと、JavaScriptによるブロックの仕組み、そしてそれをスマートに解決する `defer` と `async` の世界を覗いてみました。

  • ブラウザ(料理人)は、HTMLを上から順に読んで(パースして)画面を作る。
  • 普通の `
シェアする
frontendintronationalをフォローする

コメント

タイトルとURLをコピーしました