2. プルリクエストの基礎と利用手順
ブランチを使った作業と切っても切れない関係にあるのがプルリクエスト(Pull Request, PR)です。プルリクエストとは、「このブランチの変更をmain(他のブランチ)に取り込んで良いですか?」と提案・依頼する機能です。チーム開発において、プルリクエストを通じてコードレビューや承認を行うのが一般的なワークフローとなっています。
GitHub Flowの基本
プルリクエストを中心としたワークフローはGitHub Flowと呼ばれています。これはチームでの作業を安全かつ効率的に進めるための標準的な手順です。「ブランチを作り、変更し、レビューを経て、マージする」という流れが基本となります。
GitHub Flowの基本ステップ
Issueで課題を認識する
まず、Issueで取り組む課題を認識します(何を変更すべきか決めます)。これにより、作業の目的が明確になります。
新しいブランチを作成
作業用の新しいブランチを作成し、そこで作業を開始します。課題に応じた名前をブランチにつけると良いでしょう。
ファイルを編集してコミット
ブランチ上でファイルを編集し、変更をコミットします。必要に応じて複数回のコミットを重ねても構いません。
プルリクエストを作成
変更が完了したら、プルリクエストを作成してチームに提示します。これが「この変更をmainに取り込んでもらえませんか?」という提案になります。
【画像: プルリクエスト作成画面のスクリーンショット】
レビューとディスカッション
チームメンバーがプルリクエストの内容(差分)をレビューし、必要ならコメントや修正を行います。ここでの議論を通じて品質を高めます。
プルリクエストをマージ
レビューOKが出れば、プルリクエストをマージして変更をmainに反映します。これで作業内容が本線に統合されます。
【画像: プルリクエストのマージ操作のスクリーンショット】
プルリクエストをクローズ
プルリクエストをクローズします(マージ時に自動でクローズされます)。必要に応じて、使用済みのブランチも削除しておきましょう。
プルリクエストの本質
この一連の流れにより、安全な合意形成のもとで変更を反映できるわけです。まさに「Pull Request=プル(引き取って)Request(要求する)」の名前通り、他者に対して「この変更を取り込んでいいですか?」と頼むプロセスです。
プルリクエストの具体的な操作方法
プルリクエストの作成
GitHub上でブランチに複数コミットが溜まったら、リポジトリのトップページに「Compare & pull request」というボタンが現れます。これをクリックすると新規プルリクエスト作成画面になり、タイトル・説明文を入力できます。
タイトルは自動でブランチ名から補完されますが、わかりやすく「〇〇の改訂提案」などと書き換えて構いません。説明には変更の概要や目的、Issue番号(「Closes #10」のように書くとマージ時にIssue #10を閉じる自動リンクになります)などを記載します。
レビュアーの指定
プルリクエストを作成すると、そのページで差分(Files changedタブで確認可能)やコミット履歴、コメント欄が表示されます。レビュアー(レビューしてほしい人)がいる場合、右側のReviewersに指定することもできます。指定された人にはレビュー依頼の通知が飛びます。
レビューとフィードバック
レビュアーが内容をチェックし、コメントを付けたり、「Approve(承認)」をしたりします。修正が必要と言われれば、プルリクエストを開いたままブランチにコミットを追加すれば、そのプルリクエストに変更が反映されます。
マージ
会話タブでやり取りしつつ、最終的にOKとなったら、プルリクエストページの「Merge pull request」ボタンをクリックしてマージします。これでブランチの変更がmainに取り込まれ、プルリクエストはClosed(完了)となります。不要になった作業ブランチは「Delete branch」ボタンで削除できます。
プルリクエストのビジネス上のメリット
業務でプルリクエストを使うメリットは、複数人のチェックを経てから変更が確定する点にあります。例えば:
- 社外提出文書の品質向上
- 重要な提案書の多部署チェック
- 変更履歴と承認プロセスの記録
- 問題発生時の責任所在の明確化
レビューコメントはそのまま指示・議論の記録となり、万が一後で問題が起きた際にも「誰がどこまで確認していたか」が辿れます。
プルリクエストとExcel/Wordの修正履歴の違い
人によってはExcelやWordの「修正履歴+コメント」機能に近いと感じるかもしれませんが、GitHubの場合は複数の変更をまとめて提案し承認をもらうという単位で管理されるのが特徴です。また、変更の履歴が永続的に残り、いつでも参照できる点も大きな違いです。