概要
React Confで、React Nativeアプリの開始に最適なツールに関する方針を更新しました:React Nativeフレームワーク — 本番環境に対応したアプリを構築するために必要なAPI群をまとめたツールボックスです。ExpoなどのReact Nativeフレームワークを使うことが、新しいアプリを作る推奨アプローチになりました。本記事ではフレームワークとは何か、その詳細と、新規プロジェクトを始めるReact Native開発者にとって何を意味するかを説明します。
React Nativeフレームワークとは?
もしすでに本番アプリを構築しているなら、遅かれ早かれ直面する共通の問題群があることはご存知でしょう。Webでもネイティブでも、アプリでは通常、画面遷移(routing/ navigation)、データ取得、ユーザーの状態の保存などが必要です。しかしネイティブアプリではさらに対応が必要なものが増えます:
- React Nativeのバージョン間でネイティブコードをアップグレードするためのツール
- 依存関係の互換バージョンの管理
- ネイティブビルドツールの扱い
適切なツールがなければ、アイデアを本番に持っていくには多大な労力がかかります。私たちは、開発者がユーザー向けの美しいアプリや機能の作成に集中できるよう、これらの共通課題を繰り返し解決するのではなく、必要なツール群を提供するフレームワーク経由でReact Nativeを体験することが最良だと考えています。
実際、多くの人は“フレームワークを使っている”か“自分でフレームワークを作っている”かのどちらかです。ルーティングやナビゲーション、デプロイのための独自ソリューションを作るのは間違いではありません。MetaやMicrosoftのような大手企業は、自社の既存アプリ(brownfield apps)へ深く統合するために内部用のフレームワークを構築しています。しかし、ほとんどの人にとっては既存のフレームワークを使う方が良い結果を生むと考えています。
WebでのReactを使った経験があるなら、同様の“プロダクショングレードのReactフレームワーク”という概念に馴染みがあるでしょう。現時点でReact Native向けに推奨されるコミュニティフレームワークはExpoのみです。ExpoチームはReact Nativeの初期からエコシステムに投資してきており、現在においてもExpoが提供する開発者体験は最高レベルであると私たちは考えています。
注:Expo(フレームワーク自体)は今後も無料でオープンソースのままです。一方でExpo Application Services (EAS) はオプションの有償サービスです。
もし最近Expoを試していないなら、Kadi @ Expoによる2024年のExpoの紹介トークを見逃さないでください。私たちはまた、ウェブサイトのGetting Startedページもこの推奨に合わせて更新しました。
フレームワークはあなたにどう影響するか?
- 既にExpoなどの推奨フレームワークを使っている場合:そのまま問題ありません。
- 既存のアプリをExpoに移行したい場合:公式Expoサイトに移行手順があります。
Expoを使うメリットの例:
- React Nativeのバージョンアップが容易になる
- 開発者体験(DX)が向上する
- そのほか多数の利点
ただし、どうしてもExpoに移行できない、あるいは移行したくない場合でも問題ありません。フレームワークを使わないReact Nativeの利用は引き続きサポートされます。これまで使ってきたツール(React Native Community CLI、Template、Upgrade Helperなど)は従来通り動作し続けます。
なお、react-native initコマンドはコアから外れ、現在は以下から利用できます:
npx @ react - native - community / cli @ latest init
およびGitHub上の react-native-community/cli にあります。
もしあなたがReact Nativeライブラリの開発者であれば、どのAPIを使うべきかの推奨事項をまとめています。詳細はRFCを参照してください。
さらに読む
この決定の背景にある考え方をより詳しく知りたい場合は、RFC0759: React Native Frameworks をお読みください。このRFCはReact Nativeエコシステムのさまざまなパートナーや関係者との数か月にわたる議論とブレインストーミングの成果です。
現時点でExpoが唯一の推奨フレームワークですが、RFCには推奨フレームワークになるためのガイドラインも含まれており、この分野でより多くの競争とイノベーションが生まれることを期待しています。
また、短い形式でこのRFCと必要な変更点を紹介したトーク useFrameworks() at App.js 2024 もぜひご覧ください。
私たちは、React Native Coreとフレームワークそれぞれの責任範囲を明確にすることで、より健全なエコシステムを促進し、React Nativeの成長とイノベーションを後押しできると信じています。