仮想dom・とは?初心者にも分かる基本ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
仮想dom・とは?初心者にも分かる基本ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


仮想domとは何か?

ここでは 仮想dom について初心者にも分かりやすく解説します。仮想dom という言葉は最近よく耳にしますが、難しく聞こえるかもしれません。実はとても身近な考え方です。

仮想domが生まれた背景

ウェブの画面は状態の変化とともに何度も再描画されます。直接的なDOMの更新コストが高く、画面のちらつきや遅さの原因になります。そこで 仮想dom のアイデアが生まれました。実際のDOMをそのまま触るのではなく、まず 仮想DOM と呼ばれる“軽い”木構造を作っておくのです。

どう動くのか?基本的な流れ

状態が変わると、まず新しい 仮想dom ツリーが作られます。次に、古い仮想dom と新しい仮想dom を比べて、どこが変わったのかを見つけます。これを差分検出、いわゆる diff と呼びます。差分が見つかると、必要な部分だけを実際の DOM に適用します。これをパッチ処理といいます。最終的にユーザーに表示される画面は、変更箇所を最小限に抑えた更新になります。

なぜ速いのか?ポイント解説

実際のDOMを1回ずつ操作すると、多くのブラウザの作業が発生して遅くなります。しかし 仮想dom を使うと、更新回数を減らし、変更箇所だけを効率的に反映させられます。バッチ処理と呼ばれるまとめての更新も取り入れられており、これにより描画の回数がさらに減ります。

実務での使い方のイメージ

現代の多くのフレームワークは 仮想dom の考え方を使っています。例えば UI の状態を「state」として管理し、状態が変わるたびに仮想DOM を再構築します。開発者は直接 document.createElement のような低レベル操作をする必要がなく、代わりに高レベルの部品を組み合わせて UI を作ります。

表で見る比較

比較項目実DOM(従来)
更新の頻度その都度変更を適用
コスト高い、再描画が多い
変更箇所の判定全体を見直すこともある
速度の指標ページの応答が遅くなることがある
仮想domの役割差分だけを適用することで速さを実現

まとめ

仮想dom は現代のウェブ開発で重要な考え方です。難しそうに見えても、基本は「状態をきちんと管理し、必要な部分だけ更新する」という考え方です。初心者のうちは小さなアプリから始め、段階的に仮想DOM の流れを理解すると良いでしょう。


仮想domの同意語

仮想dom
実DOMの仮想表現を指す言葉。ブラウザ上の実DOMを直接操作せず、仮想DOMという軽量な木で差分更新を行う仕組みのことを指す、同義の表現の一つ。
仮想DOM
実DOMの代わりに仮想的なDOMを用意し、差分検知と最小更新で描画を行う仕組みの総称。
バーチャルDOM
Virtual DOM の日本語・英語由来の表現。実DOMと仮想DOMの分離を前提とした考え方を指す同義語
仮想DOMツリー
仮想DOMを木構造として表現したもの。ノードが親子関係で階層化されている状態。
仮想DOMノード
仮想DOMの最小の構成要素。要素ノード、テキストノードなどを指す。
仮想DOM構造
仮想DOMのデータ構造全体。ノードの集合と階層を含む。
仮想DOMレンダリング
仮想DOMを使って画面へ表示する処理。実DOMへ反映するまでの流れを指す。
仮想DOM差分更新
差分検知(diff)アルゴリズムで実DOMを最小限の変更のみ適用する手法。
仮想DOMアルゴリズム
仮想DOMを動かす一連の処理(差分検出・適用など)を指す総称。
仮想DOM表現
仮想DOMをデータとして表現した形式・方法を指す語。
抽象DOM
DOMを抽象化した概念。仮想DOMの別表現として使われることがある。
仮想ドキュメントオブジェクトモデル
DOM の仮想表現を指す長い名称。実務では仮想DOMと同義として使われることがある。
仮想DOMレイヤー
実DOMの上に置かれる仮想的なレイヤーとしての表現。
仮想UI木
ユーザーインターフェースを仮想的な木構造として扱う考え方。

仮想domの対義語・反対語

実 DOM
ブラウザが実際に保持している DOM。仮想 DOM を介さず、直接この DOM を更新・描画するアプローチの対義語として使われます。
現実の DOM
現実に存在する DOM。仮想 DOM の対比として、実際のツリーを直接操作するイメージです。
生の DOM
未加工・未抽象化の DOM。仮想 DOM を使わない実装を説明するときに使われる表現です。
物理 DOM
物理的な DOM。実体の DOM を指す語で、仮想 DOM の対概念として用いられます。
リアル DOM
現実の DOM の別表現。対になる概念として頻繁に使われます。
直接 DOM 操作
仮想 DOM を介さず、直接ノードを変更して更新する操作方法。差分検知を使わない点が特徴です。

仮想domの共起語

