一か月ほど会社で自分のタスクをGitLabで管理してみたのでその感想を書きます。主にRedmineとの比較ですが、GitHub系のシステムの肝であるマージリクエスト(GitLab版プルリク)とかWebhookを使ってないので、あくまでタスク管理って観点でだけで。

まえがき


前述の通り、マージリクエストとWebhookを使ってないので、 タスク管理の感想になります。 書いてるうちにそれ以外も書いてしまった…前職で使ってたRedmineと比較したら、やはりタスク管理という観点ではRedmineのほうが圧倒的に優れていると感じました。従って、以下はここがビミョーみたいな感想をが多いです。(別にGitLabをdisってるわけではないです)

なお、GitLabはGitHubのクローンのようなものなので、タスク管理という観点ではGitHub系のシステムはだいたい同様だと思います。ただし、後述しますがGitHubは拡張で課題管理機能があります。

追記 2016/11/10

なんか、このページアクセスが多いので追記します。この記事は確か8.9.2時点のものです。
また、8.9.2のすぐ後のバージョンでカンバンボードが実装され、そのあとすぐにGitHubにもプロジェクト機能が導入されました。それについての感想も追記しました。

追記の追記 2017/04/03

最近会社でRedmineと連携して使いだしたので(あくまでGitリポジトリのホストとして)またそのうちいろいろ書くと思います。

ココがイマイチ(タスク管理という観点で)


Issueどうしの紐づけが弱い

Issueどうしの紐づけが弱いです。できるにはできますが、Issueのコメントに#Issue番号と記述したときに対応するIssueの編集履歴にmension from Issue**と出るだけです。

また、Redmineのようにチケットのトップに関連しているチケットがまとめて表示されるわけではないので、Issueの編集履歴を下までスクロールしてやり取りをみないとわかりません。マウスオーバーしないと題名は見えないし、クローズされているかどうかはリンクを開かないと確認できません。一目見てIssueどうしの関連性がわかり辛いです。

Redmineだと、チケットのトップにまとめて関連しているチケット****とずらずら並んで、かつ題名も表示されます。また、紐づいているチケットのクローズの有無もわかります。

Issueの前後関係がわからない

Issueを複数登録していくと作業の前後関係が発生するのでそれを管理したいということはよくあると思いますが、前後の関係を管理できません。Redmineだと、後続のチケット先行するチケットで管理できます。

サブタスクが管理できない

Issueのサブタスクが管理できません。

例えば、ある機能を実装するとして、それに対するサブタスクがたくさんあると思います。が、サブタスクが管理できないので、私はでっかいIssueを作ってその中に関連するIssueを#1,#3,#5....と記述しています。しかし、各サブタスクが「何なのか」「クローズされているのか」はわざわざリンクを開いて確認しないといけません。

独自の属性を作れない

いわゆるカスタムフィールド的なものが作れません。マイルストーン納期ラベル担当者しかないです。従って、重要度とか優先度とか、その他もろもろを管理したければすべてラベルで対応する必要があります。私はpriority1、priority2とかのラベルを作って管理してます…

ちなみに、Enterprise Editionだと、Weightという項目はあります。(Community Editionでも実装してよ…)

ラベルが共有できない

前述の通り、ラベルで管理することになるのですが、このラベルはプロジェクト間で共有できません…。管理画面で全体のラベルを作成することができますが、これはプロジェクトを新規で作成した時点でしかコピーされません。(プロジェクト新規作成時に管理画面の全体のラベルが新規作成するプロジェクトにコピーされる)

ですので、作成済みプロジェクト間で共通のラベルを作ろうと思うと それぞれの作成済みプロジェクトで同じ名前・同じ色の名前のラベルを作成するというクッソだるい作業 を繰り返さないといけません。 また、既に作成済みのラベルを編集したい場合もわざわざプロジェクトの数だけ編集する必要があります。

私はデータベースのラベルテーブルを直接updateとかinsertしてます…めんどくさいですが、手でプロジェクトの数だけ編集するよりかは幾分マシかな…。いちおう、Issue2651で対応する流れになっていますが、いつ実装されるのか…(そもそもCommunity Editionに実装されるかどうかもわからない)

ラベル・マイルストーンを編集した場合に過去の履歴には反映されない

ラベル・マイルストーンを編集した場合にIssueの履歴に既に記録されているラベル・マイルストーンは編集前の情報が表示されます。いや、おかしいだろう…と思ったもののGitHubも同じ仕様だった…こんなとこまでマネしなくても…

全体的にUIがいまひとつ

