IT用語

Gerritとは?Gitとの違いも含めて会話形式で解説!

クマノくらげ

この記事でわかること

この記事では、初心者向けに次の内容を解説します。

・Gerritとは何か
・Gitとの違い
・GitHubのプルリクエストとの違い
・Gerritを使うメリット

Gerritとは?

Gerritって?Gitとは違うの?

違うよ。ざっくり言うと、

Gitはソースコードの変更履歴を管理する道具
GerritはGitの変更内容をレビューするための仕組み

って感じ。

Gitは、ファイルの変更履歴を記録して、過去の状態に戻したり、誰がどこを変更したか確認したりできるバージョン管理システムなんだ。

Gitは「変更履歴を管理する道具」

まずGitって何だったっけ?

Gitは、プログラムのソースコードを管理するためによく使われるツールだね。

たとえば、チームで開発していると、

  • 誰がどこを変更したか
  • いつ変更したか
  • 前の状態に戻せるか
  • 複数人の変更をどうまとめるか

を管理する必要があるでしょ?

うん。勝手に上書きされたら困るもんね。

そうそう。
そのために使うのが Git

Gerritは「変更内容をレビューする場所」

じゃあGerritは何をするの?

Gerritは、Gitで管理しているコードに対して、
その変更を本当に取り込んでいいかレビューするためのWebツール だよ。

公式にも、GerritはGitベースの開発向けのWebベースのコードレビューシステムとして説明されているよ。

レビューって、誰かがコードを見て「OK」とか「ここ直して」って言うやつ?

Gerritでは、変更内容を見ながらコメントしたり、承認したり、修正を依頼したりできる。

例えるなら

GitとGerritをたとえるなら、こんな感じ。

用語たとえ
Gitノートの変更履歴を残す仕組み
Gerrit先生や先輩が提出物をチェックする場所

Gitは「記録する」、Gerritは「確認する」ってことか。

GitとGerritの違い

違いを表にするとこんな感じ。

項目GitGerrit
役割変更履歴を管理するコードレビューをする
主な目的ソースコードを管理する変更を取り込んでよいか確認する
使う場面開発中ずっと使う変更を共有・承認するときに使う
操作イメージcommit、push、pullなどレビュー、コメント、承認など
関係性土台Gitの上に乗るレビューシステム

具体的な流れ

実際にはどう使うの?

よくある流れはこんな感じ。

  • 開発者がGitでコードを変更する
  • 変更をcommitする
  • Gerritにpushする
  • レビュアーがGerrit上で内容を見る
  • 問題があればコメントする
  • 問題なければ承認する
  • 承認後に正式なブランチへ取り込まれる

いきなり本番用の場所に入れるんじゃなくて、Gerritで一回チェックするんだね。

そうそう。
Gerritは、変更を直接取り込む前にレビューする流れを作りやすいんだ。Gerritの説明でも、レビューしやすいように変更差分を表示したり、インラインコメントを付けられることが特徴として紹介されているよ。

GitHubのプルリクエストと似てる?

それってGitHubのプルリクエストと似てない?

かなり似てる。
どちらも「変更をレビューしてから取り込む」という目的は近いね。

ただ、Gerritは特にこういった特徴がある。

  • 1つ1つのcommitを細かくレビューする
  • パッチセットという単位で修正履歴を追いやすい
  • 権限管理や承認ルールを細かく設定しやすい

GitHubはブランチ単位のレビュー、Gerritはcommit単位のレビューが強い、みたいな感じ?

うん、まずはその理解でOKだよ。

Gerritでよく出てくる「パッチセット」とは?

Gerritでは、レビューに出した変更を修正すると、
その修正版が「パッチセット」として管理されるよ。

「パッチセット」?

たとえば、最初にレビューへ出したものがパッチセット1、
指摘を受けて直したものがパッチセット2、
さらに直したものがパッチセット3、というイメージだよ。

つまりGerritでは、
「最初の変更」と「レビュー後に直した変更」を分けて確認しやすいんだ。

どこを直したのか、
レビューの指摘にどう対応したのか、
という流れを追いやすくなるんだね。

Gerritを使うメリット

細かくレビューができるとどんなメリットがあるの?

主なメリットはこんな感じ。

メリット内容
品質を上げやすい他の人がコードを確認してから取り込める
ミスを防ぎやすいバグや書き方の問題に気づきやすい
知識共有になるレビューを通じてチーム内で学べる
承認ルールを作れる「2人以上がOKしたら取り込む」などができる
変更履歴がわかりやすい修正のやり取りが残る

Gerritが向いている開発

Gerritは、特に次のような現場で使われやすいです。

・変更を細かくレビューしたい開発
・承認ルールを厳しくしたい開発
・複数人のレビューを必須にしたい開発
・CI/CDと連携して、自動テスト後に取り込みたい開発
・大規模なチーム開発

まとめ

Gerritは、Gitで作った変更をチームで確認してから取り込むためのコードレビューシステムだよ。

Gitは変更を管理する。
Gerritはその変更をレビューする。

そう、
Git = コードの履歴管理
Gerrit = コードの審査室
という感じだね。

GerritはGitの代わりではなく、Gitを使った開発にレビューの仕組みを追加するもの と考えるとわかりやすいよ。

ABOUT ME
クマノくらげ
クマノくらげ
難しいIT用語やビジネス用語を、できるだけ身近な例えで解説するブログです。 「専門用語を見ると眠くなる人」でも読めるように、画像や会話形式を多めにしています。 AWS12冠達成済み。
記事URLをコピーしました