用語集
開発メニュー (Dev Menu)
さまざまな開発・デバッグ操作へのアクセスを提供するアプリ内開発者メニュー(開発ビルドで利用可能)です。ドキュメントで開発メニューについてさらに詳しく学ぶ。
Fabric レンダラー (Fabric Renderer)
React Native は、Web 用の React と同じ React フレームワークのコードを実行します。しかし、React Native は DOM ノード(Web のホストビューと見なせる)の代わりに、一般的なプラットフォームビュー(ホストビュー)にレンダリングします。ホストビューへのレンダリングは、Fabric レンダラーによって可能になります。Fabric によって、React は各プラットフォームと通信し、そのホストビューインスタンスを管理できます。Fabric レンダラーは JavaScript に存在し、C++ コードによって利用可能になるインターフェースを対象とします。このブログ記事で React レンダラーについてさらに詳しく読む。
ホストプラットフォーム (Host platform)
React Native を組み込んでいるプラットフォーム(例:Android、iOS、macOS、Windows)。
ホストビューツリー(とホストビュー)(Host View Tree (and Host View))
ホストプラットフォーム(例:Android、iOS)におけるビューのツリー表現。Android では、ホストビューは android.view.ViewGroup
や android.widget.TextView
などのインスタンスであり、これらがホストビューツリーの構成要素となります。各ホストビューのサイズと位置は Yoga で計算された LayoutMetrics
に基づいており、各ホストビューのスタイルとコンテンツは React Shadow Tree からの情報に基づいています。
JavaScript インターフェース (JSI)
C++ アプリケーションに JavaScript エンジンを埋め込むための軽量な API です。Fabric はこれを使用して、Fabric の C++ コアと React の間で通信を行います。
Java ネイティブインターフェース (JNI)
Java ネイティブメソッドを記述するための API であり、Fabric の C++ コアと Java で書かれた Android との間で通信するために使用されます。
React コンポーネント (React Component)
React 要素 (Element) の作成方法を指示する JavaScript の関数またはクラスです。このブログ記事で React コンポーネント、要素についてさらに詳しく読む。
React コンポジットコンポーネント (React Composite Components)
render
の実装が他の React コンポジットコンポーネントまたは React ホストコンポーネントに帰着する React コンポーネント。
React ホストコンポーネント または ホストコンポーネント (React Host Components or Host Components)
ビューの実装がホストビューによって提供される React コンポーネント(例:<View>, <Text>
)。Web では、ReactDOM のホストコンポーネントは <p>
や <div>
のようなコンポーネントになります。
React 要素ツリー(と React 要素)(React Element Tree (and React Element))
React 要素ツリーは React によって JavaScript で作成され、React 要素で構成されます。React 要素は、画面に何を表示すべきかを記述するプレーンな JavaScript オブジェクトです。これには props、スタイル、子要素が含まれます。React 要素は JavaScript にのみ存在し、React コンポジットコンポーネントまたは React ホストコンポーネントのいずれかのインスタンス化を表すことができます。このブログ記事で React コンポーネントと要素についてさらに詳しく読む。
React Native フレームワーク (React Native Framework)
React Native を使うことで、開発者は React のプログラミングパラダイム を使用してネイティブターゲットにアプリケーションを配布できます。React Native チームは、ネイティブアプリを開発する際の最も一般的なユースケースに適合するコア API と機能の作成に重点を置いています。
ネイティブアプリを本番環境に配布するには、通常、React Native の一部としてデフォルトで提供されていないツールやライブラリのセットが必要ですが、これらはアプリを本番環境に配布するために依然として重要です。そのようなツールの例としては、専用ストアへのアプリケーションの公開のサポートや、ルーティングおよびナビゲーションメカニズムのサポートがあります。
これらのツールやライブラリが React Native の上に構築された cohesive なフレームワークを形成するために集められたとき、それを React Native フレームワークと定義します。
オープンソースの React Native フレームワークの例は Expo です。
React Shadow Tree(と React Shadow Node)
React Shadow Tree は Fabric レンダラーによって作成され、React Shadow Node で構成されます。React Shadow Node は、マウントされるべき React ホストコンポーネントを表すオブジェクトであり、JavaScript からの props を含んでいます。また、レイアウト情報(x、y、幅、高さ)も含まれます。Fabric では、React Shadow Node オブジェクトは C++ に存在します。Fabric 以前は、これらはモバイルランタイムのヒープ(例:Android JVM)に存在していました。
Yoga ツリー(と Yoga ノード)(Yoga Tree (and Yoga Node))
Yoga ツリーは Yoga によって React Shadow Tree のレイアウト情報を計算するために使用されます。React Native はレイアウト計算に Yoga を採用しているため、通常、各 React Shadow Node は Yoga ノードを作成します。ただし、これは必須要件ではありません。Fabric は Yoga を使用しない React Shadow Node を作成することもできます。各 React Shadow Node の実装がレイアウトの計算方法を決定します。