2017年3月2日(木)、都内では初のGitLabのイベント「GitLab meetup in Tokyo #1」がピクシブのオフィスで開催されました。
ピクシブ7年目社員である堀岡 亜樹、ニックネームはuchienneo。彼女が同イベントのLTで語った、GitLabを使ったプロジェクト運営におけるタスク管理の方法について紹介します。
GitLabをタスク管理ツールに選んだ理由
ピクシブのエンジニアをやっているuchienneoといいます。私はpixivというサービスの魅力に惹かれて、エンジニアとして7年ほどピクシブで働いてきました。
私が開発に関わっているプロダクトでは、エンジニアが持っているタスクの管理にGitLabを使っています。そこで使ってみて感じたことを、お伝えできればと思います。
pixivisionという、ピクシブが運営しているサービスがあります。pixivに投稿されたイラストやマンガの紹介や、創作に関する記事を掲載しているメディアです。ここ数年、私はそのプロダクトの開発に関わっています。
よくあるメディアでは、コンテンツの配信プラットフォームにOSSのCMSを活用して、開発や運用のコストを最適化しています。しかし私たちは、あえてそのようなことをしていません。
pixivとの密な連携、ユーザーや運営部隊の要求へ柔軟に対応するため、メディア運営に必要なCMSをフルスクラッチで開発し運用しています。2人のエンジニアで、pixivと同じ構成を踏襲しPHPとMySQLを使って開発してきました。
pixivisionを運営していく中で、当然、開発のタスクが発生し、それを管理することが求められています。タスク管理ツールというのは、様々なニーズがありまして、たくさんのツールが生み出されてきました。
その中から、自分たちのプロジェクト運営に一番フィットしているのが何かというのを見つけるのは簡単なことではありません。私たちも試行錯誤しながら、自分たちのプロジェクト運営方法にあったものを探し続けてきました。
ピクシブでは色んな特性を持ったプロジェクトが動いています。これらを支えるタスク管理のツールとして、最近よく使われているのがTrelloです。
ほかには、GitHubやGitLabのIssueもよく使われています。ホワイトボードに「今週なにをやる」みたいなのを書いたり、付箋を使って管理することもあります。カンバンですね。
開発で発生するタスクについては、ソースコードの変更管理と連動したGitHubやGitLabが使いやすいという所感がありまして。pixivisionのソースコード管理にも使っているGitLabを、開発タスクの管理用途に使うことにしました。
GitLabでアジャイル開発のタスク管理
pixivisionはアジャイルで開発を進めています。
毎週、チームメンバーの能力として「これぐらいのストーリーポイントをこなせるな」ってのを測っていまして。それをもとに、1週間ごとにイテレーションを切って、MilestoneをGitLab上に作成して「今週はこれぐらい進めようか」とタスクを選択して消化します。
こうした一連のタスクの進捗状況は、GitLabのスイムレーンを活用して管理しています。
GitLabでは、タスクがIssueと紐付いてまして、分類の軸が異なる2つのタイプのスイムレーンとして可視化することができます。左はBoardという形式、右のはMilestoneという形式です。
Boardは最近入った機能で、自分の状況を自分自身で増やすことができます。作業をする個人にとって、柔軟に管理ができるというメリットがあります。
ただ、それぞれのスイムレーンが、Issueの内容と連動しておらず、まだ成熟していない機能という感じがしています。使い勝手はあまり良くないと感じています。
一方で、右側のMilestoneという機能。これは以前からある機能なのですが、Issueにユーザーをアサインしたり、Issueをクローズしたりすると、自動的にスイムレーンに反映してくれます。Issueの更新に応じてアップデートしてくれるので、使い勝手が良いと感じています。
Boardの方が新しくて機能も多くて良いのですが、Milestoneの方が現場で実用的に使えると感じています。pixivisionでは今のところ、Milestoneを使っています。
タスク管理ツールとしてのGitLabに残念な点があるとするなら、ベロシティが機能として存在していないことです。期日もMileStone上には表示できません。設定はできるのですが、あまり便利に扱えないのです。
そのため、ベロシティや期日といったタスクポイントは、タイトルの付け方を工夫するなど、運用で対処せざる得ないという状況です。このあたりの機能が実装されると、自分たちのやっているアジャイル開発の現場に、よりフィットするだろうと感じています。
タスク管理ツールとしてのGitLabの長所と短所
タスク管理ツールとしてのGitLabの長所・短所について。
タスクがIssueと紐付いていることはとても便利です。GitLabプロジェクト自体も、ものすごく開発が活発で、新しい機能はどんどん追加されていきます。
「こういうのが欲しいな!」と思ったものは、大抵が実装している途中であったり、実装予定というステータスになっています。また、文章の記述についても、エンジニアの手に馴染んだMarkdown形式であることもメリットとして挙げられるでしょう。
一方で、苦手な点について。
GitLabは、pixivisionの改善活動でやっているような、小さくイテレーションを切ってタスクを進めていくという分には十分便利です。しかし、Issueの優先順位付けであったり、中長期のスケジュールと関連付けるなど、長いスパンで開発するために必要な機能が弱いと感じています。
こういうところは、バックログからガントチャートが書けるようなタスク管理ツールのほうが便利だと思います。
pixivisionでGitLabを使ったタスク管理の話でした。ありがとうございました。