- Day 31:DOMとは(前半)
- DOMとは:Webページを“オブジェクトの木”として扱う仕組み
- HTMLとJavaScriptの関係:役割分担を理解する
- 具体例で見る:シンプルなHTMLとDOMのイメージ
- JavaScriptからDOMに触れてみる:最初の一歩
- DOMを“木構造”としてイメージする
- DOMとJavaScriptの関係を体感するミニテンプレート
- Day 31 前半のまとめ
- Day 31:DOMとは(後半)
- DOMツリーを意識してHTMLを見る
- document オブジェクト:DOMの“入口”
- HTMLとJavaScriptの関係を“動き”で理解する
- DOM操作の基本パターンを言葉で整理する
- DOMとHTML・JavaScriptの関係を体感する練習テンプレート
- Day 31 後半のまとめ
Day 31:DOMとは(前半)
「JavaScriptが“Webページそのもの”を触れるようになる仕組み」
Day 31からはいよいよ、 「Webページを直接操作する」世界 に入っていきます。
ここまで学んできたJavaScriptは、 主に「データを扱う」「計算する」ことが中心でしたが、 今日からは 「画面に表示されているHTMLを、JavaScriptで動かす」 という Web開発の核心部分に踏み込んでいきます。
その入口となる概念が DOM(Document Object Model) です。
DOMとは:Webページを“オブジェクトの木”として扱う仕組み
DOMを一言でいうと
DOMとは、
「ブラウザが、HTMLを“オブジェクトの木”として表現したもの」
です。
もう少しかみ砕くと、
- ブラウザは、HTMLファイルを読み込みます
- そのHTMLを、タグごとに分解して「要素」として扱います
- それらの要素を、親子関係のある“木構造”として管理します
- JavaScriptは、その“木構造”にアクセスして、 要素を取得したり、書き換えたり、追加したりできます
この「HTMLをオブジェクトとして扱う仕組み」がDOMです。
HTML → DOM → 画面表示、という流れ
Webページが表示されるまでの流れを、ざっくり整理すると次のようになります。
- ブラウザがHTMLファイルを読み込む
- HTMLを解析して、DOM(オブジェクトの木)を作る
- DOMをもとに、画面に要素を描画する
- JavaScriptは、このDOMに対して操作を行う
つまり、JavaScriptが直接触っているのは「生のHTML文字列」ではなく、 ブラウザが作ったDOMという“オブジェクトの世界” なのです。
HTMLとJavaScriptの関係:役割分担を理解する
HTMLの役割:構造と意味を決める
HTMLは、Webページの 「骨組み」 を作る言語です。
- 見出し(
<h1>〜<h6>) - 段落(
<p>) - リスト(
<ul>,<li>) - ボタン(
<button>) - 入力フォーム(
<input>,<form>)
などを使って、
「何がどこにあるのか」「それが何を意味するのか」
をブラウザに伝えます。
JavaScriptの役割:動きと振る舞いを決める
JavaScriptは、Webページの 「動き」 を作る言語です。
- ボタンをクリックしたときに何かを起こす
- 入力された値をチェックする
- 新しい要素を追加する
- 既存のテキストを書き換える
などの「振る舞い」を、DOMを通して実現します。
HTMLとJavaScriptは“DOMを介して”つながっている
ここがとても重要なポイントです。
- HTML:静的な構造と意味
- JavaScript:動的な振る舞い
- DOM:両者をつなぐ“橋”のような存在
JavaScriptは、DOMを通じてHTML要素にアクセスし、 その内容や属性を変更することで、 結果的に画面上の表示を変えています。
具体例で見る:シンプルなHTMLとDOMのイメージ
例:とてもシンプルなHTML
まずは、次のようなHTMLを考えます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>DOMの基本例</title>
</head>
<body>
<h1>こんにちは、DOM!</h1>
<p>これはDOMの練習用ページです。</p>
<button>メッセージを変更</button>
</body>
</html>
このHTMLには、
<h1>見出し<p>段落<button>ボタン
が含まれています。
ブラウザはこのHTMLを読み込んで、 内部的に次のような「DOMツリー(木構造)」を作ります。
document(ページ全体)html要素head要素body要素h1要素p要素button要素
JavaScriptは、この document からスタートして、 body → h1 → p → button といった要素にアクセスしていきます。
JavaScriptからDOMに触れてみる:最初の一歩
<script> タグでJavaScriptをHTMLに組み込む
HTMLとJavaScriptをつなぐには、 <script> タグを使います。
先ほどのHTMLに、JavaScriptを追加してみます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>DOMの基本例</title>
</head>
<body>
<h1 id="title">こんにちは、DOM!</h1>
<p id="message">これはDOMの練習用ページです。</p>
<button id="changeButton">メッセージを変更</button>
<script>
// ここにJavaScriptを書きます
// 1. DOMから要素を取得する
const titleElement = document.getElementById('title'); // h1要素
const messageElement = document.getElementById('message'); // p要素
const buttonElement = document.getElementById('changeButton'); // button要素
// 2. 取得した要素の内容をコンソールに表示してみます
console.log('タイトルのテキスト:', titleElement.textContent);
console.log('メッセージのテキスト:', messageElement.textContent);
// 3. ボタンがクリックされたときに、メッセージを書き換える
buttonElement.addEventListener('click', function () {
// p要素のテキストを書き換えます
messageElement.textContent = 'ボタンがクリックされました!メッセージを変更しました。';
});
</script>
</body>
</html>
コードのポイント解説
document.getElementById('title')→ DOMから「idがtitleの要素」を取得しています。textContent→ 要素の中のテキストを表すプロパティです。addEventListener('click', function () { ... })→ ボタンがクリックされたときに実行される処理を登録しています。
ここで重要なのは、
JavaScriptは、
documentオブジェクトを入口として、 HTML要素(DOMのノード)にアクセスしている
という点です。
DOMを“木構造”としてイメージする
親子関係でつながった「ノード」の集まり
DOMは、ノード(Node) と呼ばれる要素の集まりです。
documentノード(ページ全体)htmlノードheadノードbodyノード- その中にある
h1,p,buttonなどのノード
これらは、親子関係でつながった「木構造」になっています。
イメージとしては、
documentが「根っこ」htmlが「幹」headとbodyが「太い枝」- その先にある
h1,p,buttonが「葉っぱ」
のような感じです。
JavaScriptは、この木の中から特定の葉っぱ(要素)を見つけて、 その葉っぱの色(テキスト)を変えたり、 新しい葉っぱを生やしたり(要素を追加したり)します。
DOMとJavaScriptの関係を体感するミニテンプレート
Day 31前半の理解を深めるために、 ブラウザで試せる最小限のテンプレートを用意します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Day 31 前半:DOMとは</title>
</head>
<body>
<h1 id="title">DOMの世界へようこそ</h1>
<p id="message">このテキストは、JavaScriptから変更できます。</p>
<button id="changeButton">メッセージを変更する</button>
<script>
// DOMから要素を取得します
const titleElement = document.getElementById('title');
const messageElement = document.getElementById('message');
const buttonElement = document.getElementById('changeButton');
// コンソールに現在のテキストを表示してみます
console.log('現在のタイトル:', titleElement.textContent);
console.log('現在のメッセージ:', messageElement.textContent);
// ボタンがクリックされたときの処理を登録します
buttonElement.addEventListener('click', function () {
// タイトルとメッセージを書き換えます
titleElement.textContent = 'DOMを操作しました!';
messageElement.textContent = 'JavaScriptからDOMを通じてテキストを変更しました。';
});
</script>
</body>
</html>
このテンプレートをブラウザで開き、
- 画面に表示されているテキストを確認する
- ボタンをクリックして、テキストが変わる様子を見る
- 開発者ツールのコンソールを開いて、ログを確認する
ことで、
「HTMLで書いたものが、DOMとしてブラウザに読み込まれ、 JavaScriptから操作されている」
という流れを、目で見て体感することができます。
Day 31 前半のまとめ
Day 31前半では、
- DOMとは「ブラウザがHTMLをオブジェクトの木として表現したもの」であること
- HTMLが「構造と意味」を担当し、JavaScriptが「動きと振る舞い」を担当し、 DOMがその橋渡しをしていること
document.getElementById()などを使って、 JavaScriptからDOM要素にアクセスし、テキストを書き換えられること
を確認しました。
Day 31:DOMとは(後半)
「“画面の裏側”を意識しながらDOMを触ってみる」
Day 31後半では、前半で学んだ
- DOMとは何か
- HTMLとJavaScriptの関係
を、もう一歩深く「実際のブラウザの動き」と結びつけて理解していきます。 ここでは、
- DOMツリーを意識してHTMLを見る
documentオブジェクトの役割を知る- JavaScriptからDOMを操作する基本パターンを体験する
という流れで、WebページとJavaScriptのつながりを“手触り”として掴んでいきます。
DOMツリーを意識してHTMLを見る
DOMは「HTMLの構造をそのまま木にしたもの」です
次のようなシンプルなHTMLを例にします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>DOMツリーのイメージ</title>
</head>
<body>
<h1>DOMツリーの練習</h1>
<p>これはDOMツリーを意識するためのサンプルです。</p>
<div>
<span>中身のテキスト</span>
</div>
</body>
</html>
このHTMLを、DOMの視点で見ると次のような「木構造」になります。
documenthtmlheadmetatitle
bodyh1pdivspan
ここで意識してほしいのは、
- すべての要素が「親」と「子」の関係でつながっていること
- JavaScriptは、この木の中から特定の要素を探して操作すること
です。
開発者ツールでDOMツリーを“目で見る”
ブラウザ(Chromeなど)の開発者ツールを開くと、
- 「Elements」タブ(または「要素」タブ)に、HTML構造が表示されます
- これは、ブラウザが内部で持っているDOMツリーを、人間向けに見せているものです
要素をクリックすると、 対応する部分が画面上でハイライトされます。
「画面に見えているもの」と「DOMツリーの要素」が 1対1で対応している
という感覚を持てると、 JavaScriptでDOMを操作するときのイメージがぐっとクリアになります。
document オブジェクト:DOMの“入口”
document は「ページ全体」を表すオブジェクトです
JavaScriptからDOMにアクセスするとき、 必ず登場するのが document です。
// ページ全体を表すdocumentオブジェクト
console.log(document);
JavaScriptdocument は、
- 現在表示されているWebページ全体を表す
- DOMツリーの「根っこ」にあたる存在
- 要素を探したり、追加したりするためのメソッドをたくさん持っている
という、とても重要なオブジェクトです。
よく使う document のメソッド(入口だけ紹介)
初心者向けに、まずは次の3つを覚えておくとよいです。
// idで要素を取得する
document.getElementById('someId');
// タグ名で要素を取得する(複数)
document.getElementsByTagName('p');
// CSSセレクタで要素を取得する(1つ)
document.querySelector('.className');
JavaScriptDay 31では「DOMとは何か」が主役なので、 これらのメソッドは「こういう入口があるんだな」くらいで大丈夫です。
HTMLとJavaScriptの関係を“動き”で理解する
例:HTMLとJavaScriptがDOMを介してつながる最小構成
次のHTML+JavaScriptを見てください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>HTMLとJavaScriptの関係</title>
</head>
<body>
<!-- 画面に表示されるHTML要素 -->
<h1 id="title">HTMLとJavaScriptの関係</h1>
<p id="description">このテキストは、JavaScriptから変更できます。</p>
<button id="changeButton">説明文を変更する</button>
<!-- JavaScriptを組み込む -->
<script>
// 1. DOMから要素を取得します(HTMLとJavaScriptの“接点”)
const titleElement = document.getElementById('title');
const descriptionElement = document.getElementById('description');
const buttonElement = document.getElementById('changeButton');
// 2. 現在のテキストをコンソールに表示してみます
console.log('タイトル:', titleElement.textContent);
console.log('説明文:', descriptionElement.textContent);
// 3. ボタンがクリックされたときに説明文を書き換えます
buttonElement.addEventListener('click', function () {
// DOMを通じてHTMLの中身を変更しています
descriptionElement.textContent = 'JavaScriptがDOMを通じて、この説明文を書き換えました。';
});
</script>
</body>
</html>
ここで起きていることを、ステップごとに整理します。
ステップ1:ブラウザがHTMLを読み込む
- ブラウザはHTMLを読み込み、DOMツリーを作ります。
id="title"の<h1>要素、id="description"の<p>要素、id="changeButton"の<button>要素がDOMに登録されます。
ステップ2:JavaScriptが document から要素を取得する
const titleElement = document.getElementById('title');
JavaScriptdocumentは「ページ全体」を表すオブジェクトです。getElementById('title')は、「idがtitleの要素」をDOMツリーから探して返します。- 返ってきたものは「DOM要素オブジェクト」であり、 その中に
textContentなどのプロパティが含まれています。
ステップ3:DOM要素のプロパティを変更する
descriptionElement.textContent = 'JavaScriptがDOMを通じて、この説明文を書き換えました。';
JavaScripttextContentは、その要素の「中身のテキスト」を表します。- このプロパティを書き換えることで、 ブラウザは「DOMが変わった」と認識し、画面の表示を更新します。
つまり、JavaScriptは「DOMの状態」を変えていて、 その結果として「画面の表示」が変わっているのです。
DOM操作の基本パターンを言葉で整理する
パターン1:要素を「見つける」
documentからスタートするgetElementByIdやquerySelectorなどで、特定の要素を探す- 見つかった要素を変数に入れておく
const messageElement = document.getElementById('message');
JavaScriptパターン2:要素の「中身」を読む・書く
- 読む:
messageElement.textContent - 書く:
messageElement.textContent = '新しいテキスト';
console.log(messageElement.textContent); // 現在のテキストを確認
messageElement.textContent = '書き換えました'; // 新しいテキストに変更
JavaScriptパターン3:ユーザーの操作に応じてDOMを変える
- ボタンや入力欄などの要素を取得する
addEventListenerでイベント(クリックなど)を監視する- イベントが起きたときに、DOMを変更する処理を実行する
buttonElement.addEventListener('click', function () {
messageElement.textContent = 'ボタンがクリックされたので、メッセージを変更しました。';
});
JavaScriptこの3つのパターンが、 「HTMLとJavaScriptがDOMを通じてつながる」基本的な流れです。
DOMとHTML・JavaScriptの関係を体感する練習テンプレート
Day 31後半の内容を、ブラウザで試せる形にまとめたテンプレートです。 実際に開いて、DOMとJavaScriptの関係を確認してみてください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Day 31 後半:DOMとHTMLとJavaScriptの関係 練習テンプレート</title>
</head>
<body>
<h1 id="title">DOMとHTMLとJavaScriptの関係</h1>
<p id="message">このメッセージは、JavaScriptから変更できます。</p>
<button id="changeButton">メッセージを変更する</button>
<script>
// DOMの入口となるdocumentオブジェクトを確認してみます
console.log('documentオブジェクト:', document);
// DOMから要素を取得します
const titleElement = document.getElementById('title');
const messageElement = document.getElementById('message');
const buttonElement = document.getElementById('changeButton');
// 現在のテキストをコンソールに表示します
console.log('現在のタイトル:', titleElement.textContent);
console.log('現在のメッセージ:', messageElement.textContent);
// ボタンがクリックされたときにDOMを変更します
buttonElement.addEventListener('click', function () {
// タイトルを書き換えます
titleElement.textContent = 'DOMを通じてタイトルを変更しました';
// メッセージを書き換えます
messageElement.textContent = 'JavaScriptがDOMを操作して、このテキストを変更しました。';
// コンソールにもログを出します
console.log('ボタンがクリックされました。DOMを変更しました。');
});
</script>
</body>
</html>
このテンプレートで、
- 画面に表示されているHTML
- 開発者ツールの「Elements」タブに表示されるDOM
- コンソールに表示されるログ
- ボタンをクリックしたときのテキストの変化
をセットで観察すると、
「HTML → DOM → JavaScript → DOM → 画面」
という流れが、かなりはっきり見えてくるはずです。
Day 31 後半のまとめ
Day 31後半では、
- DOMツリーを「親子関係の木構造」として意識すること
documentオブジェクトが、DOMの入口であり、 HTMLとJavaScriptをつなぐ“ハブ”のような存在であること- JavaScriptがDOMを通じて要素を取得し、
textContentなどのプロパティを変更することで、 画面の表示を変えていること
を確認しました。
DOMは、 「JavaScriptがWebページそのものを触れるようにするための仕組み」 です。
この仕組みを理解しておくと、
- ボタンで表示を切り替える
- 入力内容を画面に反映する
- リストを動的に増やす・減らす
といった、実際のWebアプリに近い動きが、 ぐっとイメージしやすくなります。
次のDayでは、 DOM要素の取得方法や、 要素の追加・削除、 イベントとの組み合わせなどを通じて、 「動くWebページ」を少しずつ自分の手で作っていくことになりますので、 今日のテンプレートを何度か試しながら、 DOMとHTML・JavaScriptの関係を自分の中に定着させていってください。

