はじめに
Reactを使用しているプロジェクトにアサインされようとしているが、超初見なので概要や関連する用語について学んだ結果をまとめてみようと思う。
※まとめてみたらほとんどDOMがイマイチ理解できず、半分くらいはDOMの説明となっている。
Reactとは?
Reactは、ウェブアプリケーションのユーザーインターフェース(UI)を構築するための強力なJavaScriptライブラリです。
※Facebookによって開発され、現在では多くの開発者に愛用されています。
Reactの主な特徴
コンポーネントベースのアーキテクチャ
Reactの最大の特徴は、UIをコンポーネントと呼ばれる小さな、再利用可能な部品に分割することです。
これにより、複雑なUIも管理しやすくなり、コードの再利用性と保守性が向上します。
宣言的なプログラミング
Reactは宣言的なプログラミングスタイルを採用しています。
これは、「どのように」ではなく「何を」表示するかに焦点を当てるアプローチです。
開発者はUIの最終的な状態を記述し、Reactがその状態を実現するために必要な手順を処理します。
Reactの宣言的なプログラミングの特徴は以下の通り。
-
UIの状態を宣言する:開発者は、UIがどのように見えるべきかを記述します。
-
自動的な更新:状態が変化すると、Reactが効率的にUIを更新します。
-
抽象化:DOMの直接操作を避け、コンポーネントベースの設計に集中できます。
-
可読性の向上:コードが「何を」達成したいかに焦点を当てるため、理解しやすくなります。
例えば、以下のようなコードは宣言的です:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
このコードは、「props.nameを使って挨拶を表示したい」ということを宣言しています。Reactが内部でDOMを効率的に更新する方法を処理するため、開発者はその詳細を気にする必要がありません
参考:https://tech.i3design.jp/react-declarative-ui/
仮想DOMを使用
Reactは仮想DOMという概念を使用して、効率的にUIを更新します。
これにより、実際のDOM操作を最小限に抑え、パフォーマンスを向上させています。
補足1:DOMとは?
DOMとは、Document Object Modelの略で、Webページの構造や内容を表現し操作するための仕組みです。
もう少し言えば、HTMLやXML文書をプログラムから操作するためのインターフェースを提供するAPIと言えます。
以下にDOMの主な特徴を簡潔に説明します:
-
ツリー構造:HTMLやXMLの文書をツリー状の階層構造として表現します。
-
プログラムからのアクセス:JavaScriptなどのプログラミング言語からWebページの要素にアクセスし、操作することができます。
-
動的な操作:DOMを使用することで、以下のような動的な操作が可能になります:
- HTML要素の追加や削除
- 要素の属性変更
- テキストの書き換え
- スタイルの変更
-
クロスプラットフォーム:異なるプラットフォームでも同じ方法でWebページを操作できます。
DOMを理解することで、JavaScriptを使って動的なWebページを作成したり、ユーザーの操作に応じてページの内容を変更したりすることができるようになります。
補足2;仮想DOMとは?
仮想DOM(Virtual DOM)は、実際のDOMの軽量なコピーをメモリ上に保持し、効率的にUIを更新するための技術です。主な特徴は以下の通りです:
-
メモリ上のDOM表現:UIの仮想的な表現をJavaScriptオブジェクトとして保持します。
-
差分検出と効率的な更新:新旧の仮想DOMを比較し、変更があった部分のみを実際のDOMに反映させます。
-
パフォーマンス向上:必要最小限のDOM操作で更新を行うため、レンダリングのパフォーマンスが向上します。
-
開発効率の向上:開発者は直接DOMを操作する必要がなく、コンポーネントの状態管理に集中できます。
-
クロスプラットフォーム対応:実際のブラウザDOMに依存しないため、様々な環境で使用できます。
仮想DOMは、ReactやVue.jsなどの現代的なフロントエンドフレームワークで採用されており、大規模なWebアプリケーション開発において重要な役割を果たしています。
ちょっとこれだけだと(私が)理解できなかったので、もう少し噛み砕くと以下となる。
仮想DOMは差分のみを更新し、仮想DOMの仕組みは以下となる。
-
初期状態では、実際のDOMの複製として仮想DOMが作成されます。
-
コンポーネントの状態が変更されると、新しい仮想DOMが生成されます。
-
新しい仮想DOMと前の仮想DOMが比較され、差分が検出されます。
-
検出された差分のみが実際のDOMに反映されます。
この仕組みにより、仮想DOMは必要最小限の更新のみを行い、パフォーマンスを向上させます。例えば、リスト内の一部の要素だけが変更された場合、変更された要素のみが更新され、リスト全体が再レンダリングされることはありません。
この最適化された更新プロセスにより、Reactなどのフレームワークは効率的なDOM操作を実現し、アプリケーションのパフォーマンスを向上させています。
Reactを学ぶメリット
-
需要の高いスキル: Reactは多くの企業で採用されており、React開発者の需要は高いです。
-
効率的な開発: コンポーネントの再利用性により、開発速度が向上します。
-
大規模アプリケーションの管理: コンポーネントベースの構造により、大規模なアプリケーションも効率的に管理できます。
-
パフォーマンス: 仮想DOMの使用により、高速なUI更新が可能です。
以上