プログラミング
Shopify、React Nativeからネイティブ開発へ回帰
Shopify moves back to Native from React Native (shopify.engineering)
要約
Shopifyは、AIコーディングエージェントの進化により、React NativeからSwiftとKotlinによるネイティブ開発へ回帰することを発表しました。以前はクロスプラットフォーム開発の効率化のためにReact Nativeを採用していましたが、AIの支援によりネイティブ開発のコストが大幅に低下し、プラットフォーム固有の機能へのアクセスやパフォーマンスの向上が可能になったため、この決定に至りました。
全文翻訳
Shopifyは、モバイル開発の未来としてネイティブ開発を採用します。コーディングエージェントはモバイルアプリ開発のコストを2度変えました。ShopifyがReact NativeからSwiftとKotlinへ回帰する理由を説明します。
2020年にReact Nativeに全面的に賭けることを決定し、それは非常に成功しました。一度だけ機能を作成することで多くの時間を節約し、モバイルのバックグラウンドを持たない開発者がアプリに貢献できるようにし、常に機能の同等性を追いかけることから解放されました。2025年1月、私はReact Nativeの未来は明るく、Shopifyは投資を続ける計画だと書きました。それは当時私たちが知っていたことによれば真実でした。React Nativeは私たちにとってうまく機能しており、優れたフレームワークであり続けています。しかし、それ以来、コーディングモデルは劇的に改善され、私たちのアプリとチームにとって、SwiftとKotlinで同じ機能を作成するコストはもはや以前ほどかかりません。私たちは、その時点で成功したという理由だけで決定に固執しません。コアとなる前提が変わったとき、それがまだ正しい判断かどうかを再検討する意思があります。LLMは、2020年の決定の根拠となるコアとなる前提の1つを変えたため、私たちは最初からモバイルスタックを再評価しました。そこで見出したものが、私たちをネイティブへと導きました。
ネイティブへの切り替え理由
2020年にネイティブからReact Nativeへ切り替えることを決定したのは、3つの理由からです。
* 同じ機能を2度作成するのをやめる
* 開発者がスタック全体で作業できるようにする
* 機能の同等性を追いかける時間を減らし、価値を提供する時間を増やす
React Nativeは一貫してこれらの利点をもたらしました。パフォーマンスの最適化、React Nativeの主要な基盤領域の改善、フレームワークのアップデートや外部依存関係の追従にかなりの時間とリソースを費やしましたが、これらは許容できるトレードオフでした。React Nativeを使用する利点は、これらの領域に費やす必要があった投資をはるかに上回っていました。
Shopifyは2021年(ChatGPTの1年前)からLLMを使用してソフトウェアを構築してきました。当初は、機能の実装、バグの調査と修正、コードレビューに使用していました。モデルが改善するにつれて、それらに任せる作業の複雑さも増しました。2025年末までに、それらは単にコードをより速く書くのを助けるだけではなくなっていました。ソフトウェアを2度作成することが、依然として2倍の作業を意味するのかどうかを私たちに疑問視させる能力を持っていました。私たちはモバイル技術スタックを再評価することを決定し、技術選択がまだ通用するかどうかを確認するためにプロトタイピングを開始しました。LLMを使用して、SwiftとKotlinで最大のアプリのいくつかのコア部分を再構築し、それがどれほどうまく機能したかに驚きました。
エージェント:
* iOSバージョンを参照としてAndroidで機能実装が可能、またはその逆も可能
* 開発者がランプアップし、プライマリスタック外で効果的に貢献できるように支援
* 共有仕様、テスト、レビューチェックポイントを通じてプラットフォーム間の同等性を維持するコストを劇的に削減
ネイティブは依然として2つのプラットフォームでソフトウェアを構築・保守することを意味し、そのコストは消えていません。変わったのは、エージェントが実装、翻訳、テスト、レビュー作業の多くを実行できるようになり、2020年当時ほどの決定要因ではなくなったことです。React Nativeアプリは高速になり得ます。私たちのアプリはそうです。私たちは、エージェントが実装の共有の利点を減らし、各プラットフォームで構築する利点が残っているため、この変更を行っています。ネイティブは、フレームワークや依存関係のレイヤーがコードとプラットフォームの間に少なく、プラットフォームの機能とファーストパーティーツールに私たちを近づけます。
React Nativeオープンソースライブラリの未来
移行方法に入る前に、この移行をクリーンに行いたいと考えています。当初から、React Nativeをより良くするために貢献したいと考えていました。私たちは、それぞれのカテゴリでトップの選択肢となったオープンソースライブラリを公開してきました。コミュニティからの素晴らしい反響に感謝しており、これがスムーズな移行であり、驚きがないことを保証することにコミットしています。
React Native Skia
Shopifyは2026年末までこれをスポンサーし続け、William Candillonはそれ以降も開発を続けます。彼は数ヶ月以内にリポジトリをフォークし、新しい名前でライブラリを公開し始めます。この移行が完了すると、元のリポジトリはアーカイブされます。私たちは随時アップデートを投稿するので、誰もが移行するのに十分な時間があります。このライブラリに依存している場合は、スポンサーになることを検討してください。
FlashList
このライブラリは週に約200万ダウンロードされており、React Nativeで高性能なリストをレンダリングするデフォルトの方法となっています。エコシステムにとって非常に重要であるため、Shopifyは互換性を壊す重大な問題の修正を続けます。現在、FlashListの長期的な管理を引き受けるいくつかの企業と交渉中です。興味のある方は、こちらにご連絡ください。
Restyle
Restyleは他のライブラリよりもユーザーベースが少ないため、このリポジトリをアーカイブします。2026年末まで動作させ、その後はメンテナンスを停止します。誰でもフォークして引き継ぐことができます。チームが引き継ぎたい場合は、手助けします。
移行方法
Shopifyには、Shopify、Shop、Point of Sale、Inboxなど、いくつかの大規模なアプリがあります。世界中の何百万人ものマーチャントとバイヤーが、生計を立てたり、愛するブランドから欲しい商品を購入するために、毎日それらに依存しています。段階的にネイティブへ移行する(ブラウンフィールド)か、ゼロから再構築する(グリーンフィールド)かで議論しました。過去にReact Nativeへ移行した際、いくつかの最大のアプリでブラウンフィールドアプローチを選択しました。それらを書き直すには何年もかかり、書き直し中に新機能のリリースを停止する必要があったからです。しかし、今回はグリーンフィールドが明確な勝者となりました。その理由は以下の通りです。
* LLMは、React Nativeバージョンを参照としてSwiftとKotlinで機能を作成するのに適しています。
* 以前の制約なしに、最良の方法で再構築するためのクリーンなスタートが得られます。
* 私たちのプロトタイプは、コーディングエージェントが可能だったよりも大幅に速くこれらのアプリを再構築できることを示しました。
アプリストアのショッピングカテゴリで常に上位にランクインしているShopアプリが、最初に移行されました。AIの支援により、チームは概念実証から、わずか12週間でアプリストアで公開される完全に再構築されたネイティブアプリへと移行できました。この移行については、こちらで詳しく説明しています。Shopifyアプリ(300以上の画面、ホーム&ロック画面ウィジェット、Apple Watchアプリ、コンプリケーション、Siriショートカットなどを持つ、私たちの最大のアプリ)の移行も進行中であり、今年後半に出荷されます。残りのアプリもすぐに移行されます。
スロップ(コードの質の低下)の防止
LLMにReact Nativeコードベースを指示して、ネイティブで同じ機能を一発で作成しようとするのは魅力的ですが、うまくいきません。たとえ、事前にできるだけ多くの情報を収集し、それを仕様、タスクファイルに固め、それから実装するように指示したとしても、出荷できないメンテナンス不可能なコードが大量に生成されてしまいます。この問題に対処するために、私たちはHelixというシステムを構築しました。これはより段階的なアプローチを取ります。最初の出力が正しいとは期待せず、不完全な試みが良い結果になるまで前進できないループを構築します。開発者はHelixを画面に向けます。HelixはReact Nativeコードを読み取り、数分でレビューできるチェックポイント(作業の小さく順序付けられたスライス)のシーケンスを提案します。次に、チェックポイントごとに、それは構築します。各チェックポイントはテストでその動作を証明し、視覚レビューで実行中のアプリと一致し、2人の敵対的なコードレビュー担当者を通過し、人間の承認を得てからコミットされ、次のチェックポイントが開始されます。すべてのレビューからのフィードバックは記憶されるため、移行が進むにつれてループはより自律的になります。
HellixがSwiftとKotlinを使用してShopifyモバイルアプリの画面を再構築している様子
このアプローチは非常にうまく機能しており、以前の時間のほんの一部でアプリを再構築することを可能にしています。高速フィードバックループの有効化