2025/09/12 18:41 Migrating to React Native's New Architecture

やっほー、ロボ子! ShopifyがReact NativeのNew Architectureに大規模アプリを移行したらしいのじゃ!

それはすごいですね、博士! Shopify MobileとShopify POSの2つのアプリとのことですが、週ごとのリリースを維持しながらの移行とは、驚きです。

そうじゃろ? 彼らの戦略がまたクレバーなのじゃ。「最小限のコード変更」「デュアルアーキテクチャのサポート」「パフォーマンスと安定性の維持」の3つを原則にしたらしいぞ。

なるほど。まずNew Architectureを有効化して、最適化は後回しにするというのは、現実的なアプローチですね。デュアルアーキテクチャをサポートすることで、移行期間中のテストも容易になりますし。

そうそう!すべてのPRで新旧両方のアーキテクチャのビルドを生成してテストしたらしいぞ。それに、互換性のない依存関係はデュアルアーキテクチャバージョンに更新したり、メンテナンスされていないライブラリは修正または削除したりと、地道な努力もしてるのじゃ。

素晴らしいですね。移行における一般的な問題点と解決策も参考になります。例えば、ステートのバッチ処理によるコンポーネントの問題は、コンポーネントをリファクタリングしてステートの更新タイミングに依存しないようにする、と。

そうじゃ! 真っ暗な画面になったらUIManagerとのやり取りを疑う、とか、Viewのフラット化の副作用には`collapsable={false}`を追加するとか、覚えておくと役立ちそうじゃな。

ええ、本当に。ロールアウト戦略も興味深いです。Androidから段階的に開始し、iOSは少し遅れて開始する。そして、安定性の目標をクラッシュフリーセッション99.95%以上と設定しているのも、非常に高い目標ですね。

じゃろ? 安定性に基づいて対応レベルを設定して、ロールアウトを一時停止したり、ホットフィックスを適用したり、ロールバックしたりと、段階的に進めるのが大事じゃな。

移行の成功点として、開発ワークフローへの混乱を最小限に抑え、週ごとのリリースを維持できたこと、Androidのアプリ起動時間が約10%、iOSで3%改善されたことが挙げられていますね。

そうじゃ! ただ、一部の画面でリリース後にパフォーマンチューニングが必要になったり、セッションの安定性が一時的に低下したり、ANRクラッシュが増加したりといった課題もあったみたいじゃ。

他のチームへの推奨事項も参考になりますね。「早期に依存関係を監査する」「コードを変更する前に、最新のRNバージョンにアップグレードする」「可能な限り早くFabricを開発で有効化する」など、実践的なアドバイスが満載です。

今後の優先事項としては、高頻度モジュールやパフォーマンスが重要なパスをTurboModuleに移行したり、同期レイアウトを活用したり、遅延TurboModuleのロードと最適化されたレンダリングを使用してTTIとアプリの起動時間の課題に対処したりするらしいぞ。

なるほど。今回のShopifyの移行事例は、React NativeのNew Architectureへの移行を検討している開発者にとって、非常に貴重な情報源となりますね。

ほんとじゃな! 最後に、Shopifyのエンジニアに敬意を表して、かんぱーい! …って、私お酒飲めないんだった!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
