GitLabって何?

本記事では、GitLabに焦点を当てて、利用方法などをみていきます。
プログラマーが利用しているGitLabですが、ホームページを見ると、下記のような説明があります。
GitLabは先進的なソフトウェア開発に必要な多くの機能を統合した製品です。課題管理、バージョン管理、コードレビュー、CI、CD、モニタリングを1つのアプリケーションで行うことができ、インストールも簡単にできます。GitLabを活用すると、ソフトウェア開発の計画からモニタリングまでを効率的に行うことができます。
同様のサービスに、Githubというものもあります。
GitHubは、ユーザのみなさんからヒントを得て作成された開発プラットフォームです。オープンソースプロジェクトやビジネスユースまで、GitHub上にソースコードをホスティングすることで数百万人もの他の開発者と一緒にコードのレビューを行ったり、プロジェクトの管理をしながら、ソフトウェアの開発を行うことができます。
どうやら、両者ともソースコードを見たり、課題管理を行ったり、Wikiを書いたり、ソフトウェアの開発とプロジェクト管理に必要な機能が含まれているようですが、大きな違いは、GitLabはアプリケーションのソースコードをオープンソースライセンスのもとインターネット上で公開管理していることです。
本記事では、GitLabに焦点を当てて、利用方法などをみていこうと思います。
1. GitLabって誰がつくったの?
GitLabの共同創業者であり、同社の原案者であるウクライナ人のDmitriy Zaporozhets氏は、GitLabの立ち上げ時にはCTOを務め、その後Engineering Fellow(研究員)に転身していましたが、今は既に退任しています。
2021年10月14日、GitLabはNasdaqで株式公開企業となりましたが、Zaporozhets氏は同社の2.5%($450 million相当)の株式を保有しています。またもう一人の共同創業者であるオランダ人のSid Sijbrandij氏はCEOとしてまだ同社に残っています。
GitLabによると、2018年にマイクロソフトがGitHubを$7.5Bで買収するという第一報が流れたあとに、プロジェクト移行ユーザーは通常の10倍にも拡大したとのことです。MicrosoftがGitHubを取り込むことで、サービスに悪影響(自由を失うなど)を与えるかもれないと考える開発者や関係者が多かったことが理由のようです。
*マイクロソフトのM&Aとしては、2016年のLinkedIn $26.2B、2011年のSkype $8.5Bに次ぐ、過去3番目の規模となりました。
2. そもそもGitってなに?
プログラマーではない人まで、最近よく耳にするGitですが、まずはそこから紐解いていきましょう。

Wikiでみると、
Git(ギットは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。現在のメンテナは濱野純 (英語: Junio C Hamano) で、2005年7月から担当している。
Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
ざっくりまとめてしまうと、開発者が共同作業をする際に必要な分散型のソースコード管理システムということですね。
Gitが生まれる以前は、プログラマーが編集した際にいつ、誰が、どこをどのように変更したのかがわからなかったり、同時に作業した場合は先にあげた方のファイルが消えてしまったりという問題が多発していましたが、Gitを利用することで問題が解決したのですね。
3. GitとGitLabは何が違うの?
プログラマーでなければ、ちょっと混乱してしまいそうですが、簡単に言ってしまいますと、
Git
ソースコードのバージョン管理を行うソフトウェアです。
ローカルでのファイルの変更と追跡、リモートリポジトリでの変更の共有を行うことができます。開発チームのメンバー間のデータ交換を大幅に簡素化し、追加のバックアップとして機能し、文書化、バグ追跡、品質保証などのさまざまな追加機能を提供します。
GitLab
ソフトウェア開発に役立つ様々なツールを提供するプラットフォームです。
Gitリポジトリをリモートでホスティングするためのクラウドサービスで、ソフトウェア開発プロジェクトの管理を支援します。Gitホスティングプロバイダーの1つで、Gitリポジトリ、自動安全チェック、マイルストーンによるチケットシステムなどがあります。
それでは、GitとGitLabの説明にでてくるリポジトリとはなんでしょうか。
4. リポジトリとは?
Wikiによると、
バージョン管理システムではソースコード等の管理対象を溜めておく場所をリポジトリと呼ぶ。
簡単にいうと、Gitによって管理されるフォルダがリポジトリです。
システム開発においては、仕様、デザイン、ソースコード、テスト情報、インシデント情報など、システムの設計・開発に関するあらゆる情報を統合的に蓄積し、一元的に管理する「場所や仕組み」(貯蔵庫)を意味します。
リポジトリは、開発時の情報や成果物を一元管理し、閲覧や修正を可能にすることで、チーム内やプロジェクト内でそれらの情報を共有し重複開発の排除や、過去に開発した機能やソースコードの再利用を進め、開発をより効率的に進めることを可能にします。
それでは、やっとGitLabについてみていくことにしましょう。
5. GitLabの特徴とは
主な特徴は以下の3つです。
(1) プロジェクト管理機能
1つのリポジトリを1つのプロジェクトとして扱うので、それの公開レベルを設定できたり、また「Issues」や「Merge Request」などを紐づけることができます。
(2) クラウド対応が可能
自社サーバでもオンプレミス運用ができますが、クラウドサーバー(AWSやDigitalOceanなど)にも構築できます。
(3) DevOps(DevelopmentとOperations)の実現
DevOpsのためのアジャイル(agile)開発に用いるツールが豊富に揃っているので、開発スピードや生産性の向上が実現できます。
6. GitLabってどんな機能があるの?
GitLabを利用するには、無料と有料とありますが、今回は無料バージョンの主な機能について見ていきましょう。
(1) Project information
参加メンバーの追加・削除、権限の付与など。またメンバーのアクティビティを確認できます。
(2) Repository
リポジトリ作成/ユーザ管理/コミット管理/ブランチ管理/フォーク/プルリクエストなどの処理を行えます。
(3) Issues
バグ、タスク、アイデアなどの共有を行える。
(4) Merge request
開発中のブランチを本流のブランチにマージしたいときに使う。
(5) CI/CD(Continuous Integration/Continuous Delivery)
ビルド、デプロイ等を行うパイプラインを組むことが出来る
(6) Packages and registries
パッケージの登録
(7) Wiki
Wiki機能。リポジトリに関するドキュメントをまとめて管理できます。
(8) Snippets
Snippetsの管理機能で、コードの切れ端(一部)を再利用できるように登録しておく。
public, internal, private のスコープ設定ができる。
(9) Setitngs
各種設定
7. まとめ
GitLabはGitHubの後に開発されたサービスですが、基本的には同じ機能が搭載されていますが、サービス内容が異なり、徐々にユーザーを増やしているようです。
また、マイクロソフトのGitHubの買収により、GitLabの知名度が高まったことも事実です。
筆者はプログラマーではありませんが、開発プロジェクト管理を行うためにも、GitLabについて引き続き学習して、今後もみなさまと情報をシェアさせていただきたいと思います。