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でも問題となっています。次のマイルストーンでは、主要な問題のいくつかに対処する予定です。
最も多くの投票を集めた問題の1つは、React Nativeの新しいバージョンにアップグレードする際の開発者体験でした。残念ながら、これは私たちがmasterから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月にFacebookロンドンでコミュニティから10人以上の貢献者を迎え、これらの取り組みのいくつかを進めることを非常に楽しみにしています。React Nativeをご利用いただきありがとうございます。2019年に私たちが取り組んでいる改善点を皆様に見て、感じていただけると幸いです。数ヶ月後には別のアップデートをお届けし、その間もプルリクエストをマージし続けます! ⚛️✌️