まあ、これはRedmineを使い慣れていたということもあると思いますし、GitHub系はリポジトリが中心という思想の関係もあると思います。

既に書いた通り関連Issueが見にくいとかもありますし、関連するコミットもIssueの履歴の流れの中に表示されるので見辛いです。Redmineだと関連するコミットはチケットの右下部に一覧で表示されるので見やすいです。

後は、コメント以外に担当者変更したとか、ラベル張り替えた情報とかも表示されてしまうので履歴が見にくいですね。Redmineだとコメントのみっていうのはプラグインで対応できました。

カンバンボードについて


カンバンボードが実装された後に、すぐにGitLabを使うのをやめてしまったのでそこまで詳しくないです。

タスクの進捗を可視化できるという意味では非常に良かったのですが、内部的にはタグで管理されていました。個人的にはカンバンの進捗もタグで管理すると(本来のタグと進捗のためのタグの意味が混在して)管理コストが増えるので別の項目で管理してほしかったです。

いや、いい機能だし目玉機能だったと思うのですが、この後すぐにGitHub側が実装したプロジェクト機能の方が出来が良かったので影が薄く…

ココがイマイチ(タスク管理以外で)


多言語対応していない

個人的には英語でも構わないのですが、やはり日本語でないと受け入れ難いケースは多々あると思います。なお、こちらで個人的にGitLab Community Editionの日本語化パッチを作ってらっしゃる方がいらっしゃいます。最新にほぼ追随しています。

Windowsで導入できない

こちらも個人的にはLinuxを使えるようになってきたので構わないのですが、以前の職場のように(当時の私含めて)Windowsしか使えない人にはつらいものがあります。ちなみに、以前調べたところ公式にWindowsは対応しないと明言していました。

リポジトリを複数登録できない

一つのプロジェクトに複数リポジトリを紐づけたいケースってないですか?ありますよね??

例えば、サーバー側システムのリポジトリとクライアント側アプリケーションのリポジトリがわかれているケースとか。でも、課題は一つのプロジェクトで管理したいとき。

残念ながらこれはできません。あくまでリポジトリを中心としているという思想から言えばしかたない気がします。Redmineだとできたんだよな~。

ちなみに、Redmineで一つのプロジェクトに複数のリポジトリを紐づけた場合にチケットの関連するコミットにどのリポジトリが紐づいているかどうかわからなくなりますが、これはRedmineのコードを直接いじればできます。

プラグインがない

Redmineでは「こういうことやりたいな~」ってのはだいたいプラグインがあったりしますが、GitLabでは当然そんなものはないので、デフォルトの機能で対応するしかありません…

Redmineに対する不安とRedmineでできないこと


と、ここまであまりにRedmine贔屓なので、Redmineの不安な点とRedmineでできない点を書こうと思います。

メインコミッタが少ない

以前、RxTStudyという勉強会に参加させて頂いて知ったのですが、メインコミッタが2~3人しかいらっしゃいません…。もともとJean-Philippe Langさんというフランス人のかたの個人プロジェクト(?)ですが、開発体制にちょっと不安があるのでは(失礼)と、個人的には思ってます。

チケット番号がインスタンスで一意

プロジェクトが複数あっても、チケットの番号は一意なので連番になります。ぶっちゃけ、フツーは困らないと思うんですが、今の職場でRedmineを導入するとなったら、ちょっとこの辺りは初期導入とかで問題が起こりそう…(完全にうちの事情)

バージョンアップが不安

実はRedmineでバージョンアップしたことないので完全にイメージですが、バージョンアップがめんどくさそう…

プラグインが対応しているかとか、手順そのものが不安であったり。そもそもRubyもGemも全然わかんねーGitLabはかなり簡単にバージョンアップできます。

あくまでITSなのでリポジトリ関連のWebhookとかない

まあ、そりゃあ役割が違うのでこんなこと書くのはおかしいかもしれませんが、リポジトリcommit、push時のWebhookがないので、Jenkinsとかと連携させようと思うと、やはりGitHub系のシステムを使わないといけません。

まとめ


タスク管理に限定したらRedmineに軍配が上がると思いますが、GitLabとRedmineでは役割が違うので、やはりITS(Redmine等)とGitHub系のシステム(GitLab、GitBucket等)と組み合わせて使うべきではないかと思いました。

世界的にITSとなればJIRA Softwareが最もメジャーだとおもうので使ってみたいんですが、こいつは11人以上だとライセンス料が途端に跳ね上がるので、あんまりソフト開発がメインじゃない会社だとキツイかな…(お金的意味で)