新アーキテクチャの展開に関するアップデート
皆さん、こんにちは。以前のお知らせの通り
2022年は、オープンソースにおける新しいアーキテクチャの年となるでしょう。
まだ新しい React Native アーキテクチャ (Fabric Renderer と TurboModule システム) を調べる時間がなかったとしても、今ほど良い時期はありません!
この取り組みに全員が参加できるように、私たちが準備したいくつかのイニシアチブと資料をコミュニティと共有したいと思います。
ワーキンググループ
最近、GitHubでReact Native New Architecture Working Groupを立ち上げました。これは、新しいアーキテクチャのエコシステム全体への展開を調整し、サポートするためのディスカッションのみのリポジトリです。
このワーキンググループは、コミュニティが新しいアーキテクチャの採用中に出会い、アイデアを共有し、課題を議論するための場となることを目指しています。さらに、このワーキンググループを使用して、透明性を保つために幅広いコミュニティと情報や更新情報を共有します。
議論に焦点を当てるため、このワーキンググループは公開で読み取り可能にし、承認されたユーザーのみが書き込み可能に制限することにしました。
会話に参加したい場合は、このフォームに記入して、議論に価値のある貢献者となると思われる人を応募または推薦できます。
会話に参加するすべての人を歓迎します。
他のディスカッションフォーラムと同様に、他者の意見に対して敬意を払い、歓迎することの重要性を改めて強調したいと思います。まだお読みでない場合は、ぜひ行動規範をお読みください。
移行ガイド
数回のレビューとフィードバックを経て、ついに移行ガイド(旧称:プレイブック)がマージされました。これは新しいアーキテクチャワーキンググループで確認できます。
この移行ガイドでは、ステップバイステップのアプローチでカスタムFabricコンポーネントまたはTurboModuleを作成する方法を示します。このガイドでは、既存のアプリやライブラリを新しいアーキテクチャに対応させる方法も示します。
さらに、私たちのウェブサイトの新しいアーキテクチャセクションを思い出していただきたいと思います。そこには、React Nativeの内部に関する詳細な記事や説明がいくつかあります。特に、Fabricセクションは、新しいアーキテクチャの世界におけるレンダリングパイプラインを理解するのに役立ちます。
最後に、このドキュメント資料に関するワーキンググループにフィードバックを共有することを検討してください。私たちは常に開発者の意見を求めており、最も役立つコンテンツを提供していることを確認したいと考えています。
今後数か月間、私たちはあなたをさらに支援するために、より多くのドキュメントを洗練させ、追加することに取り組んでいきます。
新しいアーキテクチャテンプレート
React Native 0.68.0がまもなくリリースされます。このバージョンのReact Nativeは、新しいアプリテンプレートにオプトインスイッチが含まれる最初のバージョンであるため、新しいアーキテクチャのロールアウトにおける重要なマイルストーンとなります。
これは、テンプレートの1行を変更するだけで新しいアーキテクチャを試すことができることを意味します。また、テンプレートには広範なコメントとドキュメントも追加されており、すぐに使えるように追加の読み込みが必要ないようにしています。これにより、記述する必要があるコードの量を減らすことで、新しいアーキテクチャの採用を支援できることを願っています。
今後のリリースでは、テンプレートをさらに合理化し、使いやすくするために更新を続けていきます。
いずれかのプラットフォームで新しいアーキテクチャを有効にするには、以下の手順を実行します。
- iOSでは、`ios`フォルダ内で`RCT_NEW_ARCH_ENABLED=1 bundle exec pod install`を実行します。
- Androidでは、以下のいずれかの方法で`newArchEnabled`プロパティを`true`に設定します。
- `android/gradle.properties`ファイル内の対応する行を変更します。
- 環境変数`ORG_GRADLE_PROJECT_newArchEnabled=true`を設定します。
- `-PnewArchEnabled=true`でGradleを呼び出します。
その後、`yarn react-native run-android`または`run-ios`でアプリを実行すると、FabricとTurboModulesが有効になった状態で実行されます。
この新しいテンプレートをぜひお試しいただき、発生する可能性のあるバグや予期しない動作があれば、ご報告ください。過去数か月間、私たちはコミュニティからの継続的なフィードバックとテストがなければ見つけるのが難しかったバグやビルドの失敗を修正するために懸命に取り組んできました。
サードパーティライブラリエコシステム
サードパーティライブラリの作者とメンテナーの全面的なサポートなしには、コミュニティは新しいアーキテクチャに移行できません。
これが面倒なプロセスであることは理解しており、古いアーキテクチャと新しいアーキテクチャの両方のユーザーをサポートすることの重要性を理解しています。今後数か月間、私たちはライブラリ開発者をサポートし、移行を支援することに重点を置きます。
ライブラリ開発者の方は、新しいアーキテクチャのワーキンググループで、ライブラリのステータスに関する更新を投稿することをお勧めします。これにより、初期の採用者を惹きつけ、どのライブラリが問題に直面しているかを理解するのに役立ちます。
ライブラリユーザーの場合は、こちらにメッセージを投稿して、ライブラリの移行をリクエストできます。多数のユーザーにとって障害となるライブラリを特定した場合、私たちはメンテナーに連絡し、まだ移行していない理由を理解しようとします。
最後に、両方のアーキテクチャをサポートする`react-native-screens`の新しいバージョンをリリースしたSoftware Mansionに感謝したいと思います。さらに、彼らは彼らの移行ストーリーを語るブログ投稿(Introducing Fabric to react-native-screens)を公開しました。このストーリーがあなたの移行に取り組む上で刺激的で役立つことを願っています。
リリース
0.68プレリリースに関する作業により、前回の後半で定義したリリースプロセス改善の多くが実現しました。
0.68で、私たちは以下のことができたことを喜んでお知らせします。
- リリース作業を社内ローテーションにうまく組み込むことができました。これは、リリースプロセスのバスファクターを軽減するリリースプロセスに関する改善されたドキュメントによって多くがサポートされています。
- Copilotローテーションをサポートするためのパートナーとの議論を開始しました。この取り組みにより、プロセスの透明性が向上し、React Nativeのリリースとエコシステムをサポートするためにどこに投資すべきかをパートナーに伝えることができるようになることを願っています。
- コミュニティから数名のリリースサポーターとテスターを参加させました。前回の後半で助けを求めたところ、非常に多くの方が協力してくれました!テスターとサポーターからのフィードバックは、特に新しいアーキテクチャに関する、今後のリリースのための重要なバグと回帰を修正するのに役立ちました。参加してリリースをテストしてくれたすべての方々に感謝いたします!
React Native 0.69では、このプロセスをさらに洗練させ、理想的にはパートナーがより早いリリースシグナルを提供し、コパイロットを参加させることを目指します。いつものように、どのようなフィードバックも大歓迎です。リリーステスターまたはサポーターとして参加したい場合は、こちらからサインアップしてください。
Hermesをデフォルトエンジンへ
新しいアーキテクチャのロールアウトにおける重要な点の1つは、新しいJavaScriptエンジンであるHermesの採用です。
新しいReact Nativeアーキテクチャでは、Hermesをデフォルトエンジンとして設定します。これは、すべての新しいドキュメントとテンプレートでHermesが有効になることを意味します。
JSC (JavaScript Core) などの他のエンジンもサポートされるように、コミュニティと引き続き協力していくことにご留意ください。ご希望のエンジンを使用できますが、Hermesを明示的に無効にする必要があります。
Hermesの安定性を向上させるために、Hermesの配布モデルの変更に取り組んでいます。具体的には、HermesのリリースプロセスをReact Nativeのリリースプロセスに近づけることを考えています。
これにより、完全に互換性のあるバンドルされたJSエンジンを含むReact Nativeのバージョンを出荷できるようになります。デバッグや理解が非常に困難なランタイムクラッシュやHermesの非互換性に対処する必要がなくなります。
さらに、これによりHermesの改善とバグ修正を取り込むサイクルが短縮され、React Nativeユーザーのニーズに対してより迅速に対応できるようになります。
この件については、今後数か月でさらに詳しくお伝えする予定です。それまでの間、ワーキンググループでディスカッションに参加してください。
まだHermesを試していない場合は、今が試す時です。また、問題や障害が発生した場合は必ず報告してください。
これで終わりです。
このブログ記事をレビューし、これらの取り組みに貴重な貢献をしてくれたAndrei、Aleksandar、Dmitry、Eli、Luna、Héctor、Neilに感謝します。
そして、あなたの移行ストーリーを読むのを楽しみにしています。
