
こんばんは! @peka3 と申します。
エンジニアをやってます。
2025年一番面白かったゲームは 魔法少女ノ魔女裁判 です! デスゲームから始まる人間ドラマが好きなかたは刺さるので是非。
...
最近、iOSとAndroidのネイティブアプリとして出している モンスト攻略アプリ を、React Native + Expo環境に移行しました。
この手のリプレイスは企画を通すのが大変だと思うんですが、今、材料が揃っていて本当に時期がいいと思ってます。
この記事では、企画を通す上で必要になりそうな、いつやるのか、今でしょ!の根拠を書いてます。あと実際の感想もちょっと書きました。
コードは1行も登場しません。
参考になれば幸いです。
30秒まとめ
- iOS / AndroidネイティブアプリをReact Native + Expoに移行した
- Web技術に強いチームの力を最大限活かす
- Claude Code, Codex, OpenCode と言った AIエージェントとの相性が抜群に良い
- 広告SDKまわりだけ要注意。それ以外はExpo一択でいいレベル

なぜReact Native + Expoに移行したのか
考えるきっかけは、スマホのネイティブアプリの専任メンバーが少なくなったからです。
一方でReactを触れるエンジニアはたくさんいます。
その層が直接モバイルアプリを触れるようにしたほうが、開発が滞りなく進められるという判断です。
もうひとつ先の話をすると、今後はAIエージェントによってどんどん機能追加やリリースのサイクルが速くなるアプリが増えていくと思ってます。
そこに備えて、高速にPDCAを回せる基盤を整えておきたかったというのもあります。
React Native + Expoはその土台として最適でした。
React Native + Expoを選んだ理由
ネイティブアプリをクロスプラットフォームな開発環境に移行する際、FlutterとReact Nativeのどちらにするかで悩むところだと思うのですが。
今回は正直なところ、React Native + Expo一択かなと思っていました。
Flutterを選ばなかった理由
Flutterも良いフレームワークで、 社内でも 以前Flutterでアプリを開発したこと がありますが、今回のケースでは考慮ポイントの違い、当時との状況の変化があります。
前述した通りのチームの技術スタックとしてReactの知識が使えるといいこと、加えてFlutterのアーキテクチャの違いも今回は気になりました。
React Nativeはプラットフォームのネイティブコンポーネント(iOSならUIKit、AndroidならAndroid View)をそのまま使います。
一方Flutterは独自レンダリングエンジンで自前でUIコンポーネントを描画する方式です。
これが光るケースもあると思うのですが(最近出たゲームエンジンなど)、OSのUIデザインが変わったときにFlutterは自力で追従しないといけません。
わかりやすい例が、iOS 26のLiquid Glass対応で、ExpoはiOSのネイティブコンポーネントをそのまま使えるのですぐ対応できます。
今後も新しいOSのデザイン変更が来るたびにこの問題は繰り返されるので、長期的にリスクが低いのはReact Nativeだと判断しました。
あとFlutterは2024年にGoogleがチームのレイオフを行っていたり、PRが長期間放置される問題からフォークが立ち上がっていたりと、エコシステムの先行きにやや不安があるのも気になりました。
Expo が安い!
Expoはなんとシート課金ではなく、ビルド回数など使用量ベースの課金です。
後述していますが、OTAアップデートを使わなければかなり安く済みます。
金額面でアウトになる可能性はかなり低いかなと思われます。
Expo と AIエージェントとの相性が抜群に良い
個人的に一番推したいポイントです。
自分は最近ほぼすべての開発をAgentic Codingでやっていますが、Expoの開発体験はAIエージェントと組み合わせたときに真価を発揮します。
以下でもうちょっと深堀ります。
Expo と AIエージェントとの相性の良さ
CLIベースで操作が完結する
ExpoはCLIベースで操作が完結します。ビルド、配信、設定、だいたいコマンドを叩くだけで終わります。
EASを使えばビルドからストア提出まで eas build → eas submit でCLI完結します。
AIエージェントはCLIのほうが圧倒的に得意なので、ここの相性が良いです。
Agent Skillsとの噛み合わせが良い
Expo公式がAgent Skillsを提供しています。
Claude CodeやCodexなどのAIエージェントがこれらを使って、よくやる作業をまるごとコマンドを叩いて代わりにやってくれます。
もちろん、いい感じにアプリを作るためのskillsまであるので、初めてアプリを作る場合もかなりの助けになるかと思われます。
最近鉄板になりつつある skills + CLI の仕組みがExpoは整っているのです。
ネイティブコンポーネントなのに、 Fast Refresh(ホットリロード)が効く
ExpoにはFast Refreshがあり、コードを変更したら即座に実機やシミュレータに反映されます。
Xcodeでのネイティブ開発を経験した人ならわかると思いますが、ちょっとした修正のたびにビルドし直すあの待ち時間がなくなります。
AIエージェントとの組み合わせだとこれがさらに効いてきます。
AIエージェントに「ここ直して」と言うだけで、コード変更→即反映→確認のループが爆速で回ります。
AIエージェントが移行コストを激減させた
Claude Code、Codex などのAIエージェントが成熟してきたことで、移行するかどうかの意思決定のコスト感がまるっきり変わりました。
今回、自分が実際にやったのは、既存のネイティブアプリのソースコードと画面仕様書・API仕様書をまるごとリポジトリに入れて、AIエージェントの参照材料にするというやり方です。 あとは「既存のネイティブアプリをUIも挙動もそのままに、React Native + Expoで作り直して」と言うだけです。AIが仕様書とソースコードの両方を読んで、画面構成・API呼び出し・ナビゲーション構造を再現してくれます。
以前なら20画面くらいあると、数ヶ月の工数をかける大きな意思決定でした。
その間、機能改修も入るし追従もしないといけないし…など考えること多数でした。
それが今や20画面くらいなら数時間で移行できます。
もちろん確認や細かいところの調整が必要になるので、それで終わりとはなりませんが、トータルの工数は圧倒的に減ります。
React Native + Expo環境へ移行する前に考慮すべきポイント
どこまで再現できるのか、どこまで道具があるのかネイティブアプリ開発者なら気になるとこだと思います。
とりあえずよくある考慮部分について以下にまとめてみました。
広告SDKとビジネスサイドとのすり合わせ
AdMobやAppLovin MAXは公式のReact Native SDKがあります。
それ以外の多くの広告SDKはSwift / Kotlinでネイティブモジュールを自分で書く必要があります。 要するに、結局ネイティブアプリ開発の知識が必要になります。
広告の要件次第では、移行自体を見送る判断もありかなと思います。
ここはビジネス側とすり合わせる必要がある部分で、エンジニア的にはちょっと気が重いところ。。。
今まで書いてきたExpo環境のメリットをしっかり理解してもらい、手抜きではなく大きな価値があることを伝えます。
Firebase は使えます
ネイティブアプリ開発のおともによく使われるFirebaseは引き続き使えます。
@react-native-firebase がしっかりしているので、ここは特に困りませんでした。Analytics、Remote Configあたりは普通に使えます。
Push通知は既存の基盤をそのまま使える
今回はFirebase Cloud Messaging(FCM)をそのまま使いました。
Expo公式にもPush通知の仕組み(expo-notifications)はありますが、少し貧弱だったのであまりおすすめしません。
既存のPush基盤があるなら、そのまま使うのが良いと思います。
OTAアップデートは使いませんでした
ExpoにはOTAアップデート(EAS Update)という仕組みがあり、ストア審査なしでTypeScriptのコード変更を即座にユーザーに配信できます。
便利ではありますが、料金がそれなりにかかるのでよく調べてから使ったほうが良いと思います。
自分は使っていません。
使わなかったとしても、今までのネイティブアプリと同じようにストア申請して出すだけなので、何かマイナスがあるわけではないです。
実際やってみての感想
iOSアプリエンジニアとしてXcodeでこつこつobjc、swiftを書いていた身として…驚くほど快適になりました。
レガシーだった開発体験が一気にモダンに変わったなという衝撃度合いで…
特別な理由がないのであれば、もうExpoで開発したほうが良いのでは?と思っています。諸説あるかもですが、、、自分はそう思いました。
Xcodeで都度ビルドして動作確認するあの時間から解放されたのが一番大きいです。
書いたコードがそのままアプリに瞬時に反映されますし、iOSシミュレータでも実機でもどちらでもそれができます。
SwiftUIならXcodeのプレビュー機能が使えますが、挙動が重くて、あまり使いたくないです。
React Native + Expoなら、AIエージェントの開発速度がそのまま反映される開発基盤になるので、バグ修正も新機能追加も、かつてない速さでできています。
ストア申請のフローもAIエージェントに命令して確認するだけで完了します。
App Store Connectはある程度触る必要が残っていますが、それでもめちゃくちゃ楽になってます!
最後に
GameWithではエンジニアを絶賛募集中です!
サーバーエンジニアやフロントエンジニアの方、AIに興味がある方もお気軽にカジュアル面談をお申し込みください!