0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

35日でフロントエンドの基礎を完全に理解する #1 - ブラウザはどう画面を作るか

0
Last updated at Posted at 2026-10-02

はじめに

新しいシリーズを始めます。テーマはフロントエンドです。Vue や React、TypeScript、ビルドツール。名前は聞くけれど、中で何が起きているのかは正直よく分からない。そういう状態から抜け出して、モダンなフロントエンドのコードを、根拠を持って読んで直せるところまで、35日かけて一段ずつ上っていきます。

このシリーズは、プログラミングやWebそのものが初めての人、HTML・CSS・JavaScript にまだ不慣れな人も置いていかないように書きます。用語は初めて出てきたところで噛み砕き、前提を飛ばしません。バックエンド編(Go)とは独立して読めます。

この回はブラウザさえあれば始められます。Node.js などの準備はまだ要りません(後の回で Vite というツールを入れます)。メモ帳のようなテキストエディタと、Chrome などのブラウザだけ用意してください。

このシリーズで身につくこと

35本を終えると、次のことができるようになります。

  • HTML・CSS・JavaScript が画面の上で何を担っているかを、仕組みから説明できる
  • TypeScript で型を付けながら、壊れにくいコードを書ける
  • Vue でコンポーネントに分けて画面を組み立て、状態の管理やAPI連携ができる
  • テスト・リンタ・ビルドといった、実務のコードベースを支える道具の役割を説明できる
  • 新しいコードに出会ったとき「たぶんこうなっている」と見当をつけて読み解ける

目指すのは、チュートリアルをなぞれることではありません。なぜそう動くのかを自分の言葉で説明できる状態です。

なぜ、AIの時代に基礎から学ぶのか

ここで掲げる考えは、姉妹シリーズのバックエンド編(「42日でバックエンドエンジニアの基礎を完全に理解する」)とまったく同じです。向き合う技術がフロントエンドに変わっても、根っこは1ミリも変わりません。あちらを読んだ方は読み飛ばして構いませんが、初めての方のために一度だけ繰り返します。

今はAIに頼めば、それらしく動くコードがすぐ出てきます。だからこそ基礎が要ります。AIが出したコードは「動く」ように見えても、なぜそう書くのか、どこで壊れるのかは、読める人にしか分かりません。基礎がある人はAIを最強の道具にできますが、基礎がない人は出てきたコードが正しいか判断できず、事故に気づけません。このシリーズは、その判断力の土台を作ります。

マーカーの意味はこうです。学習の濃淡をつけるために使います。

  • 🔴 覚える:手が覚えるまで繰り返す、毎日使う土台
  • 🟡 理解する:丸暗記ではなく、理屈を説明できるようにする
  • ⚪ 今は流す:存在だけ知っておけば十分。必要になったら戻る

迷ったら🔴だけ確実にしてください。それだけでも前に進めます。


🔴 ブラウザは「設計図」から画面を組み立てている

私たちが見ているWebページは、最初から画像として届いているわけではありません。ブラウザは 設計図を受け取って、その場で画面を組み立てて います。

大工さんを思い浮かべてください。現場に届くのは完成した家ではなく、設計図です。大工さんは設計図を読み、部屋の位置を決め(レイアウト)、壁を塗って家具を置きます(描画)。ブラウザもこれと同じことを、ページを開くたびに一瞬でやっています。

その設計図が HTML です。そして、設計図を読んで組み立てる流れはこうなっています。

ブラウザが画面を作る流れの図。サーバーから届いたHTMLをブラウザがパース(解析)してDOMという木構造に変換し、レイアウト(どこに何を置くか計算)→ペイント(実際に色を塗って描く)を経て画面に表示する。JavaScriptはこのDOMを書き換えることで画面を動的に変える

順番に見ます。

  1. HTMLが届く:サーバーから、文字で書かれたHTMLが送られてきます
  2. パース(解析)する:ブラウザがHTMLを読んで、意味を理解します
  3. DOMを作る:HTMLを「木(ツリー)構造」に組み立てます。これがDOMです(後で詳しく説明します)
  4. レイアウト:どの要素をどこに、どんな大きさで置くかを計算します
  5. ペイント(描画):実際に色をつけて画面に描きます

