メインコンテンツにスキップ

React Native オープンソースアップデート 2019年3月

·5分で読めます
Christoph Nakazawa
Christoph Nakazawa
Facebookの元エンジニア

React Nativeオープンソースコミュニティへの投資を増やすことを決定した後、2018年第4四半期に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の新しいバージョンへのアップグレードの開発者エクスペリエンスでした。幸いなことに、私たちはReact Nativeをmasterから実行するため、これは自分たちでは経験することではありません。ありがたいことに、コミュニティのメンバーはすでにこの問題に対処するために立ち上がっています。

  • CallstackのMichał Pierzchałaは、内部でrn-diff-purgeを使用することにより、react-native upgradeを改善しました。また、ウェブサイトを更新して、古いアップグレード手順を削除しました。
  • iOSプロジェクトではデフォルトでCocoaPodsを推奨する予定です。これにより、React Nativeをアップグレードする際のプロジェクトファイルの変更が少なくなります。これにより、サードパーティのモジュールをインストールおよびリンクすることが容易になります。これは、デフォルトでより多くのモジュールをリンクすることが予想されるリーンコアのコンテキストではさらに重要です。

0.59リリース

React Nativeコミュニティ、特にMike GrabowskiLorenzo Sciandraの協力がなければ、リリースを出すことはできませんでした。リリース管理プロセスを改善し、今後さらに積極的に関与する予定です。

  • 主要なリリースごとにブログ記事を作成するために、コミュニティメンバーと協力します。
  • 新しいバージョンにアップグレードする際に、CLIで破壊的な変更を直接表示します。
  • リリースにかかる時間を短縮します。自動テストの強化と、改善された手動テスト計画の作成を検討しています。

これらの計画の多くは、近日公開予定のReact Native 0.59リリースに組み込まれる予定です。0.59には、React Hooks、Android向けの新しい64ビット版JavaScriptCore、および多くのパフォーマンスと機能の改善が含まれます。現在、リリース候補として公開されており、今後2週間以内に安定版になる見込みです。

次のステップ

今後2か月間は、進捗を維持するためにプルリクエストの管理を継続すると同時に、未解決のGitHub issueの数を減らし始めます。Lean Coreプロジェクトを通じて、React Nativeの表面領域を縮小し続けます。コミュニティのトップ問題のうち5つに対処する予定です。コミュニティガイドラインを確定するにつれて、ウェブサイトとドキュメントに注意を向けます。

3月にロンドンのFacebookで、コミュニティから10人以上のコントリビューターを迎えて、これらの取り組みを推進できることを非常に嬉しく思っています。React Nativeをご利用いただきありがとうございます。2019年に私たちが取り組んでいる改善を実感していただければ幸いです。数か月後にはまた最新情報をお届けします。それまでの間もあなたのプルリクエストはマージし続けます! ⚛️✌️