【React Native】React Nativeとは?JavaScriptの知識でネイティブアプリを作る仕組み

React Native

こんにちは、かつコーチです。

「React NativeってReactと何が違うの?」「JavaScriptだけでiPhoneとAndroidの両方のアプリが作れるって本当?」。
そんな疑問を持って、この記事にたどり着いた方も多いと思います。

私自身、普段はReactでWebアプリを作ることが多いのですが、あるとき「スマホアプリも作ってみたい」と思い立ち、React Nativeに触れてみました。
最初は「Reactの知識がどこまで通用するのか」が全く分からず、手探りで進めた記憶があります。

この記事では、React Nativeとは何か、なぜJSやReactの知識が活かせるのか、そしてFlutterなど他の選択肢との違いについて整理します。
読み終える頃には、React Nativeの全体像がつかめるはずです。

React Nativeとは?

専門用語の定義

React Nativeとは、Meta社が開発しているフレームワークで、JavaScript(またはTypeScript)とReactの書き方だけで、iOSとAndroidのネイティブアプリを作れる仕組みのことです。

ここで重要なのが「ネイティブアプリ」という言葉です。
ネイティブアプリとは、iOSならSwift、AndroidならKotlin(またはJava)で作られた、そのOS専用のアプリのことを指します。
Webサイトをアプリっぽく見せる「WebView」ベースのアプリとは違い、端末のボタンやカメラ、通知などの機能に直接アクセスできます。

React Nativeのすごいところは、Swiftのコードを書かなくても、JavaScriptを書くだけでこの「本物のネイティブ部品」を操作できる点です。

私はよく、React Nativeのことを「通訳者」に例えています。
あなたがReactの書き方(JSXやuseStateなど)で「ボタンを配置したい」と伝えると、React Nativeがそれを、iOSの言語・Androidの言語にそれぞれ通訳して、実際のネイティブのボタン部品を画面に出してくれる。
そんなイメージです。

つまり開発者は英語(React)だけ話せれば良くて、現地語(Swift/Kotlin)を覚える必要がない、というわけです。

なぜそれが必要なのか

スマホアプリを作る場合、本来はiOS用とAndroid用で別々にコードを書く必要があります。
言語もSwiftとKotlinで異なりますし、開発チームも別々に用意することが多いです。

これはとても非効率です。
同じ機能を持つアプリを、2つの言語で2回実装しなければならないからです。

React Nativeを使えば、1つのコードベース(JavaScript/TypeScript)から、iOSとAndroidの両方にアプリを配布できます。
しかも、すでにReactを使ってWeb開発をしている人であれば、コンポーネント設計や状態管理(useState、useEffectなど)の考え方をそのまま流用できます。

私が実際にReact Nativeを触ってみて驚いたのは、useStateやuseEffect、propsの受け渡しなど、Reactで当たり前にやっていたことが、ほぼそのまま通用したことです。
「あ、これ知ってる書き方だ」という安心感がありました。

JS/Reactの知識はどこまで活かせるのか

活かせる部分

  • JSXの書き方(ただし<div>ではなく<View>のような専用コンポーネントを使う)
  • useState、useEffect、useContextなどのフック
  • propsやstateによるコンポーネント設計の考え方
  • npmパッケージのエコシステム(多くのライブラリがそのまま使える)
  • 条件分岐やmap関数によるリスト表示のロジック

新しく覚える必要がある部分

  • HTMLタグの代わりにViewやTextなど専用コンポーネントを使うこと
  • CSSではなく、JavaScriptオブジェクトでStyleSheet(後述の記事で詳しく解説します)を書くこと
  • ネイティブモジュール(カメラやGPSなど)へのアクセス方法
  • New Architectureと呼ばれる、Fabric・TurboModulesという新しい仕組み(2026年時点ではこちらが標準です。詳しくは別記事で解説します)

つまり、ゼロから覚えることは意外と少なく、「Reactの応用編」として学べるのがReact Nativeの大きなメリットだと感じています。

Flutterとの違いに軽く触れる

React Nativeとよく比較されるのが、Googleが開発するFlutterです。
FlutterはDartという言語を使い、UIを描画エンジンで独自に描くという特徴があります。

一方React Nativeは、前述の通り本物のネイティブ部品を「通訳」して使う仕組みです。

大きな違いをまとめると、以下のようになります。

項目React NativeFlutter
言語JavaScript / TypeScriptDart
UIの描画方式ネイティブ部品を操作独自エンジンで描画
既存Reactエンジニアの学習コスト低い高い(Dartを新規習得)

私の感覚では、すでにJS/Reactの経験がある方にとっては、React Nativeの方が圧倒的に学習コストが低いです。
逆に、デザインの一貫性を極限まで追求したい場合や、新規にモバイル専門のチームを作る場合はFlutterも有力な選択肢になります。

このシリーズでは、JS/React経験者を前提に、React Nativeにフォーカスして解説していきます。

まとめ

この記事のポイント

  • React Nativeは、JavaScript/Reactの書き方でiOS/Android両対応のネイティブアプリを作れるフレームワーク
  • React Nativeは「通訳者」のような存在で、Reactのコードをネイティブ部品に変換してくれる
  • useStateやuseEffectなど、Reactの知識の多くはそのまま活かせる
  • HTMLタグの代わりに専用コンポーネント、CSSの代わりにStyleSheetを使う点は新しく覚える必要がある
  • Flutterとの違いは「言語」と「UIの描画方式」。JS/React経験者にはReact Nativeの方が学習コストが低い

次に読むべき記事

React Nativeの全体像がつかめたら、次は実際に手を動かして環境を作ってみましょう。
「Expoで環境構築とプロジェクト作成をする基本」で、実際にプロジェクトを立ち上げる手順を解説しています。

タイトルとURLをコピーしました