ここまでが、ページを開いた瞬間に起きていることです。

🔴 DOMとは「HTMLを木にしたもの」

DOM(Document Object Model)は、このシリーズで何度も出てくる最重要語です。最初にしっかり掴んでおきます。

DOMとは、ブラウザがHTMLを読み込んで、プログラムから触れる「木構造」に変換したものです。たとえば次のHTMLは、

<body>
  <h1>こんにちは</h1>
  <p>これは<strong>最初</strong>のページです</p>
</body>

ブラウザの中では、こういう親子関係の木になります。

body
├── h1 「こんにちは」
└── p
    ├── テキスト「これは」
    ├── strong 「最初」
    └── テキスト「のページです」

body の下に h1 と p がぶら下がり、p の下にさらに文字や strong がぶら下がる。この入れ子が「木」です。そしてここが大事な点です。JavaScript がWebページを動かせるのは、このDOMという木を後から書き換えられるからです。

ボタンを押したら文字が変わる、新しい項目がリストに追加される。あれは全部、JavaScript が DOM の木を操作した結果です。HTMLはあくまで「最初の設計図」で、動きがつくのはDOMを触るからだ、と覚えてください。

HTML・CSS・JavaScript の役割分担も、ここで整理しておきます。

言語 役割 家でいうと
HTML 構造(何がどこにあるか) 間取り・骨組み
CSS 見た目(色・大きさ・配置) 内装・塗装
JavaScript 振る舞い(操作への反応) 照明やドアの自動化

🟡 イベントループ:JavaScript は基本「1人で順番に」こなす

もう1つ、最初に知っておくと後がぐっと楽になる仕組みがあります。イベントループです。

JavaScript は、基本的に 1本の処理の流れ(シングルスレッド) で動きます。料理人が1人しかいないキッチンだと思ってください。注文(クリックされた、データが届いた、など)が来たら、その料理人が1つずつ順番にさばいていきます。この「来た順に1つずつ処理する」仕組みがイベントループです。

ここから、大事な結果が導けます。重たい処理を1つ始めると、終わるまで他が何もできなくなるのです。料理人が1つの難しい料理に10秒かかりきりになれば、その間ほかの注文は待たされ、画面はクリックしても反応しなくなります(固まる)。

だからフロントエンドでは、時間のかかる処理(サーバーとの通信など)を「待っている間も他をさばける」書き方にします。その書き方が非同期処理で、#3 でたっぷり扱います。ここでは「JavaScript は1人で順番にこなすから、重い処理で画面が固まることがある」とだけ掴んでおけば十分です。


【手を動かす①】DOMの木を自分の目で見る

実際にブラウザの中のDOMを覗いてみます。次の内容を index.html という名前で保存してください(文字コードはUTF-8で)。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <title>はじめてのページ</title>
  </head>
  <body>
    <h1 id="greeting">こんにちは</h1>
    <p>これは<strong>最初</strong>のページです</p>
  </body>
</html>

保存したファイルをブラウザにドラッグ&ドロップで開くと、「こんにちは」と表示されます。ここで F12キー(または右クリック →「検証」)を押して、開発者ツール(DevTools)を開いてください。

「Elements」(要素)タブを見ると、さきほどのHTMLが木構造として表示されています。body を開くと h1 と p が入れ子になっているのが見えるはずです。これがDOMです。 いま画面に見えているものが、この木から組み立てられていることを確認してください。

【手を動かす②】JavaScript で画面を書き換える

次に、DOMを書き換えて画面が変わることを体験します。DevTools の「Console」(コンソール)タブを開いて、次の1行を入力して Enter キーを押してください。

document.querySelector("#greeting").textContent = "書き換わりました";

画面の「こんにちは」が「書き換わりました」に変わったはずです。何が起きたかを分解します。

  • document は、いま開いているページのDOM全体を指します
  • querySelector("#greeting") は、id="greeting" の要素(さきほどの h1)を木の中から探し出します
  • .textContent = "..." で、その要素の文字を書き換えます

HTMLファイル自体は1文字も変えていません。変えたのはブラウザの中のDOMです。JavaScript がDOMを触ると画面が変わる。 これがフロントエンドのいちばんの土台で、Vue のようなフレームワークも、突き詰めればこの「DOMの書き換え」を賢く自動でやってくれる道具です。