リアルDOM
実際にブラウザのドキュメントとして存在するDOM。仮想DOMはこの実DOMへの更新を最小限のパッチで適用するための仕組みです。
差分アルゴリズム
現在の仮想DOMと新しい仮想DOMの差分を検出するアルゴリズム。変更点だけを特定して最小の更新を作り出します。
パッチ適用
差分アルゴリズムで決定した変更を実際のDOMへ適用する処理。これにより描画コストを抑えます。
レンダリング
UIを描画すること。状態が変化すると仮想DOMが更新され、再描画が行われます。
JSX
Reactなどで仮想DOMノードを記述する構文。JSXは最終的に仮想DOMツリーへ変換されます。
React
仮想DOMの普及度を高めた代表的なフロントエンドライブラリ。仮想DOMを中核的に使用します。
Vue
別の主要なフレームワーク。仮想DOMを用いてテンプレートをレンダリングします。
仮想ノード
仮想DOMを構成するノード。実DOMとの差分検出の対象となる要素です。
仮想ツリー
仮想DOMの階層構造。ノードが木のように構成されています。
実DOM
リアルなDOMのこと。仮想DOMはこの実DOMへ差分を適用します。
DOMツリー
ノードが階層的につながった構造。仮想DOMと実DOMの両方の対象となる概念です。
状態変化
データの変化のこと。これがきっかけで新しい仮想DOMが生成され、更新が発生します。
キー
リストのアイテムを識別する識別子。差分検出の安定性と更新の正確性に大きく影響します。
差分検出
旧仮想DOMと新仮想DOMの違いを検出する作業。最小の更新点を決定します。
フォーマンス最適化
更新回数を減らし描画を速くする工夫。仮想DOMの主な利点のひとつです。
直接DOM操作
仮想DOMを介さず直接DOMを操作する従来の方法。仮想DOMはこれを回避する設計です。
ライフサイクル
マウント・更新・アンマウントなど、コンポーネントの生存期間と仮想DOMの更新タイミングに関係します。
レンダラー
仮想DOMツリーを実DOMへ変換して描画する役割を担う機構。

仮想domの関連用語

仮想DOM
実DOMの軽量な抽象表現。UI更新を仮想DOM上で行い、差分だけを実DOMに適用することで性能を向上させる仕組み
実DOM
ブラウザが実際に操作・描画するDOMツリー。最終的な画面表示の対象。
レンダリング
状態やプロップスからUIを描画するプロセス。仮想DOMや実DOMの更新の根幹となる処理。
再レンダリング
状態・プロップの変化に応じてもう一度UIを描画・更新すること。
差分検知
仮想DOMと実DOMの間の差分を検出するアルゴリズム。最小の変更点を特定する役割。
差分適用
検出した差分を実DOMに適用して、画面を更新する操作。
パッチ
差分検知で見つかった変更を実DOMに適用する具体的な変更単位。
リコンシリエーション(リコンサイル)
仮想DOMと実DOMの整合を取る過程。最小限の変更でUIを更新することを目指す。
レンダリングツリー
UIの階層構造を木として表現したもの。仮想DOMやレンダリングエンジンの中心。
VNode
Vueなどの仮想DOMを構成する仮想ノード。仮想DOMのデータ構造の一つ。
JSX
JavaScriptの中でHTML風の記法を用いて仮想DOMノードを記述する構文。
コンポーネント
UIを再利用可能な部品として分割した単位。状態と挙動を持つ。
状態管理
アプリ全体の状態を一箇所で管理・共有する仕組み。ReduxやVuexなどを含む。
props
コンポーネントに渡す入力データ。読み取り専用として扱われることが多い。
ライフサイクル
コンポーネントのマウント・更新・アンマウントなど、段階的なイベントの流れ。
React
仮想DOMを採用する代表的なUIライブラリ。広く使われているフレームワークの一つ。
Vue
仮想DOMを活用するUIフレームワーク。シンプルさと学習コストの低さが特徴。
Preact
軽量版の仮想DOM実装。Reactと互換性のある小型ライブラリ。
Fiber
Reactの新しいレンダリングアーキテクチャ。作業を細かく分割して中断・再開可能にする設計。
ハイドレーション
サーバーサイドレンダリング(SSR)で生成したHTMLに対してイベントリスナーなどを結合する作業。
SSR(サーバーサイドレンダリング)
サーバー側でHTMLを事前生成してクライアントへ送るレンダリング手法。初期表示を速くする狙い。
diffアルゴリズム
仮想DOMと実DOMの差分を効率的に見つけ出すアルゴリズム。
パッチアルゴリズム
差分を実DOMに適用する具体的な更新処理の集合。
レンダリング最適化
不要な再描画を減らし、パフォーマンスを向上させる設計・実装手法。
バッチ処理
複数の状態更新をまとめて処理することで描画回数を抑える技法。
DOM操作コスト
実DOMへ変更を適用する際の計算資源・描画負荷のこと。
仮想DOMの利点
直接DOM操作を減らせることによるパフォーマンス向上と、UIの描画更新を予測・最適化しやすい点。
仮想DOMの限界
過度の抽象化によるオーバーヘッドや、単純なUIでは必ずしも効果が大きくない場合がある点。

仮想domのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14524viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2426viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1081viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1055viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
941viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
910viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
853viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
849viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
801viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
793viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
724viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
714viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
601viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
587viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
584viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
554viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
524viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
509viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
484viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
481viws

新着記事

インターネット・コンピュータの関連記事