「BugMashプロジェクト」という取り組みについて

Ubiregi Advent Calendar 2018 13日目の記事です。

 

昨日の利きiPadの記事はいかがでしたか?

 

写真がなくてよくわからなかった?

はい、そうですね。

 

これを読んでもとても見分けられる気がしない?

はい、そうですね。

 

そもそも見分ける必要があるのか?

長い人生、もしかしたらそんな時もあるかもしれません!

 

 

なるほど! iPad miniiPad pro についての続編が楽しみです。

 

今日は、開発チームで最近はじめた「BugMashプロジェクト」についてご紹介します。

 

「BugMashプロジェクト」とは

ユビレジ開発チームでは GitHub の issue を使ってバグのレポートや機能改善の提案を管理しています。

issue にはバグレポート以外の内容(例えばUIデザインやAPIの設計についてなどなど)も投稿されており、議論したいことがあればひとまず issue を立てる、という文化です。

なので各リポジトリの issue はけっこうな数になっています。

(他の会社さんでどうやっているのか聞いてみたい)

 

そして、スクラムチームには「バグマッシュデー」があります。

2 週間のスプリント期間で機能開発しています。この期間内にはバグマッシュデーという「普段の開発では見落とされがちな軽微な不具合の修正や技術的な調査をしたり、メンバーが自由にプロダクトに貢献」できる日が用意されています。

 (RMagick の ImageMagick 7 対応の進捗 - @watson1978 の日記 より引用)

 

このバグマッシュデーに取り組む内容については個々人に委ねられていますが、

issue から取り組む課題を探すというメンバーももちろんいて、

そんな時に「どの issue にしよう?」と思い悩まなくてもいいようにある程度優先順位がついていると嬉しいなと思いました。

 

そこで、GitHub の organization にある Projects に「BugMash」というプロジェクトを作りました。

ちょうど Bug triage というテンプレートがあったので、こちらを利用しています。

 

f:id:katoriexxxkatorie:20181213111816p:plain

プロジェクトを作成するときにテンプレートが選べます!

 

プロジェクトやテンプレートについて、詳しくは公式ヘルプをご覧ください。

About project boards - User Documentation

 

カンバン形式なので見渡しやすく、organization 配下に作成するとすべてのリポジトリの issue を扱えるので、とても便利です!

この機能で issue の優先順位をつけて消化を促すことを「BugMashプロジェクト」と呼んでいます。

 

運用方法

まずプロジェクトにカラムを用意しますが、テンプレートを使用すると Needs triage、High priority、Low priority、Closed というカラムがあるのでほぼそのまま使用しています。

(四半期ごとにクローズされた issue の数がわかるといいかなと思ったので、期が変わるタイミングで Closed カラムを追加していく予定です。)

 

「これはバグマッシュデーにやると良さそうだな」という issue のページで右カラムにある Projects で「BugMash」を選択すると、自動で Needs triage カラムに追加されます。

f:id:katoriexxxkatorie:20181213010424p:plain

Projects で BugMash を選択

 

バグマッシュデーまでに、担当者(現時点では私がやっています)が優先順位をつけておきます。

Bug triage カラムから Row か High か判断してカードをググッと移動させ、High priority カラムのなかでも、特に早めに対応したほうがいいやつをググッと上に移動させておきます。

(このへんはさすがにちょっと画像でお見せできなくてすみません)

 

バグマッシュデー当日は、「これやるぞ!」という issue の Assignees に自分をセットすれば、カードにアイコンが追加されるので、誰がやろうとしているのかすぐ把握できます。

 

あとはPRを作るときに issue の番号をコミットコメントに入れるのを忘れずに!

PRのマージとともにクローズできれば、カンバンも自動更新されます。

 

効果はあるか

この運用をはじめたのが2か月くらい前で、バグマッシュデーが2週間に1度(そして祝日があった)なのでまだ消化された数は多くないのですが、

今まで issue をたてた個人に頼りがちだった進捗をチェックするようになったり、

過去に立てられて埋もれてしまっていた issue が動かせたりと、

少しずつ効果を感じています。

 

今後の目標としては、優先度をつけるにあたっての根拠となる情報を集め、

より効率のよく品質向上に結びつけていけるといいなと思っています。

 

「うちのチームこういう取り組みしているよ!」とか

「もっとこうしてみるといいかもよ!」とか

コメントいただけると嬉しいです。