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

コードの貢献方法

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

すぐにコードのコントリビューションを始めたい場合は、比較的スコープの限られたバグを含むGood first issuesのリストがあります。Help wantedとラベル付けされたイシューは、PRを提出するのに適しています。

前提条件

情報

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

開発ワークフロー

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

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

  • yarn startはMetro packagerサーバーを起動します。
  • 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の括弧は、次の行に配置します。
  • おおよそ80文字の行長を**維持するよう努めます**(不可能である場合もあります)。
  • *演算子は変数名と結合します(例:NSObject *variableName;)。

Java

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

プルリクエストの送信

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

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

すべてがうまくいけば、プルリクエストはマージされます。マージされなかった場合、メンテナーは理由を説明するために最善を尽くします。

プルリクエストを初めて送信する場合は、開始に役立つステップバイステップガイドを作成しました。プルリクエストがどのように処理されるかの詳細については、プルリクエストの管理ページを参照してください。

コントリビューター・ライセンス合意

プルリクエストを受け入れるには、Contributor License Agreement (CLA)を提出していただく必要があります。Metaのオープンソースプロジェクトで作業するには、これを一度だけ行えば十分です。ほんの1分で完了しますので、依存関係がインストールされるのを待っている間にでも行えます。

ライセンス

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