新春特別企画

GitLabのこれまでとこれから

この記事を読むのに必要な時間:およそ 3 分

あけましておめでとうございます。株式会社Ruby開発の佐藤です。

近年,GitHubを利用したソーシャルコーディングが注目を集めています。GitHubを利用するとエンジニア同士の共同作業をスムーズに進められるため,ソフトウェア開発の生産性を向上させる効果が期待できます。そのため,オープンソースソフトウェア開発での利用にとどまらず,通常業務でGitHubを利用する企業が増えています。

そこで本稿では,GitHubの競合として注目が高まっているGitLabについて紹介します。

GitLabとは

GitLabは,GitLab社が開発しているRuby on Rails製のGitホスティングソフトウェアです。GitLabには無料で利用可能なオープンソースソフトウェアのCommunity Edition(以下CE)と,利用にライセンスが必要なプロプライエタリソフトウェアのEnterprise Edition(以下EE)があります。

GitLab EEはGitLab CEのすべての機能に加えて,大規模組織向けの機能が追加されています。GitLab社によるとGitLab EEのみに含める機能は,利用者が100名を超える組織にとって有用かどうかで判断しているとのことですが,一般的な利用範囲ではGitLab CEとGitLab EEに大きな違いありません。

また,GitLab社はGitLabの利用者増加と知名度向上のため,GitLab EEのクラウドサービスであるGitLab.comを無料で提供しています。GitHubでは有料となるプライベートリポジトリの作成も,GitLabでは無料できます。そのため,ソースコードを公開したくない場合でも気軽に試すことができます。さらに,GitLabには継続的インテグレーションとコンテナレジストリの機能が統合されており,GitLab.comではすべてを無料で利用できます。

なお,筆者による「GitHub.com・BitBucket.org・GitLab.comの月額料金比較 + α」という記事で,詳しい月額料金の比較を行っています。興味のある方はそちらもお読みください。

GitHubとの違い

以下ではGitLabとGitHubの相違点について述べますが,筆者の主観的な視点が含まれているので参考程度にしてください。

以前のGitLabは「貧者のGHE(GitHub Enterprise)」と呼ばれていたように,GitHubと比較するとかなり見劣りしていました。しかし,2014年にGitLabが法人化され,フルタイムでエンジニアを雇って開発が行われるようになり,現在では機能的にはGitHubと遜色のないレベルまで到達していると思います。

一方,クラウドサービスであるGitLab.comのパフォーマンスや安定性はGitHubと比べて大きく見劣りしています。特にGitLabのパフォーマンスは,GitHubと比較して全体的にもっさりしている感じがあります。さらにGitLab.comでは,ソフトウェアアップデートやシステム障害による,サイトのダウンも比較的頻繁に発生しています。サイトのダウンは長くても一時間程度で復旧する印象ですが,実際の業務で利用するのは厳しいというのが筆者の感想です。この点については,GitLab社としても問題を認識していて,高い優先度で改善に取り組んでいるようです。そのため着実に改善されてきてはいますが,複雑な問題であるため,解決にはしばらく時間がかかりそうです。

それでは,GitLabを実際の業務で使用するには自前でサーバーを用意して,運用する以外に方法がないのでしょうか? GitLabには公式のOmnibus packageが用意されて,比較的簡単にインストールとアップデートができるようになっています。それでも自前でサーバーを運用するにはある程度の知識と経験が必要であり,できればサーバー運用は外部に任せたいというニーズも少なからずあるはずです。

そのような場合は,GitLab社の提供するGitHost.ioが候補になります。GitHost.ioでは専有型のプライベートなGitLabサーバーを提供していて,GitLabのインストールやアップデートはGitLab社が行ってくれます。そのため,面倒なサーバーの運用はGitLab社に任せて,GitLabを快適に利用できます。

なお,GitHost.ioを利用した場合とGitHubのOrganizationプランを利用した場合で月額料金を比較すると,利用者数が増えるほどGitHost.ioの方がコストを低く抑えることができます

GitLab自体の開発のされ方

先述したように,GitLabはオープンソースソフトウェアのGitLab CEとプロプライエタリソフトウェアのGitLab EEに分かれており,そのどちらもGitLab社によって開発が進められています。GitLabの開発はGitLab.comのプロジェクトとして公開して進められており,バグ報告や機能追加の要望は以下のプロジェクトのIssueで受け付けています。

このIssueにはユーザーからのバグ報告や機能追加の要望以外に,GitLabのリリース計画など開発に関連するタスクがすべて登録されています。そのため,Issueを調べることでGitLabに追加される予定の機能をある程度は知ることができます。

また,各リリースに含めるバグフィックスや機能追加はプロジェクトのMilestoneで管理されています。GitLabは毎月22日にメジャーアップデートをリリースするというサイクルが決まっています。そのため,Milestoneで管理するのは主に次回リリース予定のIssueに絞って運用されています。これは1ヶ月以上先の計画はブレる場合が多く,より正確な計画をユーザーに提示するためのようです。なお,1ヶ月以上先にリリース予定のIssueは,MilestoneにBacklogという項目を作成して管理されています。以下がGitLab CEとGitLab EEのMilestoneです。

GitLabはコミュニティーからのコントリビュートを非常に重視しており,コミュニティーからのマージリクエスト(GitHubでいうプルリクエスト)には,必ずGitLab社の社員が対応する体制を取っています。マージリクエストを投稿すると,GitLab社の社員がコードレビューでマージに必要な修正事項を指摘してくれるため,その指摘事項にしたがってコードを修正することで多くの場合はマージされるようです。

筆者自身もGitLabにコントリビュートしており,この2ヶ月あまりで6件のマージリクエストを投稿していますが,リジェクトされたのは1件のみで残りの5件は無事にマージされました。ちなみに,昨年の12月22日にリリースされたGitLab 8.15には,コニュニティーからのマージリクエストが68件もマージされており,コニュニティーからのコントリビュートがGitLabの改善に大きな役割を果たしていると言えます。

著者プロフィール

佐藤洋行(さとうひろゆき)

株式会社Ruby開発所属。ソフトウェアエンジニアとして,主にRuby On Railsを使用したWebサービスの受託開発に従事している。現在,GitLabの導入支援を会社のサービスとして提供できないか模索している。趣味ではGitLabにコントリビュートしており,GitLab 5.1のリリース時にはMVPにも選ばれた。

Twitter:@hiroponz79
GitLab:hiroponz

コメント

コメントの記入