← Back

13年間モバイルアプリ開発を続けてきた私が、React Nativeに賭ける理由

2026-01-01

あけましておめでとうございます!今年もよろしくお願いします。 今週は週間React Nativeをお休みして、私がなぜ今React Nativeに注力しているのか、その理由をお話ししたいと思います。

こちらの投稿を元に、私自身の経験や考えを共有します。

https://zenn.dev/ikuraikura/articles/2025-12-21-native

筆者のモバイルアプリ開発経験

まず、私の経歴を簡単に紹介します。

2011年: 受託開発会社でFlashやRailsを使った開発を担当。

2012年~2013年: Adobe AIRというSDKを使い、Flashベースのクロスプラットフォームモバイルアプリ開発に従事。同時にiOSネイティブ案件も担当し、ネイティブ開発の経験も積む。

2014年~2017年: 女性向けキュレーションメディアを運営する株式会社ペロリへ転職。本格的にiOS/Androidのネイティブアプリ開発を開始。当初はAndroid開発を担当していたが、徐々にiOSも手がけるようになり、2015年以降は両プラットフォームの実装を1人で進める方が効率的だと判断。

2017年: DMM子会社のピックアップ株式会社に転職し、DMM TELLER(現テラーノベル)のiOS/Android開発を担当。

2019年: 株式会社Hotspringで旅行予約サイト「こころから」の開発に参加。ここで初めてWebのReactに触れ、宣言的にUIを定義できることやWeb開発の効率の良さを実感。

2020年: 副業でstand.fmを手伝い、初めてReact Nativeに触れる。ただし当時のstand.fmはFlowを使用しており、あまり馴染みのなかったReduxも採用していたため、React Nativeの良さを実感できず。また、Androidのパフォーマンス改善に取り組んだが、当時のReact Nativeではなかなか成果を上げられず苦戦。

2022年: ピックアップ株式会社に復帰。「こころから」での経験を活かし、テラーノベルのiOS/Android/Web全ての開発に従事。この頃、副業でFlutterアプリケーションの開発も経験。Flutterの開発体験の良さ、特にどのプラットフォームでも同じように描画され、プラットフォーム差異を最小化できる点に開発効率の高さを感じる。以前使っていたAdobe AIRと似た描画方式が、よりモバイルアプリに最適化されたように感じた。

2023年: テラーノベルのアプリで作品投稿画面がWebViewで実装されていたため、これを刷新する目的でReact Nativeを検証。当初は流行していたFlutterを採用する予定だったが、Webでも利用することを考慮すると、React Nativeが最適な選択肢だと判断。 また、React NativeにHermesやNew Architectureの登場、数年前と比べて端末のベースラインのスペックも上がっていることにより、パフォーマンスてきな部分も問題なくなってきたと感じた。

2024年: テラーノベルでReact Nativeを使用したスタジオ機能をリリース。

2025年: 完全にReact Nativeで構築されたテラードラマをリリース。モバイルアプリ/Webの両対応が必要であり、開発効率を考えるとReact Nativeが最良の選択肢となった。

React Nativeの魅力

1. UIの開発効率が圧倒的に高い

2020年、モバイルアプリからWebのReactに触れた際、最も感動したのがStorybookでした。

https://storybook.js.org/

Storybookはコンポーネント単位でそれぞれの状態をカタログとして定義でき、手動確認はもちろん、VRT(Visual Regression Testing)やインタラクションテストもサポートしています。 個人的には、もはやなくてはならないツールです。

現在ではネイティブアプリ開発でもXcode PreviewやJetpack Compose Previewで同様のことが可能ですが、Storybookほど高速にプレビューできるとは感じていません。

React NativeでもStorybookを活用できます。 特にReact Native for WebでWeb上でReact NativeのUIコンポーネントを実行し、Storybookで確認することで、開発速度が大幅に向上します。 もちろんネイティブでの表示とのズレは多少発生しますが、経験上、そのズレは(内容にもよりますが)ごく僅かではないかと思います。

さらに、昨今のAI AgentによってPlaywright MCPなども活用でき、実際のデザインファイルを与えて、ブラウザ上のStorybookのレンダリングと調整しながらUIコンポーネントを開発することも可能になっています。

2. WebとiOS/Androidでコードを共通化できる

FlutterやCompose MultiplatformでもWebへのデプロイは可能ですが、SEOが必要なWebページの場合、まだ課題があると感じています。

React Nativeの場合、共通部分を切り出してmonorepo構成にすることでコードの共通化が実現できます。 また、Expo Webを利用すれば、SSR(Server-Side Rendering)対応のアプリケーションも構築可能です。

React Nativeを使えば、モバイルだけでなくWebにも対応したアプリケーションを作れます。 これは開発リソースが限られたスタートアップにとって非常に魅力的です。

さらに、バックエンドもTypeScriptで統一したFull-Stack TS構成にし、monorepoで管理することで、AI Agentの理解度が高まり、開発効率がさらに向上します。

3. React Nativeに勢いがある

元記事にもあるように、日本ではまだFlutterの方が優位ですが、世界的にはReact Nativeの勢いが非常に増しています。

私はGitHubのTrendingでSwiftやKotlinの言語を毎日ウォッチしていましたが、ここ5年ほど大きな変化が見られなくなりました。 これはネイティブアプリのコミュニティが成熟した証でもありますが、10年前のように毎日新しいライブラリが登場してワクワクする気持ちは少なくなっていました。

