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

オープンソースロードマップ

5分間の読書
Héctor Ramos
Facebookのエンジニア

今年、React NativeチームはReact Nativeの大規模な再アーキテクチャに焦点を当ててきました。ソフィーが彼女のReact Nativeの状態に関する投稿で述べたように、Facebook以外のReact Nativeユーザーと協力者の繁栄するコミュニティをより良くサポートするための計画を立てています。今回、私たちが取り組んできた内容の詳細を共有する時期が来ました。その前に、オープンソースにおけるReact Nativeの長期的なビジョンを提示したいと思います。

React Nativeに対する私たちのビジョンは…

  • 健全なGitHubリポジトリ。 問題とプルリクエストは合理的な期間内に処理されます。
    • テストカバレッジの向上。
    • Facebookコードリポジトリから同期されたコミットは、オープンソースのテストを壊してはいけません。
    • より大規模な意味のあるコミュニティ貢献。
  • 安定したAPI。 オープンソースの依存関係とのインターフェースを容易にします。
    • Facebookはオープンソースと同じ公開APIを使用しています。
    • セマンティックバージョニングに従うReact Nativeのリリース。
  • 活気のあるエコシステム。 コミュニティによって維持されている高品質のViewManager、ネイティブモジュール、および複数のプラットフォームのサポート。
  • 優れたドキュメント。 ユーザーが高品質のエクスペリエンスを作成するのを支援することに重点を置き、最新のAPIリファレンスドキュメントを提供します。

このビジョンを実現するために、次の重点分野を特定しました。

✂️ Lean Core

私たちの目標は、React Nativeの表面積を縮小することであり、非コアコンポーネントと未使用のコンポーネントを削除することです。非コアコンポーネントをコミュニティに移管し、より迅速な対応を可能にします。表面積を縮小することで、React Nativeへの貢献の管理が容易になります。

WebViewは、コミュニティに移管されたコンポーネントの例です。リポジトリから削除した後も、内部チームがこれらのコンポーネントを引き続き使用できるワークフローに取り組んでいます。コミュニティに所有権を譲渡するさらに数十個のコンポーネントを特定しました。

🎁 内部公開と🛠ツール更新

Facebookの製品チームにとってのReact Native開発エクスペリエンスは、オープンソースとはかなり異なる場合があります。オープンソースコミュニティで人気のあるツールは、Facebookでは使用されていません。同じ目的を達成する内部ツールが存在する場合があります。場合によっては、FacebookチームはFacebookの外部には存在しないツールに慣れてしまっています。これらの相違点は、今後のアーキテクチャ作業をオープンソース化する際に課題となる可能性があります。

これらの内部ツールのいくつかをリリースすることに取り組んでいます。また、オープンソースコミュニティで人気のあるツールのサポートも改善します。取り組むプロジェクトの非網羅的なリストを以下に示します。

  • オープンソースのJSIと、コミュニティが独自のJavaScript VMを持ち込み、RNの最初のリリースからの既存のJavaScriptCoreを置き換えることを可能にします。JSIとは何かについては、今後の投稿で説明します。それまでの間、React ConfでのParashuramの講演でJSIの詳細を学ぶことができます。
  • Androidで64ビットライブラリをサポートします。
  • 新しいアーキテクチャでのデバッグを有効にします。
  • CocoaPods、Gradle、Maven、および新しいXcodeビルドシステムのサポートを改善します。

✅ テストインフラストラクチャ

Facebookのエンジニアがコードを公開する場合、すべてのテストに合格すれば安全に適用できると考えられています。これらのテストは、変更が独自のReact Nativeサーフェスのいずれかを壊す可能性があるかどうかを特定します。しかし、FacebookがReact Nativeを使用する方法には違いがあります。これにより、オープンソースでReact Nativeを意図せず壊してしまうことがありました。

オープンソースにできるだけ近い環境で実行されるように、内部テストを強化します。これにより、これらのテストを壊すコードがオープンソースに到達するのを防ぐことができます。また、GitHubでコアリポジトリのテストをより適切に行うためのインフラストラクチャにも取り組み、今後のプルリクエストに簡単にテストを含めることができるようにします。

表面積の縮小と組み合わせることで、コントリビューターは自信を持ってプルリクエストをより迅速にマージできるようになります。

📜 公開API

Facebookは、オープンソースと同じように公開APIを介してReact Nativeを使用し、意図しない破壊的な変更を減らします。これに対処するために、内部の呼び出しサイトの変換を開始しました。私たちの目標は、安定した公開APIに集約し、バージョン1.0でセマンティックバージョニングを採用することです。

📣 コミュニケーション

React Nativeは、コントリビューター数においてGitHubのトップオープンソースプロジェクトの一つです。これは私たちにとって非常に喜ばしいことであり、この勢いを維持していきたいと考えています。透明性の向上やオープンな議論など、コントリビューターの積極的な参加につながる取り組みを継続していきます。ドキュメントはReact Native初心者にとって最初に触れるものの1つですが、これまで優先事項ではありませんでした。そこで、自動生成APIリファレンスドキュメントの復活、質の高いユーザーエクスペリエンスの作成に焦点を当てたコンテンツの追加、そしてリリースノートの改善から始め、この状況を改善したいと考えています。

タイムライン

これらのプロジェクトは今後1年ほどで完了する予定です。既にオープンソースで公開されたJSIのように、いくつかの取り組みは既に進行中です。表面積の削減など、他の取り組みにはもう少し時間がかかります。コミュニティの皆様には、進捗状況を可能な限り最新の状態でお知らせいたします。React Nativeコミュニティによる取り組みで、このロードマップで説明されているいくつかのイニシアチブの作成につながったDiscussions and Proposalsリポジトリにもご参加ください。