GitHubとGitLabの違いを比較しています。
GitHubとGitLabの違い
GitHubもGitLabも、どちらもGit機能を使ったソースコードのホスティングサービスです。バージョン管理や自動ビルド、デプロイなどをおこなうことが可能です。ソースコードをホスティングすることで、複数人での開発で開発者同士が協業してコードをレビューしあい競合の内容ソースをマージして開発をおこなうことができます。
GitHubは2021年にリポジトリ数が1億9,000万件を超えました。また、2021年時点でユーザー数は5,600万人以上となっています。一方、GitLabは2017年時点のユーザ数は10万人、その後、ユーザ数は公開されていないようです。規模でいうと、ダントツにGitHubが大きいことになります。
GitHubはマイクロソフト社が運営しているGitサービスです。2010年にはGitHub社により運営がはじまりましたが、2018年にマイクロソフト社が買収しました。商用プラントオープンソースプロジェクト向けの無料アカウントを提供していて、プライベートリポジトリも無料提供しています。GitHubはクラウド上で運営されるサービスです。
GitLabは、GitLab社が運営するGitサービスです。GitHubと違って、Saas型サービスと、サーバにインストールするセルフマネージドタイプのサービスがあります。Saas、セルフマネージドともにFreeプランは料金無料、グループ向け機能を備えたPremium、Ultimateプランは有料となっています。
GitLabの特徴は、CI/CD
GitHubと比較したGitLabの優位性のひとつは、継続的インテグレーション/デリバリーです。コミット済みコードの自動テスト、自動ビルド、自動デリバリー(デプロイ)をおこなうために、GitLab独自のCIが無料で提供されています。外部のCIサービスを使用する必要はないんですね。既にCIを導入している場合は、Jenkins、Codeshipなどとの統合も可能です。
GitLabは競合他社よりも早い段階からDevOps市場に対応していて、開発とDevOpsの取り組みの依存関係を把握できる運用ダッシュボードを提供しています。DevOpsとは、開発と運用を組み合わせた開発手法で、コード、ビルド、テスト、パッケージ、リリースまでの流れを自動化し、迅速にソフトウェアを提供するためのものです。
ビルドやテストをおこなうために、コンテナ環境を自動起動して専用の環境で、自動ビルドや自動テストをおこなうんですね。旧来の開発のように、「テストチーム」や「ビルドチーム」、「リリースチーム」などの人の手を介さないため、効率的な開発が可能です。
GitLabが、Java開発者の主要リポジトリとして人気がある理由は、Java関連のCI/CDが充実しているからかも知れませんね。
一方GitHubでは、デプロイプラットフォームが付属しておらず、CI/CDを実現するには追加のアプリケーションが必須でした。2019年にGitHub Actionsがリリースされ、ある程度CI/CDへ対応してきました。
GitHubとGitLabの価格を比較
GitLabの価格は以下の通り。CI/CDの実行回数によって、より高価なプランを選択するような価格体系になっています。
- 無料– 400 CI / CD分
- $ 21 /ユーザー/月– 1,000 CI / CD分。
- $ 99 /ユーザー/月– 50,000 CI / CD分。
- 10ドルの一括支払い–1000の追加CI / CD分
- 年間60ドル–10GBストレージ。(最初の10 GBは無料)
GitHubの価格は以下の通り。GitLabに比べると、アクション(CI/CD)の回数に対して料金が割安となっていて、利用できるストレージサイズも大きいです。
- 無料–500MBおよび2000アクション分。
- $ 4 /ユーザー/月–2GBおよび3000アクション分。
- $ 21 /ユーザー/月–50GBおよび50,000アクション分。
GitLabのCI/CDは値段が高い分、高機能といえるでしょう。しかし、JenkinsなどのCI/CD外部アプリケーションを使う場合、GitLabを使うメリットは薄れるかも知れません。
GitHubとGitLabの環境構築を比較
GitHubはウェブベースのサービスなので、サーバ構築などの作業は必要ありません。また、バックアップや障害時の切り替えなども運営サイドでおこなってくれます。GitHubには、GitHub Enterprise Serverというオンプレミス用のサービスがありますが、AWSなどの主要クラウド環境用にもインスタンスイメージが提供されています。
GitLabは、クラウドタイプのSaasを選べばサーバ運用は運営サイド任せにでき、インストールタイプのGitLab Serverを利用する場合はバックアップや障害時対応を人の対応含めて運用していく必要があります。
お手軽さでは圧倒的にGitHubなのですが、学校や企業のセキュリティポリシー的に、「クラウド上にソースコードを保管するのは不可」という場合は、自動的に組織内にサーバを設置し、GitLabサービスをインストールするということになるでしょう。
GitHubとGitLabのコマンドを比較
GitHubもGitLabもともに、Gitコマンドでクローンやプル、プッシュ、コミットなどが可能です。しかし、git管理の全機能を使えるわけではなく、プルリクエストやイシューの管理はウェブにログインして操作する必要がありました。
GitHubには、git管理全般をCLIで実行できる、ghコマンドが提供されています。gitコマンドでは実現できない機能が実行可能です。以下は、イシューのリストを表示した例です。
$ gh issue list Showing 30 of 324 open issues in google/material-design-icons #1196 Include icon metadata in this repo about 15 hours ago #1195 Standard Icons for Water Quality (pH, EC, ORP... about 1 day ago #1194 Handshake icon about 1 day ago #1193 post_add icon doesn't appear properly about 6 days ago #1192 Touch gestures about 19 days ago #1191 Spiritual Icon about 20 days ago #1190 Bug with icons name about 21 days ago #1189 How to define specific version on link about 29 days ago
【関連記事】
▶GitHubのCLI(コマンドラインインタフェース)はghコマンド プルリクエストやissue操作にも対応
GitLabにも、同様のlabコマンドという非公式のCLIがあります。
ただし、利用者もあまりいないようでネット上にもあまり情報がありません。業務で使用するのは避けたほうが良いかも知れませんね。
関連)【Gitlab】コマンドで簡単操作、labコマンドを使ってみた【大奮闘】 – unrealMan’s blog
まとめ
- GitHubもGitLabもソースのホスティングとgit管理をするためのサービス
- GitHubは、サーバ不要でユーザ数作成リポジトリ数もダントツに多い
- GitLabは、CI/CDの機能にすぐれ、組織内のサーバにインストールして利用することができる