一方、React Nativeではここ1〜2年で非常に多くのライブラリが登場しており、10年前のモバイルアプリ界隈のような活気があります。 こういった点が、私が最もReact Nativeに惹かれている理由です。

4. ネイティブのAPIを活用している

React NativeはJavaScriptからネイティブのUIをレンダリングしています。 そのため、ScrollViewなどReact Nativeで提供されているコンポーネントは、ネイティブと変わらないルック&フィールを実現できます。

また、Expo UIのUIコンポーネントやReact Navigationのページ遷移、ナビゲーション、タブなど、ネイティブのAPIを使ったライブラリを活用することで、ネイティブと同等のUIや画面遷移を実装できます。

こういったプラットフォームごとのルック&フィールは、これまでiOSとAndroidでそれぞれのプラットフォームのUIにこだわってモバイルアプリを開発してきた自分にとって非常に重要でした。

また、ネイティブのAPIがReact NativeのAPIを通して使われることで、React Nativeの内部動作も想像しやすいという点も、自分にとってメリットでした。

5. JavaScriptエコシステムの強さ

React Nativeを利用する際、JavaScriptの豊富なエコシステムを活用できます。先述のStorybookや、Vitest、Biome、OxcなどのTest/Lintツール、JotaiやZustandといった状態管理ライブラリなど、充実したJSエコシステムを利用可能です。

また、React NativeのUIから画面単位までStorybookやReact Native for Webでブラウザ上で動作させることで、PlaywrightやVitest Browser Modeなど、ヘッドレスブラウザを使ったテストも実行できます。 Webでの挙動は実際のモバイルアプリと異なる場合があったり、ネイティブのAPIを扱えないこともありますが、基本的な動作のシミュレーションとしては十分に機能します。

このようにJavaScriptやWebの資産を活用できることが、React Nativeの大きな特徴です。

AIとの共同作業とCI/CDの重要性

今後、AI Agentを使ったコーディングは避けて通れない道になるでしょう。私自身、今年の後半以降、自分が書いたコードよりもAIが生成したコードの方が多いのではないかと感じています。 2026年以降はこの割合がさらに増え、最終的に人が書くコードの量はごくわずかになるのではないかと考えています。

そうなったとき、言語的にもメジャーで資産の多いTypeScript/Reactの構成を採用しておくことで、より大きな恩恵を受けられるはずです。

また、先述のVitestやBiomeといった高速なテスト・リントツールの利用は、AIを活用した開発においてより重要になります。 Playwright MCPを使えば、AIがブラウザの動作を制御でき、React Native for WebでReact NativeアプリをWeb上で動作させることで、AI Agentがアプリの振る舞いの確認やテストを行いやすくなります。

さらに、ExpoのUpdatesといったOTA(Over-The-Air)配布を利用すれば、開発ブランチをネイティブアプリのビルドなしで変更でき、従来のネイティブアプリのQA配布をより手軽に、迅速に行えます。

これらのCI/CDは、AIとの共同作業においてより重要性を増すと考えています。CI/CDの速度が向上すれば、AIとの開発イテレーションを高速化でき、より効率的な開発が実現できるはずです。

React Nativeは銀の弾丸か?

ここまでReact Nativeを評価してきましたが、全ての人がReact Nativeを使うべきだとまでは思っていません。 こちらの記事にも書いたように、私自身もいくつか不満な点があります。 そういった部分が気になる方は、別の選択肢を検討しても良いでしょう。

https://zenn.dev/tellernovel_inc/articles/cfd14c9acab294

特に、モバイルアプリ開発やJavaScriptに触れた経験がなく、プラットフォームのルック&フィールに沿ったアプリにする必要性が低い場合は、Flutterの方が適していると思います。 Flutterは1つのコードでモバイル、Web、デスクトップと、基本的にどのプラットフォームでも同じ見た目で動作するため、プラットフォームごとの細かな調整が不要という大きなメリットがあります。

また、これまでAndroidで開発してきてKotlinに慣れている方は、Kotlin Multiplatform(KMP)やCompose Multiplatform(CMP)という選択肢もありです。 KMPやCMPで構築すれば、後からiOSはSwiftUIで実装し、ロジックのみKMPのコードを利用するといったことも可能になり、書き直しのコストを削減できるメリットがあります。

さらに、最新のネイティブAPIをフル活用したい場合は、ネイティブで開発するのも良い選択です。基本的にクロスプラットフォームフレームワークでは、ネイティブのAPIをラップした抽象化されたAPIが提供されています。 それらの対応を待つか、自分でそれらのAPIを呼び出すNative Moduleを作成する必要があるため、対応に時間や手間がかかります。 そういったコストを考えると、最初からネイティブで開発するのも賢明な判断です。

このように、作りたいものや将来的な展望を考慮して、自分に合った選択をすべきだと思います。

まとめ

スタートアップに身を置く自分にとって、またこれまでの経験を踏まえると、React Nativeを選択することが最良の選択肢であると確信しています。

さらに、これからのAI Agentとの開発において、高速に開発イテレーションを回せるという点でも、他の選択肢より優れているのではないかと考えています。

2026年、国内でもReact Nativeがより注目されることを願っています。