CLOUD NAVIクラウドとは?からクラウドを支える技術や関連用語まで解説

基礎知識

DevOpsを実現するための代表的なツール「GitHub/GitLab」とは

2021年12月24日

ファイルに対する変更の履歴を記録し、過去の状態を復元したり、変更差分を確認できる「バージョン管理システム」は、ソフトウェア開発において必要不可欠なツールとなっています。

バージョン管理システムには、大きく分けると「集中型(クライアント・サーバー型)」と「分散型」の2種類がありますが、2021年現在、世界中のソフトウェア開発の現場で活用されているのが分散型の「Git」です。また、Gitそのものだけでなく、Gitをベースとした開発プラットフォームである「GitHub」や「GitLab」といったサービスも広く利用されています。

本記事では、バージョン管理システムとしての「Git」の概要と2大サービスである「GitHub」と「GitLab」のそれぞれの特長と違い、サービスの選択方法などを解説します。

Gitとは

ソフトウェアの開発は、プロジェクトに所属する複数のメンバーで同時に作業を行うのが一般的です。しかし、複数のメンバーがファイルに対して、無秩序に変更を行ってしまうと「誰が」「いつ」「どのような変更を行ったか」「いったいどのファイルが最新なのか」といった情報が失われ、混乱が発生してしまうでしょう。こういう混乱の中で開発を継続すると、他人の修正を上書きしてしまったり、それによって修正済みのバグを再度混入させてしまったり、古いバージョンをデプロイしてしまったりという事故に繋がります。

そこで、管理下のファイルに対する変更履歴を記録するシステムが作られました。これが「バージョン管理システム」と呼ばれるもので、その中の1つが本記事で紹介する「Git」です。

Gitはもともと、Linuxカーネルの開発を支援する目的でLinuxカーネルの開発者でもあるLinus Torvalds氏によって開発されました。しかし、現在ではLinuxカーネルの開発のみならず、さまざまなオープンソースソフトウェアを中心に利用されています。2021年現在、世界的にも主流のバージョン管理システムだと言って間違いないでしょう。

また、Gitはプログラマーによるソースコードの管理だけでなく、WebデザイナーがデザインやHTMLファイルを管理したり、ライターと編集者が原稿を管理したりなど、多くの分野・業種でも活用されています。

Gitの特長

前述の通り、バージョン管理システムはGit以外にも数多く存在します。例えば、Git以前から存在したバージョン管理システムとしては、CVSやSubversionなどが有名です。

CVSやSubversionとGitの大きな違いは、Gitは「分散型」のバージョン管理システムである点です。従来のCVSやSubversionは「集中型(クライアント・サーバー型)」のバージョン管理システムで、変更履歴を含むすべてのデータを、中心となるサーバー上のリポジトリ(バージョン管理情報を保存するデータベース)に集約して管理しています。クライアントはリポジトリからデータを取得し、更新内容を反映することで開発を行うため、リポジトリのあるサーバーに接続できない状態では、コミット(過去のバージョンの取得や変更した内容の反映)ができません。例えば、「新幹線で移動中にプログラムの修正を行いたいが、サーバーと通信できないため、修正した内容をコミットできない」などのケースがあります。

対して、Gitは「分散型」のバージョン管理システムです。分散型の特長は、中心となるサーバー上だけでなく、各利用者のPC上にリポジトリ全体のコピーを持つことができる点です。そのため、Gitではサーバーに接続できない状態でも過去のバージョンの取得やコミットを手元のリポジトリ上で行えるのです。もちろん、手元のリポジトリ上で行ったコミットをほかのユーザーと共有するには、そのコミット内容をプッシュ(サーバーへ送信)する必要があります。しかし、これはサーバーとの通信が可能になったタイミングで行えばよいため、サーバーとの接続の有無によって作業が妨げられることがないのです。前述の例で言えば、Gitでは「新幹線の中で修正作業と手元でのコミットを行い、通信が可能になったタイミングでコミットした内容をサーバーへプッシュする」ことが可能なのです。

