pixiv insideは移転しました! ≫ https://inside.pixiv.blog/

2017年はGitLabだけで開発のタスク管理を完結するのも夢じゃない

ピクシブ株式会社 Advent Calendar 2016、18日目の記事です。

こんにちは、エンジニアの@uchienneoです。2015年に小説PDF化機能の記事を書いた時にはpixiv本体の機能開発をメインにやっていたのですが、2016年夏に弊社メディアサイトwww.pixivision.netをリニューアルしてからはそちらの開発に携わっています。

pixivやpixivisionのソースコードの管理には自社ホストのGitLabが使われています。(どのようにGitLabが運用されているのかの詳細は16日の@catatsuyさんの記事をご覧ください)

inside.pixiv.net

GitLabにはタスク管理の機能があります。こちらの機能もどんどんアップデートを続けていて、そろそろ来年くらいにはGitLabだけでタスク管理するのも夢じゃないのでは…と思っています。

今回は実際のプロジェクトにおけるGitLab上でのタスク管理の運用とあわせてその展望を紹介します。

タスク管理ツールとしてのGitLab - 長所と短所

ピクシブでは基本的にはチーム単位で開発をおこなっていて、タスク管理の方法もチームごとの裁量に任されています。 よく使われているものとしては以下のものがあります。

  • Trello
  • GitHub
  • GitLab
  • 物理ホワイトボードにスイムレーンを書き、付箋を貼って管理

タスク管理ツールとしてはGItLabを見た時の以下のような部分が特徴的です。(一部GItHubと重なる部分もあります)

長所

  • コードとissue、MR(Merge Request = Pull Request)、Milestoneを一元管理できる
    • MR, issue, コミットメッセージにリンクを書くとそのまま互いの関連付けができる。 fixed / closed #123 のようにコミットメッセージを書いてそのままissueを閉じることもできるし、
  • 開発が活発で、欲しい機能はたいてい実装されているか、今後実装予定がある
  • 2016年現在ではあまり意識する必要がないことかもしれないが、Markdown記法が使える(ピクシブでは過去にRedmine*1とMoinMoinを併用していた時代があったが、Textile記法やMoin記法をMarkdownとは別に覚える必要があった)

短所

  • issueの優先順位や順序づけなど複雑な関係性の設定や、issueとスケジュールの関連づけなどには弱い(こういった概念づけは基本的にすべてタグで補うという思想)
  • 基本的な機能以外を使う際のUIが複雑でわかりづらい
    • 例えばmilestoneは複数のプロジェクトを跨いで配置することができるため、GitLabのmilestoneの詳細ページにはすべてのプロジェクトを通してmilestoneの状況が見られるページと、1つのプロジェクトに限ったmilestoneの状況が見られるページがある。この2つは一見ほとんど同じ見た目をしているが微妙に機能が異なり、紛らわしい

pixivisionでは開発のタスク管理は現在ほぼすべてGitLab上でやっています。

pixivisionでの実際の運用

基本運用スタイルは以下のような感じです。

  • 1週間ごとにイテレーションを切り、GitLab上でMilestoneを作成する
  • それぞれのタスクにストーリーポイントをつけて、イテレーションごとにどれだけのストーリーポイントをこなせるのかを計測し、それを元にこなすタスクの量を決めていく
  • タスクの進行状況はGitLabのスイムレーン上で管理し、基本的にはそこを見れば自分のやるタスクがすべてわかるようになっている

GitLabでタスクをTrelloのようにスイムレーン形式で管理する方法としてはそのままMilestone詳細ページを見るやり方の他に比較的最近実装されたBoard機能を使うやり方があります。

f:id:uchien:20161217215341p:plain

2つの機能を比較すると、Board機能はまだ新しいためなのかissueの管理という部分であまりパワーがなく、比較的タスクの規模の小さいpixivisionチームではMilestone詳細ページのレーン数でもあまり不便がないため、issueの状態を直接操作することを優先してMilestoneページの方を利用しています。

現状の運用上の問題点 - ベロシティとレビューの管理が難しい

現在の運用で開発上のタスク管理はほとんどGitLabを見れば大丈夫という感じになっているのですが、まだいくつか難しい問題もあります。

まず、イテレーションの開発ベロシティの管理について、GitLabにはストーリーポイントをつけるという機能がないため、ストーリーポイントの管理は現状、タイトルにストーリーポイントと期日を入れておき、イテレーションの終わりごとに手でポイントを足し合わせて計算するというアナログな方法でやっています。

また、現在pixivの開発では1つのコードを必ず2人以上がレビューするという方針を取っているのですが、 GitLabではMRやissueに担当者を1人しかアサインすることができません。このため、どうしてもレビュー依頼はチャットやほかの手段を通じて出さなくてはならず、自分が今どのレビューを依頼されているのかわからなくなるということがしばしばあります。

これらの機能についてはGitLabの開発コミュニティで現在実装が進んでいるようで、リリースを心待ちにしています。

まとめ

  • GitLab上だけでイテレーション単位の開発タスクのやりとりはほとんどできる
  • バーンダウンチャートと複数人アサインが実装されたら、GitLab上ですべて完結させるのも夢じゃない

明日のAdvent Calendarはpixivの決済システムの番人、 @ik-fib さんが担当してくれます。

*1:現在はMarkdown記法が使えるようになっているらしい