オープンソースプロジェクト
react/react-native avatar
react/react-native

React Nativeでネイティブアプリを作る際の境界と選択肢

React を使用してネイティブ アプリケーションを構築するためのフレームワーク

スター 126,614フォーク 25,249C++MIT

ひと目でわかる

これは何?
react/react-nativeのREADMEをもとに、Reactによる宣言的UI、ネイティブ描画、Expo、Native Modules、アップグレードを整理します。
誰に向いている?
React Nativeは、Reactのコンポーネントと開発体験を使いながらAndroidやiOSのネイティブUIを構築したいチームの候補です。ExpoのようなFrameworkを使うか、既存アプリへ段階導入するかで準備と責任範囲が変わります。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

Reactの記法からネイティブUIへつなぐ

React Nativeは、Reactを使ってネイティブアプリを構築するためのFrameworkです。READMEは、JavaScriptで記述し、ネイティブコードで描画すると説明しています。Android、iOS、その他のプラットフォームを対象にでき、Reactの宣言的UI、コンポーネント、Hooks、Suspenseを共有できます。Web向けのReactコードをそのまま移すというより、Reactの考え方を各OSのUIへ接続する仕組みとして理解するのが適切です。\n\nネイティブのプリミティブを使うため、ジェスチャー、文字サイズの拡大、アクセシビリティは各OSの作法に沿って振る舞うとREADMEは説明しています。これは設計上の利点ですが、すべての画面が自動でアクセシブルになるという意味ではありません。対象OSの実機で読み上げ、文字拡大、入力、画面遷移を確認し、React側の状態管理とネイティブ側の挙動を分けて記録します。

Fast Refreshが変える開発ループ

READMEのDeveloper Velocityの説明では、JavaScriptの変更をネイティブアプリ全体の再ビルドなしでFast Refreshに反映し、ローカルの変更を短時間で確認できるとされています。UIを調整する作業では、ビルドを待つ回数を減らし、コンポーネント単位で表示を見直せる点が実務上の利点になります。\n\nただし、JavaScriptの変更がすぐ見えることと、ネイティブの変更が同じ速度で反映されることは同じではありません。Native Modules、権限、カメラ、通知、ストレージのようなOS連携を変えた場合は、別のビルドや実機確認が必要になります。開発ループを評価するときは、UI変更、状態変更、ネイティブ依存変更を分け、どの変更で再ビルドが必要になるかをチームの手順へ落とします。

Expoを使うか既存アプリへ組み込むか

新しいアプリはGetting Startedガイドから始められ、既存アプリへはIntegration with Existing Appsの案内を使って段階的に導入できるとREADMEにあります。React Nativeを全面採用するか、一部画面から組み込むかは、既存のネイティブコード、リリース体制、共有したいコンポーネントの範囲で決めます。\n\nREADMEは、React Nativeを体験する方法としてFrameworkの利用を推奨し、Expoを本番向けのReact Native Frameworkとして紹介しています。Expoにはファイルベースのルーティング、標準的なNative Modulesライブラリなどが含まれ、作成例はnpx create-expo-app@latestです。Frameworkを使わない構成も選べますが、ナビゲーション、ネイティブ依存、プラットフォームツールの問題を自分で扱う範囲が増えます。既存のビルドと合わない場合は、公式のFrameworkなしの導入ガイドと責任分界を比較します。

Native ModulesでOS固有の機能を呼び出す

React NativeのNative Modulesは、JavaScriptからプラットフォームコードを直接呼び出すための仕組みです。READMEは、同期的かつ型安全に呼び出せることと、既存の多数のライブラリへつながることを特徴として挙げています。Reactのコンポーネントだけでは扱いにくい端末機能を、JavaScriptのアプリケーションロジックへ接続する接点です。\n\nここは共有コードの利点とOS差分の境目でもあります。AndroidとiOSで権限、ライフサイクル、エラー、バックグラウンド制限が異なる場合、同じAPI名を使っても結果が一致するとは限りません。採用時には、使うNative Moduleの保守元、対応するReact Nativeの版、ネイティブSDKの版、失敗時の戻り値を記録します。READMEの「数千の既存ライブラリ」という説明は選択肢の広さを示しますが、個々のライブラリの品質や継続性を保証するものではありません。

対象OSと開発機の制約を先に固定する

READMEの導入情報では、React NativeアプリはiOS 15.1、Android 7.0、API 24以降を対象にできるとされています。開発OSはWindows、macOS、Linuxを使えますが、iOSアプリのビルドと実行はmacOSに限られると説明されています。対象OSの下限を決めることは、利用者へ届く端末の範囲と、使えるOS APIの範囲を決めることでもあります。\n\n実務では、開発者の端末だけでなくCI、署名、シミュレーター、実機の組み合わせを固定します。AndroidのAPIレベル、iOSの最低版、XcodeやAndroid SDK、利用するFrameworkの版がずれると、JavaScriptのコードが同じでもビルド結果は変わります。READMEは導入先へのリンクを示していますが、各組織のCIが成立することまでは確認していません。初期段階でAndroidとiOSの代表端末を一台ずつ決め、権限、画面サイズ、文字拡大、ネットワーク切断を確認します。

ドキュメントとアップグレードを別の作業にする

公式サイトにはIntroduction、Getting Started、チュートリアル、Components and APIs、UI and Interaction、Native Modules、Debugging、Upgrading、Architectureの入口があります。ドキュメントとWebサイトのソースはreact/react-native-websiteという別リポジトリで管理されるとREADMEに記載されています。実装を調べるときは、本体リポジトリとドキュメントリポジトリを混同しないようにします。\n\nReact Nativeの更新では、より多くのAPI、View、開発ツールを使える可能性がある一方、ネイティブ依存やFrameworkとの組み合わせを点検する必要があります。アプリの版を上げる前に、現在の依存関係、Native Modules、AndroidとiOSのビルド、Fast Refresh、リリース済み画面を記録します。更新後は、単にコンパイルが通るかだけでなく、ジェスチャー、アクセシビリティ、通知、ストレージ、実機の起動を確認します。アップグレードガイドを読むことと、更新が安全に完了したことは別の判断です。

MITライセンスとコミュニティの保守線

React NativeはMITライセンスで、READMEはLICENSEファイルを参照先として示しています。利用や改変を検討する際の入口として明快ですが、アプリに含める全依存ライブラリの条件や、各OS SDKの規約を一つにまとめるものではありません。配布物を作る場合は、本体、Framework、Native Modulesのライセンスと通知を個別に確認します。\n\nプロジェクトは多くの企業と個人のコア貢献者によって開発、サポートされ、React Foundationのサイトへ案内しています。Contributing Guide、Code of Conduct、コミュニティの議論、リリース関連の議論も用意されています。これは広い参加経路を示しますが、自社アプリの障害対応時間や更新保証ではありません。現在のリリース一覧にはv0.87.1などが示されているため、採用時には本体の版、Expoの版、ネイティブSDK、外部ライブラリを同じ更新計画で管理します。共有コードの量だけでなく、OS固有部分を誰が保守できるかを判断材料に残します。

編集部の結論

React Nativeは、Reactのコンポーネントと開発体験を使いながらAndroidやiOSのネイティブUIを構築したいチームの候補です。ExpoのようなFrameworkを使うか、既存アプリへ段階導入するかで準備と責任範囲が変わります。採用前に対象OSの版、ネイティブ依存、ビルド環境、更新方針、実機でのアクセシビリティとジェスチャーを確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート