1
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?

【Reactが動く仕組み】第4弾:なぜReactが必要なのか ~DOMと仮想DOMを添えて~

1
Last updated at Posted at 2026-04-03

【Reactが動く仕組み】シリーズ

Reactでコードを書いて、アプリは作れる。
でも、「どうやって動いているのか?」と聞かれると、言葉にできない…。
一歩踏み出して、「裏側の仕組みを理解して説明できる」を目指したシリーズです。

全7弾で以下の内容を記載予定です。
1.Node.js(実行環境)
2.ビルド(構築の流れ)
3.Babel / polyfill(変換)
4.DOM / 仮想DOM(仕組み)
5.レンダリング(動き)
6.再レンダリング(なぜ起きる?)
7.最適化(どう見極める?)

今回はその第4弾として、「Reactの有用性」についてDOMと仮想DOMを交えて整理していきます。

はじめに

第3弾では、Babelとpolyfillについて整理しました。

👉 Reactのコードは、そのままでは動かず
👉 変換や補完によってブラウザで動く形になっている
 
Reactを動かせる形にするまでにいろいろ過程がありました。
Babelやpolyfill便利ですね。
ふむ。。。
👉 「ここまでしてReactを使う意味ってなんだろう?」

この記事でわかること

  • DOMとは何か
  • DOM操作の問題点
  • 仮想DOMとは何か
  • なぜReactが使われるのか

DOMとは何か

DOM(Document Object Model)とは、

👉 HTMLをJavaScriptから操作できるようにした仕組み
 
例えば

document.getElementById("title").textContent = "Hello";

上記のようにして、JavaScriptからHTMLを書き換えることができます

DOM操作には問題がある?

一見便利ですが、DOM操作には問題がありました。

 
問題①:操作が増えるとコードが複雑になる

例えば、状態に応じて画面を更新する場合

if (count > 10) {
  document.getElementById("message").textContent = "多い";
} else {
  document.getElementById("message").textContent = "少ない";
}

画面が複雑になると
👉 どこをどう更新しているのか分かりにくくなる

さらに、これらが画面のあちこちに散らばると、
👉 「どこを直せばいいのかわからない」状態になる

 
問題②:パフォーマンスが悪い

DOM操作は実はコストが高い処理です。

  • レイアウト計算
  • 再描画(reflow / repaint)

👉 頻繁にやると重くなる

 
問題③:差分管理を自分でやる必要がある

例えば

どこが変わったのか?
何を更新すべきか?

👉 全部自分で判断する必要がある

DOM操作の問題をまとめると

👉 「何をどう更新するか」を人間が考え続けるのがつらい

そこで登場するのが
👉 仮想DOM(Virtual DOM)

仮想DOMとは何か

仮想DOMとは一言でいうと、

👉 DOMの状態をJavaScriptのオブジェクトとして表現したもの

イメージ:

const vdom = {
  type: "h1",
  children: "Hello"
};

👉 本物のDOMではなく、「仮想的なDOM」

仮想DOMを使うと、何が嬉しいのか?

① 差分を自動で計算してくれる

  • 変更前
  • 変更後

を比較して

👉 必要な部分だけ更新してくれる
👉 人間が差分を考えなくてよくなる

 
② DOM操作を最小限にできる

👉 無駄な更新を減らせる
👉 パフォーマンスが良くなる

 
③ UIを宣言的に書ける

<h1>{count}</h1>

👉 「どう更新するか」ではなく
👉 「どうあるべきか」を書くだけ

Reactは何をしているのか

お待たせしました!
DOM操作とReactの関係に入ります。

Reactは
👉 仮想DOMを使ってDOM操作を効率化しているライブラリ
 
つまり
状態が変わる
 ↓
仮想DOMを更新
 ↓
差分を計算
 ↓
必要な部分だけDOM更新

👉 人間がやっていた差分管理を自動化している
👉 「どこを更新するか」を考えなくてよくなる

なぜReactが必要なのか

DOMを直接操作するのは

  • 複雑になる
  • パフォーマンスが悪い
  • 管理が大変

そして何より
「どこを更新すればいいのか」を常に考え続ける必要がある
 
これを解決するために生まれたのが、
👉 仮想DOMという仕組み
 
そしてReactは、
👉 仮想DOMを使って「差分管理」を自動化するライブラリ

Tips

仮想DOMはReact独自のものではなく、UIを効率的に更新するための考え方の一つです。
Reactはその代表的な実装です。他には以下のようなものがあります。

  • Vue(バージョン2系など)
  • Preact(Reactの軽量版)
  • Inferno

まとめ

  • DOMは、HTMLをJavaScriptで操作する仕組み
  • しかし直接操作すると、複雑さやパフォーマンスの問題がある
  • 仮想DOMは、DOMをデータとして扱う仕組み
  • Reactは、仮想DOMを使って効率的にUIを更新している

👉 Reactは「DOM操作のつらさ」を解決するためのライブラリ

第5弾に向けて

ここまでで、「なぜReactが必要なのか」は見えてきました。

では実際に、
👉 Reactはどのように画面を描画しているのか?

次回は「レンダリング」をテーマに、
Reactがどのように画面を作っているのかを整理していきます。

1
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
1
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?