React Nativeの記事(1/2 、2/2、おまけ)は以前にも書きましたが、今回はMigrating our Largest Mobile App to React Nativeというブログを読んだ感想を書きます。
記事のタイトルから判るように、ネイティブ・アプリからReact Nativeに書き換えたということです!
https://reactnative.dev/showcaseより
React Nativeのイメージ
React Nativeは、Webフロントエンドで圧倒的に支持されているReactと同じようなコードでスマフォ・アプリを開発できるフレームワーク・ツールです。
私がReact Nativeの持っていたイメージは、スタートアップ企業等でWebサービスが開発完了し。スマフォアプリ(iOS、Android)を作りたいけど、iOSやAndoridのエンジニアを雇えない場合に選ぶ選択肢だと思っていました。
サービスが成長し、企業も成長しiOSとAndoridのエンジニアを雇えるようになったらReact Nativeからネイティブアプリに移行していくものだと思っていました。Airbnbの例が有名です。
しかしMigrating our Largest Mobile App to React Nativeは、逆方向の移行です!
React Native オワコン事件
そういえば、React Nativeを調べていたら「React Native オワコン」という記事が出てきました。2019年終わりころに現れ、早々に収まったようです。それらの記事にかかれているのは、
- AirbnbがReact Nativeを止めた、詳しくはAirbnbのブログ:Sunsetting React Native)
- AppleがSwift UIというネイティブコードでUIが簡単に開発できる技術を発表した
- GoogleがFlutterというマルチプラットフォームのアプリケーション開発フレームワーク・ツールを発表した
- React Nativeの開発が停滞した?(明確な時期は覚えていません)
などが重なり、日本ではオワコン感が出ていたようです。しかしnpmのダウロード数をみると世界的には着実に成長しているようで、オワコン感は日本だけの現象のようです。
なぜ、ネイティブ・アプリからReact Native
Migrating our Largest Mobile App to React Native記事に戻りましょう、
Shopifyという会社を知ってますか? ECサイトの構築や決済、配送、マーケティングなどのサービスを行う企業です。Wikipediaによると、現在カナダ最大の企業だそうです !! Rubyを使っている人にはYJIT で有名ですよね。
彼らのネイティブアプリはSpopifyを導入している商店や企業をサポートするためのツールで、6年にわたり開発・拡張が続けられ300画面もあるアプリだそうです。当然iOSとAndroid両方をサポートしています。
よく知られているように、iOSとAndroid両方に深い知識・経験を持つ開発者は非常に少ないですが、iOS/Androidどちらかの専門家はそれなりにいると思います。したがって、SpopifyでもiOSとAndroidの開発チームは分かれていました。
この記事を読んでいて驚いたのは、本来iOS/Androidに依存しないはずのビジネスロジックすらも大きく違っていたそうです。原因はiOS/AndoridのUIパーツやフレームワークの違いに引きずられてビジネスロジックが違うコードになってしまったそうです。
React Nativeにすることで、これらの問題から逃れることができ、新機能の追加等が非常に容易になったそうです。
移行作業
6年にわたり開発・拡張が続けられた300画面もあるアプリをどうやって移行するのかは大きな問題です。さらに日々機能追加・変更が行われているのも問題を複雑にします。
そこで、彼らはネイティブコードとReact Nativeを混ぜて開発できるようなベースを作り、新機能はReact Nativeで開発、従来のコードの置き換えも画面単位で行い、その際にUIデザインの更新も行っていったそうです。
また、React Nativeのコードを全てのiOS/Android開発者が行えるように、社内トレーニングプログラムを学習・開発チームと協力して作り、実施したそうです。
まとめ
6年にわたり開発・拡張が続けられた300画面もある巨大なアプリをReact Nativeで作る事(ここでは移行ですが)が出来るんですね。
React Nativeやるじゃないか!
過去に作られたアプリを他の言語やプラットフォームに移行する事を、考えて(悩んで)いる人は是非Migrating our Largest Mobile App to React Nativeを読んでみてください。英語ですが私はDeeplの翻訳を読みました。😊