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

コードの貢献方法

React Nativeへのコントリビューションにご興味をお持ちいただき、ありがとうございます!Issueへのコメントやトリアージから、PRのレビューや送信まで、すべてのコントリビューションを歓迎します。このドキュメントでは、React Nativeにコードをコントリビュートする手順について説明します。

すぐにコードのコントリビューションを始めたい方のために、比較的小規模なバグを含むGood first issuesのリストを用意しています。Help wantedというラベルがついたIssueは、PRを提出するのに適しています。

前提条件

情報

使用するプラットフォームと開発したいプラットフォームに応じて、必要なツールと開発環境をセットアップするには、環境構築ガイドを参照してください。

開発ワークフロー

React Nativeをクローンした後、ディレクトリを開き、yarnを実行して依存関係をインストールします。

これで、いくつかのコマンドを実行する準備が整いました。

  • yarn start はMetroパッケージャサーバーを起動します。
  • yarn lint はコードスタイルをチェックします。
  • yarn format はコードを自動的にフォーマットします。
  • yarn test はJestベースのJavaScriptテストスイートを実行します。
    • yarn test --watch はインタラクティブなJavaScriptテストウォッチャーを実行します。
    • yarn test <pattern> はファイル名が一致するJavaScriptテストを実行します。
  • yarn flowFlowの型チェックを実行します。
    • yarn flow-check-android*.android.jsファイルに対して完全なFlowチェックを行います。
    • yarn flow-check-ios*.ios.jsファイルに対して完全なFlowチェックを行います。
  • yarn test-typescriptTypeScriptの型チェックを実行します。
  • yarn test-ios はiOSのテストスイートを実行します(macOSが必要です)。
  • yarn build は設定されたすべてのパッケージをビルドします。通常、このコマンドは公開前にCIによってのみ実行される必要があります。
  • yarn build-types は公開APIのTypeScript型を生成し、スナップショットを更新します。

変更点のテスト

テストは、コードベースにリグレッション(機能低下)が導入されるのを防ぐのに役立ちます。変更作業中にリグレッションを導入しないように、yarn testまたは上記のプラットフォーム固有のスクリプトを実行することをお勧めします。

GitHubリポジトリはCircleCIを使用して継続的にテストされており、その結果はコミットやプルリクエストのChecks機能を通じて確認できます。

テストの実行と記述については、テストの実行と記述方法のページで詳しく学ぶことができます。

コーディングスタイル

JavaScriptコードのフォーマットにはPrettierを使用しています。エディタの統合機能を通じて、または手動でyarn run prettierを実行することで、Prettierがフォーマットの問題を自動的に修正してくれるため、時間と労力を節約できます。また、コードに存在する可能性のあるスタイルの問題を検出するためにリンターも使用しています。コードのスタイリングの状態は、yarn run lintを実行することで確認できます。

しかし、リンターでは検出できないスタイルもいくつかあります。特にJavaやObjective-Cのコードが該当します。

Objective-C

  • @property宣言の後にスペースを入れる
  • すべてのif文で、波括弧を同じ行に配置する
  • - method@interface@implementationの波括弧は次の行に配置する
  • 1行の長さを80文字程度に保つように努力する(時には不可能ですが…)
  • *演算子は変数名に付ける(例:NSObject *variableName;

Java

  • メソッド呼び出しが複数行にわたる場合、閉じ括弧は最後の引数と同じ行に配置する
  • メソッドのヘッダーが1行に収まらない場合、各引数を別の行に配置する
  • 1行の長さは100文字

プルリクエストの送信

React Nativeへのコードレベルのコントリビューションは、一般的にプルリクエストの形で行われます。React Nativeに変更を提案するプロセスは、次のように要約できます。

  1. React Nativeリポジトリをフォークし、mainからブランチを作成する。
  2. テストが必要なコードを追加した場合は、テストを追加する。
  3. APIを変更した場合は、ドキュメントを更新する。
  4. テストスイートがパスすることを、ローカルまたはプルリクエストを開いた後のCIで確認する。
  5. コードがlintをパスすることを確認する(例:yarn lint --fix)。
  6. コードがJSの公開APIを変更するかどうかをyarn build-types --validateで確認する。変更がある場合は、yarn build-typesを使用してスナップショットを再生成する。
  7. 変更を自分のフォークにプッシュする。
  8. React Nativeリポジトリへのプルリクエストを作成する。
  9. プルリクエストへのコメントを確認し、対応する。
  10. ボットが提案をコメントすることがあります。通常、メンテナーがコードをレビューする前に、これらの提案を解決するようお願いしています。
  11. まだ提出していない場合は、コントリビューターライセンス契約(「CLA」)を提出する。

すべてが順調に進めば、プルリクエストはマージされます。マージされない場合は、メンテナーがその理由をできるだけ説明します。

初めてプルリクエストを送信する場合は、ステップバイステップのガイドを用意しています。プルリクエストの処理方法に関する詳細については、プルリクエストの管理ページを参照してください。

コントリビューターライセンス契約

プルリクエストを受け入れるためには、コントリビューターライセンス契約(CLA)を提出していただく必要があります。これは、Metaのいずれかのオープンソースプロジェクトで作業するために一度だけ行う必要があります。数分で完了するので、依存関係のインストールを待っている間に済ませることができます。

ライセンス

React Nativeにコントリビュートすることにより、あなたのコントリビューションがReact NativeリポジトリのルートディレクトリにあるLICENSEファイルの下でライセンスされることに同意したことになります。