GitHub.com・BitBucket.org・GitLab.comの月額料金比較 + α

[GitLab Advent Calendar 2016](http://qiita.com/advent-calendar/2016/gitlab)の8日目です。

GitLabはオンプレで自前のサーバーにインストールして使用するというイメージが強いと思いますが、実はGitLabには、開発元のGitLab社によって運営されているクラウドサービスのGitLab.comもあります。
そこで本日は、クラウドのGitホスティングサービス、CIサービス、及びコンテナレジストリサービスの月額料金の比較をしてみます。
ちなみに、パブリック(公開)で利用する場合はGitHub.comが無料で利用可能なため、今回はプライベート(非公開)で利用する場合に絞って月額料金を比較します。

## Gitホスティングサービスの月額料金比較

はじめに、GitホスティングサービスのGitHub.com・BitBucket.org、及びGitLab.comの月額料金を比較します。

### 個人で利用する場合

まずは、個人で利用する場合の月額料金を比較します。
いづれのサービスもリポジトリ数の制限はありません。

| GitHub.com | BitBucket.org | GitLab.com |
| ------: | ---------: | ------: |
| $0 | $0 | $0 | 

個人で利用する場合は、GitHub.comとBitBucket.orgとGitLab.comを無料で利用できます。

### チームで利用する場合

続いて、チームで利用する場合の月額料金を比較します。
いづれのサービスもリポジトリ数の制限はありませんが、コラボレーター(共同作業者)数によって月額料金が変わってきます。
また、BitBucket.orgは2017年上期に料金改定が予定されているので、参考までに改定後のFreeプランとStandardプランの月額料金も記載します。

| コラボレーター数 | GitHub.com | BitBucket.org(現在) | BitBucket.org Free(将来) | BitBucket.org Standard(将来) | GitLab.com |
| ------------ | ------: | ---------: | ---------------: | -----: | ------: |
| 3名 | $0 | $0 | $0 | $10 | $0 |
| 5名 | $25 | $0 | $0 | $10 | $0 |
| 10名 | $70 | $10 | N/A | $20 | $0 |
| 11名 | $79 | $25 | N/A | $22 | $0 |
| 100名 | $880 | $100 | N/A | $200 | $0 |
| 無制限 | N/A | $200 | N/A | N/A | $0 |

チームで利用する場合は、GitHub.comは3名、BitBucket.orgは5名までなら無料で利用できます。また、GitLab.comなら人数に制限なく無料で利用することが出来ます。
なお、BitBucket.orgは来春に値上げが予定されていますが、それでもGitHub.comと比べるとかなり安く料金が設定されています。それと、BitBucket.orgにあるコラボレーターの無制限プランは来春には廃止される予定のため、コラボレーターが100名以上の大規模ユーザーの場合はかなりの値上げとなる可能性があります。

## CIサービスの月額料金比較

次に、CIサービスのTravis CI・Circle CI、及びGitLab CIの月額料金を比較します。
なお、単純に月額料金を比較することが難しいためビルドの同時実行数によって、月額料金がどのくらい違うのかを比較します。ビルドの同時実行数とは、CIに複数のジョブが投入された時に同時に実行されるジョブの最大数になります。
ちなみに、GitLab CIはGitLabのサービスに統合されているため、GitLab.comの設定により利用が可能になります。

| 同時実行数 | Travis CI | Circle CI | GitLab CI |
| ------------: | -------: | -------: | ----------: | ------: |
| 1 | $69 | $0 | $0 |
| 2 | $129 | $50 | $0 |
| 5 | $249 | $200 | $0 |
| 10 | $489 | $450 | $0 |
| 無制限 | N/A | N/A | $0 |

Circle CIは同時実行数が1であれば無料で利用できます。また、GitLab CIなら同時実行数に制限なく無料で利用できます。
Travis CIとCircle CIは同時実行数を増やすと、料金がどんどん高くなるのでコストと効率のバランスに気を付けてプランを決める必要がありそうです。

## コンテナレジストリサービスの月額料金比較

最後に、コンテナレジストリサービスのDocker Hub、及びGitLab Registryの月額料金を比較します。
ちなみに、GitLab RegistryはGitLabのサービスに統合されているため、GitLab.comの設定により利用が可能になります。

| プライベートリポジトリ数 | Docker Hub | GitLab Registry |
| ----------------: | ---------: | --------------: |
| 1 | $0 | $0 |
| 5 | $7 | $0 |
| 10 | $12 | $0 |
| 20 | $22 | $0 |
| 50 | $50 | $0 |
| 100 | $100 | $0 |
| 無制限 | N/A | $0 |

DockerHubはプラベートリポジトリが1つなら無料で利用できます。また、GitLab Registryはプラベートリポジトリ数に制限なく無料で利用できます。

## GitLab.comが無料の理由

以上のように、GitLab.comでは様々な機能が無料で制限なく利用できます。不思議に思うかもしれませんが、公式サイトでは無料の理由を以下のように説明しています。

> GitLab社は、GitLab.comを最も人気のあるプロジェクトホスティングサービスに成長させたいと考えています。また、GitLabの知名度と人気を高めるための手段として、GitLab.comを利用しています。そのため、GitLab.comはプライベートリポジトリとコラボレーター数の両方に制限を設けずに、すべてを無料で提供しています。
> なお、GitLab.comの運用コストはオンプレミス向けのGitLab EEのサブスクリプションの売上で十分に賄われています。
> 将来的には、プロジェクトのサイズによる有償化やWindows/OSX CI Runnerのような有償機能が提供される可能性はあります。しかし、現状の機能は可能な限り無償で提供を続け、追加の機能についてのみ有償で提供する予定です。

## まとめ

他のホスティングサービスでは有料となっている機能が、GitLab.comでは無料で利用可能です。特に、GitLab CIが無制限に利用可能というのは、太っ腹すぎて本当に大丈夫なのかと心配になるレベルです。
なお、不正利用が増えると規制が入る可能性が高いので、くれぐれもGitLab CIでBitcoinのマイニングなどは行わないようにして下さい。
もしこの記事を読んでGitLab.comに興味が湧いた方は、とりあえずGitLab.comのアカウントを作成してはいかがでしょうか？

## 参考リンク

- [GitHub.comの料金表](https://github.com/pricing)
- [BitBucket.orgの料金表](https://bitbucket.org/product/pricing?tab=host-in-the-cloud)
- [BitBucket.orgの新料金](https://confluence.atlassian.com/bitbucket/future-bitbucket-cloud-pricing-plans-856694492.html)
- [GitLab.comの利用料金](https://about.gitlab.com/products/)
- [Travis CIの料金表](https://travis-ci.com/plans)
- [Circle CIの料金表](https://circleci.com/pricing/)
- [Docker Hubレジストリの料金表](https://hub.docker.com/billing-plans/)
- [GitLab.comが無料の理由](https://about.gitlab.com/gitlab-com/#why-gitlab-com-will-be-free-forever)
- [GitLab.comのサインアップページ](https://gitlab.com/users/sign_in)
- [GitLab.comの高速化を頑張っているIssue](https://gitlab.com/gitlab-com/infrastructure/issues/59)
- [GitLab CIの制限追加に関するIssue](https://gitlab.com/gitlab-org/gitlab-ce/issues/23366)