確認テスト

知識問題

Q1. ブラウザが、サーバーから届いたHTMLを画面に表示するまでの流れを、途中に出てくる「DOM」という言葉を使って説明してください。

解答を見る

ブラウザはまずHTMLを受け取り、それを解析(パース)して DOM という木構造 に組み立てます。次に、どの要素をどこにどんな大きさで置くかを計算し(レイアウト)、実際に色をつけて描画します(ペイント)。その結果が画面に表示されます。ポイントは、HTMLはそのまま表示されるのではなく、一度DOMという「プログラムから触れる木」に変換されてから画面になる、という点です。

Q2. DOMとは何ですか。HTMLとの違いが分かるように説明してください。

解答を見る

DOMは、ブラウザがHTMLを読み込んで作る、木構造のデータです。HTMLは文字で書かれた「最初の設計図」で、ファイルに書いた時点から変わりません。一方DOMは、ブラウザの中にある「組み立て後の状態」で、JavaScript から後から書き換えられます。ボタンを押すと表示が変わるといった動きは、JavaScript がこのDOMを操作して実現しています。HTML=静的な設計図、DOM=触って変えられる実物、と捉えると違いがはっきりします。

Q3. JavaScript は基本的に1本の流れ(シングルスレッド)で動きます。このことから、重たい処理を始めると画面にどんなことが起きますか。理由とあわせて説明してください。

解答を見る

重たい処理が終わるまで、画面が固まって操作に反応しなくなります。JavaScript は料理人が1人のキッチンのように、来たものを1つずつ順番に処理します(イベントループ)。1つの重い処理にかかりきりになると、その間はクリックなど他のイベントを処理できないからです。だからフロントエンドでは、時間のかかる処理を「待っている間も他をさばける」非同期の書き方にします(#3 で扱います)。

Q4. HTML・CSS・JavaScript は、それぞれ画面の何を担当していますか。1つずつ説明してください。

解答を見る

HTML は構造(何がどこにあるか。見出し・段落・ボタンといった中身と骨組み)、CSS は見た目(色・大きさ・配置・余白などのスタイル)、JavaScript は振る舞い(クリックされたら表示を変える、といった操作への反応)を担当します。家でいえば、HTMLが間取り、CSSが内装、JavaScriptが自動照明のような動きにあたります。役割が分かれているので、見た目だけ直したいならCSS、動きを足したいならJavaScript、と触る場所を選べます。

実技問題

Q5. 次のHTMLがあります。ページを開いたあと、コンソールで JavaScript を使って、<p id="msg"> の文字を「完了しました」に書き換えるコードを書いてください。

<p id="msg">処理中</p>
解答を見る
document.querySelector("#msg").textContent = "完了しました";

ポイントは3つです。document でページのDOM全体を指し、querySelector("#msg") で id="msg" の要素を木の中から1つ探し出し、.textContent にその表示文字を入れます。# は「このidの要素」という意味の指定方法です(CSSのセレクタと同じ書き方で、#4以降やVueでも繰り返し出てきます)。HTMLファイルは変えず、ブラウザの中のDOMだけを書き換えているので、画面の文字だけが変わります。

まとめ

  • ブラウザはHTML(設計図)を受け取り、DOMという木構造に組み立ててから、レイアウト・描画を経て画面にする
  • DOMはJavaScriptから書き換えられる。画面に動きがつくのは、JavaScriptがDOMを操作しているから。Vueのようなフレームワークも、根っこはこのDOM書き換えの自動化
  • HTMLは構造、CSSは見た目、JavaScriptは振る舞い、と役割が分かれている
  • JavaScriptは基本1本の流れで順番に処理する(イベントループ)。だから重い処理で画面が固まることがある

今日いちばん持ち帰ってほしいのは「HTMLはそのまま表示されるのではなく、DOMになってから画面になる。JavaScriptはそのDOMを書き換えて動かす」という一文です。ここが分かっていると、この先のすべてがつながります。

次回は #2 モダンJavaScript基礎 です。画面を動かす主役である JavaScript そのものを、変数・配列・オブジェクトといった基本から、実務で当たり前に使う書き方まで押さえます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?