Gitは非常に便利なツールではあるものの、あくまでバージョンを管理するためのシステムでしかなく、コードレビューやディスカッションなど、開発にあたって必要となるコミュニケーションは、Gitだけでは実現できません。そこで、お勧めしたいのが「GitHub」や「GitLab」をはじめとした開発プラットフォームの活用です。

代表的な開発プラットフォーム「GitHub」「GitLab」

GitHubとGitLabは、どちらもGitの仕組みを利用した開発プラットフォームです。単にGitを利用してファイルを管理するだけでなく、複数ユーザー同士のコミュニケーションが可能でバグ報告やコードレビュー、ディスカッションなどをWebブラウザー上から行うことができます。またCI/CDや脆弱性スキャンなどの高度な機能も備えています。

以下では、GitHubとGitLabのそれぞれの特長と違いについて、解説します。

GitHubとは

GitHubは、Microsoft傘下のGitHub社が運営するソースコードホスティングサービスです。Gitをベースとしたソースコードホスティングサイトはいくつも存在しますが、その中でも世界最大のユーザー数を誇っているのがGitHubです。

GitHubの魅力は、自分のソースコードを公開して助言を求めたり、自身が開発したシステムを公開し利用してもらいやすい点です。GitHubに作成されたリポジトリは基本的にすべて公開され(現在は非公開にすることも可能)、世界中の人が閲覧可能となっています。こうした特性から、GitHubは単にソースコードをホスティングするだけでなく、開発者同士のコミュニケーションの場としても広く利用されています。特にオープンソースソフトウェアの開発で活発に利用されていることから、オープンソースソフトウェアの領域で活躍したい開発者をはじめ、世界中の開発者に利用されています。

GitLabとは

GitLabは、GitLab社が開発したオープンソースの(オープンソースではないエンタープライズ版も存在します)Gitリポジトリマネージャーです。GitHubと同様にWebブラウザーから操作が可能でソースコードホスティングに加えて、ドキュメント整備のためのWikiや問題解決のためのイシュートラッカーを搭載しています。

勘違いしやすいのですが、GitHubがサービス名であるのに対し、GitLabはプロダクト名です。そして、GitLab社自身によって運営されているGitLabを利用したWebサービスが「GitLab.com」です。GitLab.comは、Gitをベースとしたソースコードホスティングサービスとしては、GitHubに次ぐ規模を誇っています。

GitHubがオープンソースプロジェクトなどのコミュニティに向けた要素を多く持つのに対して、プロジェクト管理などプライベートベースでの利用に主眼がおかれている点がGitLabの大きな特長です。そのため、非公開のプロジェクト管理やマルチグループ管理など、企業や組織管理に向いた機能が多く用意されています。例えば、GitHubが無料でプライベートリポジトリ(非公開のリポジトリ)を無制限に作成できるようになったのは2019年のことですが、GitLab.comではそれ以前より同様の機能が提供されていました。また、GitLabはGitHubと異なり、それ自体がオープンソースソフトウェアとして提供されているため、簡単にセルフホスティングが可能です(GitHubをセルフホスティングする場合は専用のライセンス契約が必要です)。

こうした特性から、非公開での開発プロジェクトや社内でのバージョン管理が必要な企業で利用されるケースも多く、またセキュリティの関係でGitHubが使えない企業で利用されるケースもあります。GitLabではDevOpsに必要な機能がオールインワンで提供されており、企業で利用する際には、GitHubよりも適した選択となるケースも珍しくありません。

FJcloud-Vでは、GitLabを活用したDevOps環境を構築可能

FJcloud-Vでは、企業内での利用を想定し、よりプロジェクト管理に特化した「itLab Enterprise Edition(GitLab EE)」のセルフホスト型Premiumライセンス、Ultimateライセンスを提供しています。また、GitLab EEの利用環境の構築・運用をFJcloud-Vにてマネージメントする「DevOps with GitLab」の提供も開始しました。これらのプランを利用することで、GitLabを活用したDevOps環境を簡単に整えることが可能となっています。

GitLab EEの導入事例については、こちらからご覧いただけますので導入にあたって参考にしてください。

PageTop