Gitlabについて
なぜ書こうと思ったか
Gitlabを会社で使うことがあって、使っていたら結構便利じゃね?ってなったが、
誰もあまり教えてくれないので宣伝を兼ねて作成。
Gitlabさん。宣伝費をくれてもいいのよ
Gitlabってそもそも何?
Gitlabは主に企業などで大規模開発を行う際に利用するものです。
コマンドや操作感はほとんど、Githubと同じです。
では何が違うのかですが、Gitlabの最大の特徴は主に2つあります。
- リポジトリの管理を階層形式で管理できる
- アクセス権の管理が非常に楽
1つずつ解説していきます。
※ビルドなどでも便利そうな機能がありますが全容把握してないので、それは割愛。
リポジトリの階層管理
リポジトリをフォルダやファイルと同じように階層構造で以下のように管理ができます。
.
├── your_groupA/
│ ├── sub_groupA1/
│ │ ├── your_repositoryA1
│ │ └── your_repositoryA2
│ └── sub_groupA2/
│ ├── your_repositoryA3
│ └── your_repositoryA4
└── your_groupB/
├── sub_groupB1/
│ ├── your_repositoryB1
│ └── your_repositoryB2
└── sub_groupB2/
├── your_repositoryB3
└── your_repositoryB4
正直これだけは具体的なイメージがわかないと思います。
以下が実際のGitlabの画像です。

ここでいう「trade」などがyour_groupAに該当します。
例として「仮想通貨データ取得」のグループに移動してみます。
ここではリポジトリの作成やサブグループの作成が可能です。
今はリポジトリだけ作成している状況です。
右上の新しいサブグループや、新しいプロジェクトでリポジトリやサブグループの作成が可能です。
結構管理が容易じゃないですか?
Githubあるあるリポジトリを乱雑に作りまくってどれがどれだかわからなくなるという事象がこれで解決できるので、かなり便利だと思います。
アクセス権の管理が非常に楽
これは大規模開発であればあるほど起きる問題だと思いますが、
- リポジトリへのアクセス権をいちいち付与するのはだるい
- アクセスできても閲覧権だけにしたい
など様々要望があるかと思います。
そういう際に、ここではグループごと(サブグループを含む)にコントリビューターのように招待でき、そこでアクセス権の調整が可能です。
Role系の管理画面は以下のようになっていますので早速見てみましょう。
※アカウントとソースはちょっとばれるとだるい情報が含まれていたので隠させてもらいました。ソースは誰がこの人を招待したとかが書いています。
ロールではどのような権限の付与ができるかですが、
以下ロールをグループ単位で付与が可能です。
- Guest (This role applies to private and internal projects only.)
- Planner
- Reporter
- Developer
- Maintainer
- Owner
- Minimal Access (available for the top-level group only)
※出典:公式ガイド
なにがなにやらという感じですが以下が権限でできることの表になります。
| Action | Guest | Planner | Reporter | Developer | Maintainer | Owner |
|---|---|---|---|---|---|---|
| マージ履歴などの監視 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| マージ履歴などのダッシュボード監視 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| イシューの閲覧 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| コントリビューターの状況監視 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| View value stream analytics | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| マージリクエストの詳細監視 | ✓ | ✓ | ✓ | ✓ | ||
| DevOpsの導入状況 | ✓ | ✓ | ✓ | ✓ | ||
| メトリクスのダッシュボード監視 | ✓ | ✓ | ✓ | ✓ | ||
| リポジトリやグループの作成権限 | ✓ | ✓ | ✓ |
このようにアクセス権をグループごとの細かく設定できます。
また有効期限を設定できるため、派遣さんなど有期契約の方でも管理が容易です。
これで大規模開発を行う際に、Aさんはバックエンド開発なので、バックエンドグループにはDeveloperでアクセス権を与えてあげようとか、BさんはPMOなので、全部のリポジトリにアクセス権を与えるけど、作成権はあたえたくないので、Reporter権限で全部のリポジトリにアクセス権を与えようなど…自由自在です。
少人数であってもチームを組んで開発を行うならあると結構役に立つと思います。
少なからず僕はアクセス権を毎度毎度付与して友達と開発するのは正直かったるいなと思うので結構便利です。
まとめ
リポジトリを階層管理しつつ、それをもとにアクセス権を与えることで簡単に大規模開発のリポジトリを管理できてめっちゃ便利だよねっていう代物です。
ぜひ会社や個人開発で活用してみてください。

