React Nativeオープンソースアップデート 2019年3月
2018年第4四半期に、React Nativeオープンソースコミュニティへの投資を増やすことを決定した後、React Nativeオープンソースロードマップを発表しました。
最初のマイルストーンとして、私たちはコミュニティの最も目に見える側面を特定し、改善することに焦点を当てました。目標は、未解決のプルリクエストを減らし、プロジェクトの表面積を減らし、主要なユーザー問題を特定し、コミュニティ管理のガイドラインを確立することでした。
過去2ヶ月間で、私たちは予想以上の進歩を遂げました。詳細については、以下をお読みください。
プルリクエスト
健全なコミュニティを構築するためには、コード貢献に迅速に対応する必要があります。過去数年間、コミュニティ貢献のレビューを後回しにし、280のプルリクエストが蓄積されていました(2018年12月)。最初のマイルストーンでは、未解決のプルリクエストの数を約65に削減しました。同時に、1日あたりのプルリクエストの平均開設数が3.5から7に増加し、これは過去3か月間で約600のプルリクエストを処理したことを意味します。
プルリクエストのほぼ3分の2をマージし、3分の1をクローズしました。これらは、廃止されたもの、品質の低いもの、またはプロジェクトの表面積を不必要に増加させるものであった場合に、マージされずにクローズされました。マージされたプルリクエストのほとんどは、バグの修正、クロスプラットフォームの同等性の向上、または新機能の導入でした。注目すべき貢献には、型安全性の向上とAndroidXをサポートするための継続的な作業が含まれます。
Facebookでは、React Nativeをmasterから実行しているため、すべての変更はReact Nativeのリリースに含まれる前にテストされます。マージされたすべてのプルリクエストのうち、問題を引き起こしたのは6つだけで、4つは内部開発にのみ影響し、2つはリリース候補の段階で捕捉されました。
コミュニティからのより目に見える貢献の1つは、更新された「RedBox」画面でした。これは、コミュニティが開発者エクスペリエンスをより親しみやすいものにしている良い例です。
リーンコア
React Nativeは現在、Facebookであまり使用されていない多くの未メンテナンスの抽象化を伴う非常に広い表面積を持っています。私たちは、React Nativeをより小さくし、Facebookであまり使用されていない抽象化をコミュニティがより適切に管理できるようにするために、表面積を減らすことに取り組んでいます。
最初のマイルストーンでは、リーンコアプロジェクトへのコミュニティの協力を求めました。その反応は圧倒的で、すべての進捗にほとんど追いつけませんでした!1ヶ月足らずで完了したすべての作業をチェックしてください!
最も興奮しているのは、メンテナーたちが長年の問題を修正し、テストを追加し、長らく要望されていた機能をサポートするために飛び込んできたことです。これらのモジュールは、React Native内でのどの時期よりも多くのサポートを受けており、これがコミュニティにとって大きな一歩であることを示しています。そのようなプロジェクトの例としては、抽出以来多くのプルリクエストを受け取ったWebViewや、現在コミュニティのメンバーによってメンテナンスされ、必要な改善と修正が加えられたCLIがあります。
主要なユーザー問題
12月には、コミュニティにReact Nativeについて何が気に入らないかを尋ねました。私たちは回答をまとめ、一つ一つの問題に回答しました。幸いなことに、コミュニティが直面する多くの問題は、Facebookでも問題となっています。次のマイルストーンでは、主要な問題のいくつかに対処する予定です。
最も高い評価を得た問題の一つは、React Nativeの新しいバージョンへのアップグレードにおける開発者エクスペリエンスでした。残念ながら、私たちはReact Nativeをマスターから実行しているため、この問題を経験することはありません。幸いなことに、コミュニティのメンバーがすでにこの問題に取り組んでいます。
- CallstackのMichał Pierzchałaは、内部でrn-diff-purgeを使用することでreact-native upgradeを改善しました。また、古いアップグレード手順を削除するためにウェブサイトを更新しました。
- iOSプロジェクトではCocoaPodsをデフォルトで推奨する予定です。これにより、React Nativeのアップグレード時にプロジェクトファイルの変更が減ります。これにより、サードパーティモジュールのインストールとリンクが容易になり、Lean Coreのコンテキストでは、プロジェクトがデフォルトでより多くのモジュールをリンクすることを期待しているため、さらに重要になります。
0.59 リリース
React Nativeコミュニティ、特にMike GrabowskiとLorenzo Sciandraの協力なしには、リリースを出荷することはできませんでした。私たちはリリース管理プロセスを改善したいと考えており、今後はより積極的に関与していく予定です。
- 各メジャーリリースごとにブログ記事を作成するためにコミュニティメンバーと協力します。
- 新しいバージョンにアップグレードする際に、破壊的変更をCLIに直接表示します。
- リリースにかかる時間を短縮します。自動テストを増やす方法や、改善された手動テスト計画を作成する方法を検討しています。
これらの計画の多くは、近日中にリリースされるReact Native 0.59リリースに組み込まれる予定です。0.59には、React Hooks、Android用の新しい64ビット版JavaScriptCore、そして多くのパフォーマンスと機能の改善が含まれます。現在、リリース候補として公開されており、今後2週間以内に安定版になる予定です。
次のステップ
今後2か月間、私たちはプルリクエストの管理を継続して順調に進めながら、未解決のGitHubイシューの数を減らし始めます。Lean Coreプロジェクトを通じてReact Nativeの表面積を削減し続けます。コミュニティの主要な問題のうち5つに対処する予定です。コミュニティガイドラインを最終決定したら、ウェブサイトとドキュメントに注意を向けます。
3月には、コミュニティから10人以上の貢献者をFacebookロンドンに招き、これらの取り組みのいくつかを推進する予定です。React Nativeをご利用いただきありがとうございます。2019年に私たちが取り組んでいる改善を皆様に見て、感じていただけると幸いです。数ヶ月後に次のアップデートをお届けします。それまでの間、皆様のプルリクエストをマージしていきます!⚛️✌️