Open4

OSSプルリクエストテンプレート集

Kazuki YonemotoKazuki Yonemoto

プルリクのテンプレートをどのように用意しているか様々なOSSを巡ってみていく。

テンプレートの作成方法

GitHubプルリクエストテンプレートの作成

以下公式ドキュメントを参照。

https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

その他Tips

https://dev.classmethod.jp/articles/pull-request-template/
https://qiita.com/atsutama/items/03753925762fd094ec9c

Kazuki YonemotoKazuki Yonemoto

デザインUI系

デザインシステムやUIライブラリなどフロントエンドで利用されるOSSパッケージ。

React

React

UIライブラリ。
https://github.com/facebook/react
https://github.com/facebook/react/blob/c5b9375767e2c4102d7e5559d383523736f1c902/.github/PULL_REQUEST_TEMPLATE.md

  • 貢献への感謝と前提条件:

    • リポジトリをフォークし、mainブランチから自分のブランチを作成すること。
    • リポジトリルートでyarnを実行すること。
  • テストと開発プロセス:

    • バグ修正や新しいコードにはテストを追加すること。
    • テストスイートがパスすることを確認する(yarn test)。
    • 本番環境でのテスト(yarn test --prod)。
    • 必要に応じてデバッガーを使用する(yarn test --debug --watch TestName)。
  • コードのフォーマットとリンティング:

    • prettierを使用してコードをフォーマットする(yarn prettier)。
    • コードがリント基準を満たしていることを確認する(yarn lint)。変更されたファイルのみをチェックする場合はyarn linc
  • 型チェックとCLAの完了:

    • Flow型チェックを実行する(yarn flow)。
    • まだ行っていない場合は、CLAを完了する。
  • プルリクエストの詳細:

    • 変更を行う動機と、解決される既存の問題について説明する。
    • 変更をテストした方法を具体的に記述する。

このテンプレートは、貢献者がプルリクエストの前提条件、開発プロセス、テスト戦略、コードの品質保証を理解し遵守することを促し、レビュアーがプルリクエストを効率的に評価できるように設計されています。

Svelte

Svelte

UIライブラリ。
https://github.com/sveltejs/svelte/tree/main
https://github.com/sveltejs/svelte/blob/eab690d31a7203ac23334460c9ae68844d43dc26/.github/PULL_REQUEST_TEMPLATE.md

Svelte 5への対応

  • Svelte 5へのリライト注意: SvelteコードベースがSvelte 5用にリライトされていることを注意し、変更はmainブランチ(Svelte 5)をターゲットにするべきです。
  • Svelte 4に関するPR: Svelte 4に関する変更は、ベースブランチをsvelte-4に設定する必要があります。

PR提出前の確認事項

  • Issue参照の有用性: PRが解決する問題について、事前に議論されたIssueを参照することが有用です。大きな変更の場合は、RFCを作成することが推奨されます。
  • PRタイトルのプレフィックス: feat:fix:chore:docs:などでPRタイトルを始めること。
  • テストの含有: このPRなしでは失敗するが、ありでは成功するテストを理想的には含めること。

テストとリンティング

  • テストの実行: pnpm testでテストを実行すること。
  • プロジェクトのリンティング: pnpm lintでリンティングを行うこと。

このテンプレートは、Svelte 5への変更を優先し、PRが解決すべき問題を明確にし、品質保証のためのテストとリンティングの実行を促すことを目的としています。

Polaris

Polaris

Shopify が提供するデザインシステム。
https://github.com/Shopify/polaris
https://github.com/Shopify/polaris/blob/b62cf7356caa74c162b500dd16d0871081adfef7/.github/PULL_REQUEST_TEMPLATE.md

