- プルリクエスト(Pull Request)の略語
- プログラムの変更をチームの人に「このコード大丈夫?」と確認してもらうためのお願いみたいなもの
- 本番環境の前にチーム全体にコードを確認してもらえるのでミスを防ぎやすい
ここまでで7秒!もっとくわしく知りたい人は続きをどうぞ!
プルリクをわかりやすく
プルリクをわかりやすく説明すると
自分が書いたプログラムの変更をチームに「これ大丈夫?」と確認してもらうためのもの。例えば、ウェブサイトの色を変えるプログラムを書いたとして、本番サイトに反映する前にチームにプルリクを送る。これは、提出前に先生に宿題を見てもらうようなもので、本番サイトでミスを防ぐことができるということ
プルリクするのに必要なもの・環境
プルリクは、チーム開発でコードの品質を保ち、効率的に開発を進めるために非常に重要な仕組み。必要なものと環境は
1. バージョン管理システム(必須)
プルリクは、バージョン管理システムと密接に連携している。特に、以下の分散型バージョン管理システムがよく使われる。バージョン管理とは、ファイルの変更履歴を記録・管理する仕組みのこと。
- Git: 最も一般的で広く使われているバージョン管理システム。GitHub、GitLab、Bitbucketなどのプラットフォームで利用されている。
2. リポジトリホスティングサービス(ほぼ必須)
プルリクは、通常、オンラインのリポジトリホスティングサービス上で利用されている。リポジトリホスティングとは、インターネット上のサーバーにファイルやフォルダ(特にソースコード)を保管し、複数人で共有・管理するためもの。代表的なサービスは以下のもの。
- GitHub: 世界中で最も人気のあるプラットフォームの一つで、多くのオープンソースプロジェクトや企業で利用されている。
- GitLab: GitHubと同様の機能を提供し、プライベートリポジトリの運用やCI/CD(継続的インテグレーション/継続的デリバリー)機能も充実。
- Bitbucket: Atlassian社が提供するサービスで、Jiraなどの同社製品との連携が強み。
これらのサービスは、プルリクの作成、レビュー、マージといった一連のワークフローをサポートする機能を提供している。
3. ローカル開発環境
コードを記述・変更するための環境が必要。
- コンピュータ: プログラミングを行うためのコンピュータが必要。OSはWindows、macOS、Linuxなど、開発する言語や環境に合わせて選択。
- テキストエディタ/IDE: コードを記述するためのツール。Visual Studio Code、Atom、Sublime Text、IntelliJ IDEAなど、様々な選択肢がある。
- 開発言語の実行環境: 開発するプログラミング言語(例:Java、Python、JavaScriptなど)の実行環境(コンパイラ、インタプリタ、ランタイムなど)が必要。
- Gitクライアント: ローカルでGitコマンドを実行するためのツール。Git Bash、Git GUI、SourceTreeなどあり。コマンドラインに慣れている場合は、ターミナルから直接Gitコマンドを実行することもできる。
4. チームの合意(重要)
技術的な環境だけでなく、チーム内での合意も重要。
- プルリクの運用ルール: プルリクを作成する際のルール(例:タイトル、説明の書き方、レビューアのアサイン方法など)をチームで決めておくことで、スムーズな運用が可能になる。
- コードレビューの基準: コードレビューで何を重視するのか(例:コードの品質、パフォーマンス、セキュリティ、可読性など)を明確にしておくことで、レビューの質が向上。
- コミュニケーション: プルリクを通じて、チームメンバー間のコミュニケーションを円滑に行うことが重要。質問やコメントを積極的に行い、認識のずれを防げるようにする。
プルリクのおおまかな流れ
- 1リポジトリのフォーク (Fork)
フォークとは、他人のリポジトリを自分のアカウントにコピーすること。例えるなら、本のコピーを作って、自分の本として自由に書き込めるようにするイメージ。オリジナルのリポジトリ(本)には影響を与えずに、自分のコピーで変更を加えられる。GitHubなどのプラットフォーム上で行う。
- 2ローカルへのクローン (Clone)
クローンとは、フォークして自分のアカウントにコピーしたリポジトリを、自分のコンピュータにダウンロードすること。これで、自分のコンピュータ上でコードを編集できるようになる。
git clone
というコマンドを使う。例えるなら、コピーした本を自宅に持ち帰るイメージ。 - 3ブランチの作成 (Create a Branch)
ブランチとは、コードの変更履歴を枝分かれさせて管理する仕組み。新しい機能を追加したり、バグを修正したりする際に、メインのコード(通常
main
やmaster
ブランチ)から枝分かれしたブランチを作成することで、他の作業に影響を与えずに変更を進めることができまる。例えるなら、本の新しい章を書き始めるために、既存の章からコピーして新しい章を作るイメージ。git checkout -b ブランチ名
というコマンドを使う。feature/new-feature
のように、変更内容が分かりやすい名前を付けるのが一般的。 - 4変更のコミット (Commit Changes)
コミットとは、行った変更を記録すること。変更内容をまとめて、「いつ、誰が、何を変更したか」という情報を記録。例えるなら、本の変更箇所に付箋を貼って、変更内容と日時をメモするイメージ。
git add
で変更したファイルを指定し、git commit -m "コミットメッセージ"
でコミットメッセージ(変更内容の説明)を記述する。 - 5リモートへのプッシュ (Push)
「プッシュ」とは、ローカルでコミットした変更を、フォークしたリモートリポジトリ(GitHub上の自分のコピー)にアップロードすること。これで、変更内容が他の人からも見えるようになる。例えるなら、変更を書き込んだ自分の本を、共有の本棚に戻すイメージ。
git push origin ブランチ名
というコマンドを使う。 - 6プルリクエストの作成 (Create a Pull Request)
プルリクエストとは、「変更を取り込んでください」という正式な依頼。自分のフォークしたリポジトリの変更を、オリジナルのリポジトリに取り込んでもらうために作成する。GitHubのウェブサイト上で、「Compare & pull request」などのボタンをクリックして作成する。プルリクエストを作成する際には、変更内容の説明や目的、関連するIssue(課題)などを記述することで、レビューする人が変更内容を理解しやすくなる。例えるなら、変更を書き込んだ自分の本を、オリジナルの本の著者に「この変更を取り入れてください」と提案する手紙を送るイメージ。
- 7レビュー (Review)
レビューとは、他の開発者がプルリクエストの内容(変更されたコード)を確認すること。コードの品質、バグの有無、コーディング規約への準拠などをチェックする。コメントや質問を通じて、変更内容について議論することもあり。例えるなら、オリジナルの本の著者が、提案された変更内容を精査するイメージ。
- 8修正 (Make Changes)
レビューで指摘された点があれば、ローカルでコードを修正し、再度コミットしてプッシュする。プッシュすると、自動的にプルリクエストに反映される。例えるなら、著者の指摘を受けて、自分の本の変更箇所を修正し、再度提案するイメージ。
- 9マージ (Merge)
「マージ」とは、レビューが完了し、問題がなければ、プルリクエストの変更をオリジナルのリポジトリに取り込むこと。これで、変更が正式にプロジェクトに反映される。例えるなら、著者が提案された変更を自分の本に取り込み、正式な版として発行するイメージ。
プルリクまとめ
- プルリクエスト(Pull Request)とは、自分が書いたプログラムの変更をチームの他の人に見てもらい、問題がないか確認してもらうための「お願い」のこと
- 例えば、ウェブサイトの色を青から赤に変えるプログラムを書いたとして、その変更を本番のウェブサイトに反映する前に、「この変更で大丈夫ですか?」とチームに確認してもらうために、プルリクエストを送る。これが「お願い」にあたる
- プルリクエストを送ると、チームの他の人は変更されたコードを見て、間違いがないか、もっと良い書き方がないかなどをチェックしてくれる。まるで、提出する前に先生に宿題を見てもらうようなもの。こうすることで、本番のウェブサイトに間違いが反映される前にミスを防ぐことができる
- プルリクエストは、通常、ブランチという機能と組み合わせて使われる。ブランチとは、元のコードから分岐させて、変更を加えるための作業スペースのようなもの
- プルリクエストを送ると、他の開発者がコードレビューという作業を行い、コードの品質やバグの有無などをチェック
- レビューで問題がなければ、プルリクエストはマージ(統合)され、変更が元のコードに反映される
プルリクについて理解は深まりましたか?
まだわからない点や疑問点があれば、ぜひコメント欄で質問してください。生の声を聞かせていただければ、より良い内容を提供できるはずです。
以上、プルリクについてでした。コメント欄での活発な意見交換を心よりお待ちしています!
コメント