特徴

  • 明確なタイトルガイドライン: テンプレートは、PRのタイトルがどのように構成されるべきかについて明確な指示を提供します。これには、コンポーネント名のプレフィックスや動詞の使用などが含まれます。これは、PRの内容を素早く把握するのに役立ちます。

  • 目的の明確化: 「WHY are these changes introduced?」のセクションでは、変更の理由や背景を明確にするよう求められています。これにより、PRが解決しようとしている問題の文脈が分かりやすくなります。

  • 変更内容の詳細な説明: 「WHAT is this pull request doing?」のセクションでは、実施された変更の具体的な内容を要求しています。これは、レビュアーが変更点を理解しやすくするために重要です。

  • ビジュアルサポートの利用: UIの変更がある場合、スクリーンショットやビデオ、アニメーションGIFの使用が推奨されています。これは、視覚的な変更をより効果的に伝えるのに役立ちます。

  • アクセシビリティへの配慮: アニメーションGIFに関して、<details>タグで囲むことが推奨されています。これは、自動再生によるアクセシビリティ問題を防ぐための配慮です。

  • イシューのリンク: テンプレートは、関連するイシューへのリンクを含めることを促しています。これにより、PRと関連する議論やバックグラウンド情報へのアクセスが容易になります。

Kazuki YonemotoKazuki Yonemoto

CMS系

CMS関連のOSSパッケージ。

WordPress

WordPress

王道のCMS。
https://github.com/WordPress/wordpress-develop/tree/trunk

https://github.com/WordPress/wordpress-develop/blob/77dcb1771ae14e655edaf514f0f55c28212d9bb2/.github/pull_request_template.md

特徴

基本方針とリンクの要求

  • WordPress Core Tracへのリンク必須: すべてのプルリクエストはWordPress Core Tracのチケットにリンクされていなければなりません。
  • GitHubでのマージ不可: GitHub上のプルリクエストはコードレビュー専用であり、GitHub上でマージされることはありません。

リソースへのリンク

  • コードレビューのためのPR使用ガイド: WordPress Handbookにある「GitHub Pull Requests for Code Review」へのリンク。
  • 初心者向けガイド: 新規貢献者向けのFAQ、コードガイド、コーディング標準、ドキュメント標準、ブラウザサポートポリシー、スペルと文法のベストプラクティスへのリンク。

プルリクエストの詳細

  • 変更の説明: PRに含まれる変更の説明を記入するセクション。
  • Tracチケットへのリンク: 関連するWordPress Tracチケットへのリンクを含めること。

注意: このプルリクエストはコードレビューのみを目的としており、その他の議論はTracチケットで行うべきです。プルリクエストはマージされません。

このテンプレートは、WordPressの開発プロセスにおいてGitHubプルリクエストがどのように使われるかを明確にし、貢献者が関連するリソースに簡単にアクセスできるように設計されています。

EC-CUBE

EC-CUBE

日本製カートCMS。
https://github.com/EC-CUBE/ec-cube

https://github.com/EC-CUBE/ec-cube/blob/cae3bf93fe9b688f3b8fe6e1840aa0697dc4db67/.github/PULL_REQUEST_TEMPLATE.md

特徴

  1. セキュリティへの配慮:

    • 脆弱性の報告に専用の問い合わせフォームへのリンクが提供されています。
    • セキュリティ上の懸念を適切に管理するための重要なプラクティスです。
  2. プルリクエストの目的と背景の明確化:

    • 「概要(Overview・Refs Issue)」セクションで、プルリクエストの目的や関連するIssue番号などが記述されます。
    • レビュアーがプルリクエストの文脈を理解するのに役立ちます。
  3. 方針と実装の補足:

    • プルリクエストを作成するにあたっての方針や、コードだけではわかりづらい実装の詳細について説明するセクションがあります。
    • レビュアーが意図と実装の詳細をより深く理解するのに役立ちます。
  4. テスト情報の提供:

    • 「テスト(Test)」セクションでは、実施されたテストの範囲や詳細を提供します。
    • レビュアーは変更の信頼性を評価しやすくなります。
  5. 互換性チェックリスト:

    • マイナーバージョンの互換性を保持するためのチェックリストがあります。
    • 開発者が重要な互換性ポイントを確認できるようになっています。
  6. レビュワーのためのチェックリスト:

    • レビュワーは、動作確認、コードレビュー、テストの確認、互換性の保持、セキュリティ上の問題などの項目を確認するよう求められています。
    • レビュープロセスがより体系的で包括的になります。
Kazuki YonemotoKazuki Yonemoto

フレームワーク系

OSSフレームワーク。

Next.js

Next.js

Reactを利用したフルスタックフレームワーク。
https://github.com/vercel/next.js
https://github.com/vercel/next.js/blob/75a8303f1be4c7c25d5fe741e582c5fb51afdb41/.github/pull_request_template.md

特徴

  • チェックリスト指示: PRがスムーズに進むように、フォローすべきチェックリストが含まれています。

貢献者向け

  • ドキュメンテーションの改善:
    • pnpm prettier-fixの実行でフォーマット問題を修正。
    • ドキュメントガイドラインへのリンク。
  • 例の追加/更新:
    • 例のガイドラインへのリンク。
    • リンティングの確認。
  • バグ修正:
    • 関連Issueへのリンク。
    • テストの追加。
    • エラーに対するヘルプフルなリンク。
  • 機能の追加:
    • 既存の機能リクエストへの参照。
    • e2eテストとドキュメンテーションの追加。
    • テレメトリーの追加。

メンテナー向け

  • 最小限の説明: PRは簡潔に説明されるべき。
  • Slackスレッドへのリンクと詳細共有
  • LinearとGitHub Issueへのリンク
  • 変更の背景に関するレビューコメントの追加

テンプレートは、貢献者とメンテナーの両方に対して、PRの作成およびレビューに必要な指示を明確に示しています。

Remix

Remix

Reactを利用したフルスタックフレームワーク。

https://github.com/remix-run/remix
https://github.com/remix-run/remix/blob/0b60172325b2cd921be26d3071023371bc22a92f/.github/PULL_REQUEST_TEMPLATE.md

特徴

  • 貢献への感謝とガイダンス:

    • ドキュメントの変更が単純な場合は、テンプレートの多くの部分を削除することができます。
    • 新機能に関しては、作業開始前にFeature Request discussionで議論するよう求められています。
    • CONTRIBUTING.mdへのリンクが含まれています。
  • プルリクエストの詳細:

    • 閉じるIssueの番号を記載。
    • ドキュメントとテストのチェックボックスがあります。
  • テスト戦略の説明:

    • プルリクエストで行ったテストの戦略を具体的に説明するセクションがあります。

このテンプレートは、新機能の開発に関する指針を提供し、プルリクエストの内容を明確に伝えることを目的としています。

NestJS

NestJS

スケーラブルなサーバーサイドを構築するための Node.js フレームワーク。

https://github.com/nestjs/nest/tree/master
https://github.com/nestjs/nest/blob/18335ffa9d53d7efd4f1529761f3539f035aaa79/.github/PULL_REQUEST_TEMPLATE.md

特徴

PRチェックリスト

  • コミットメッセージのガイドライン遵守: CONTRIBUTING.mdに従う。
  • テストの追加: バグ修正や機能追加に対するテストが追加されているか。
  • ドキュメントの更新: 必要に応じてドキュメントが追加または更新されているか。

PRの種類

  • 変更の種類を選択: バグ修正、新機能、コードスタイルの更新、リファクタリング、ビルド関連の変更、CI関連の変更、その他(詳細を記述)。

現在の挙動と新しい挙動

  • 現在の挙動の記述: 現在の挙動について説明し、関連するIssueがあればリンクを提供。
  • 新しい挙動の記述: 変更による新しい挙動の説明。

破壊的変更の有無

  • 破壊的変更の有無: このPRが破壊的変更を含むかどうかを指定。
  • 破壊的変更の影響と移行パスの説明: 破壊的変更がある場合、その影響と既存のアプリケーションに対する移行パスを説明。

その他の情報

  • その他の追加情報: PRに関連するその他の情報があれば記述。

このテンプレートは、PRがNestJSのガイドラインに沿っているかを確認し、変更の種類と影響を明確にし、必要なドキュメントの更新を促すことを目的としています。