Backlogのカンバンボード機能を開発して自分で使ってみたら、Backlogの使い方が劇的に変化した!こんにちは。Backlog 新機能「カンバンボード」開発チームリーダーの藤田です。
現在、Backlog開発チームは2020年1月以降にリリースを予定しているカンバンボードを、全スペースへ公開するべく頑張っています。すでにヌーラボ社内ではある程度動いており、自分たちのプロジェクト進行でも手放せない存在です。
本記事では、私たちの体験を紹介することで、カンバンボードを待っているユーザーのみなさまが「自分のプロジェクトではどんな風に利用できるかな」と想像する助けになれば幸いです。
※本記事はJBUGさん主催のBacklog Advent Calendar 2019 12月22日にも参加しています。
目次
カンバンボード開発チームのプロジェクト進行
まずは、カンバンボード開発プロジェクトがどのように進んでいるのか、時系列でご紹介します。
マネジメントの方式としては、Scrumからいくつかのプラクティスを参考にしつつ、メンバーの(主に面倒くさがりな私)の性格に合わせ、ゆるゆるスプリント開発をしています。基本方針は、ミーティング少なめ、決め事少なめ、マネジメントのための手作業は最小限です。
1.キックオフ:プロダクト、プロジェクトのコンセプトを決める
プロジェクトのキックオフでインセプションデッキを作成して、「何のために作るのか」「優先すること、しないこと」といったプロジェクト全体のコンセプトをチームメンバー全員で明文化しました。多国籍チームなので文書は基本、英語で作成しています。
そしていつでも参照できるよう、BacklogのWikiトップページである「Home」にカンバンボードのインセプションデッキを貼り付けました。
2.ワイヤーフレーム:大まかな仕様を決める
私がCacooで画面の大まかな仕様を作り、チームメンバーで何度か議論した結果、メンバーの一人が描いた「ボードとして意味がある最小限の機能を持った画面(MVP)」を目指すことにしました。これもWikiのHomeページに貼り付けています。
私はソフトウェアの挙動を文章で正確に伝えるのは無理だと考えているので、仕様について説明や共有するとき、基本的にはテキストではなく下図のようなCacooで残すことにしています。(そういう主張をどこかに書いたなぁ、と思ったら去年のBacklog Advent Calendarでした)
3.マイルストーン:プロジェクトの節目を決める
プロジェクトの完了条件は「カンバンボードを全スペースにリリースする」という時点ですが、それまでにいくつかの節目を設定しました。
- 【ヌーラボ社内リリース】
- 【一部スペースにリリース】
- 【全スペースにリリース】
これらの節目はBacklogのプロジェクト設定画面でマイルストーンとして設定しています。
マイルストーンに開始日と終了日を入力しておくのがミソです。仮でもいいのでこの日時を入れると後述のいろんな機能が活用できるようになるのです。
本当にお薦めなので、この記事を最後まで読んで「いいね!」と思ったらぜひ使ってみていただきたいです!
使い方:マイルストーンで、プロジェクトの節目を明確にしよう
4.プロダクトバックログ:プロジェクト全体の計画をする
ユーザーストーリー
プロジェクト開始時に、最終的なリリースまでに実現する機能の一覧を列挙します。
機能一つひとつの表現方法としては、Scrumを参考にして「ユーザーストーリー」を用います。当然ですがストーリーごとにBacklogの課題を作ります。
課題テンプレートの利用
課題のタイトルは「誰々が、何をできる」といったフォーマットで、内容としてもう少し詳しい受け入れ条件と、時間の見積もりも記載します。
決まったフォーマットで課題を作るといえば、そう、課題テンプレートの出番ですね。
参考:課題のテンプレートが設定できるようになりました!
使い方:課題のテンプレート – Backlog ヘルプセンター
課題種別【プロダクトバックログ】のテンプレートは、以下のように設定しています。
件名 | [短縮表記] ( 誰が ) ( 何を ) できる |
---|---|
詳細 | # 受け入れ条件 * 状況 / 制限 * 振る舞い * エラー時などの挙動 |
具体的なストーリーはたとえばこんな具合になります。
件名 | [状態の列] ユーザーはプロジェクト内の全ての状態を横並びの列として見られる |
---|---|
詳細 | # 受け入れ条件 * バックエンドのAPIから取得した状態の名前が列の上に表示されている * 列の中身は空のままでも良い * 共通サーバーはまだないのでローカルで動いていればOK |
マイルストーン | 【ヌーラボ社内リリース】 |
予定時間 | 3 |
ユーザーストーリーの完了条件は、基本的には「すぐにでもリリース可能であること」です。
そうすることで、全ストーリーが完了していればプロジェクトの成果物全体がリリース可能であると言え、実情に即した進捗(言い訳の効かない進捗)を把握できるのです。
件名に短縮表記
課題の件名に短縮表記として [特定の単語] を入れます。これは、ミーティングで「この『状態の列』のストーリーはもう完了にして良いですか?」のように話すための識別名です。Backlog課題にはすでに課題キーという識別名がありますが、口頭で「このBLG-20139は…」と言うよりずっと探しやすくなるので気に入っています。
予定時間
予定時間「3」としているのは、3時間ではなく、ストーリーポイントといって、「他のストーリーに比べてこの程度時間がかかりそう」という相対的な値です。画面表示には「時間」と書いてありますが、マイルストーン内の全課題でそろっていればどんな単位でも構いません。
ストーリーポイントは必ずしも正確である必要はなく、大まかに見積もって大丈夫です。大幅にずれていたと感じたら、後から修正しても大丈夫です。粗くても良いから同じ単位の数字をあてて全部合計してプロジェクト全体の規模を一つの数値で表すことにより、後述のバーンダウンチャートに必要なデータとなります。
ストーリーでないタスク
ユーザーから見える機能以外にも開発するものはいろいろあります。そういうタスクもストーリーのフォーマットを流用して同じように扱います。たとえば以下のようなかたちです。
件名 | [dev環境] 開発者は作った機能を簡単に共通サーバーで確認できる |
---|---|
詳細 | # 受け入れ条件 * 共通サーバーでボードが動作している * developブランチにマージしたらJenkinsが自動的に共通サーバーにデプロイする |
マイルストーン | 【ヌーラボ社内リリース】 |
予定時間 | 15 |
今回のプロジェクトは、インフラやミドルウェアなどのシステムのすべてが新規設計で、開発用サーバーを稼働させるだけでもかなりの作業になるので見積もりは多めにしました。
プロダクトバックログの順序
上記のようなストーリーやタスクを優先度順に並べたのがプロダクトバックログです。チームはこのリストの上から順に自律的に開発を進めていくので、順序がとても大事です。
しかしカンバンボード以前のBacklogには、課題を任意の順番で並べかえる機能がありませんでした。そこで、開始日に架空の日付を入れ、ガントチャートの「課題が開始日の順で並ぶ」という仕様を利用して、並び順を制御するという裏技を使っていました(しかし、実際と異なるデータを入力するのはお薦めしません…)。
カンバンボードが社内で使えるようになってからは、裏技的な使い方はやめ、カンバンボードを「普通に」使って、ドラッグ&ドロップで優先度順になるようにプロダクトバックログを手入れしています。
ちなみに、通常は開始日や終了日のない課題はガントチャートに表示されませんが、終了日が設定されたマイルストーンの課題は、開始日・終了日が空でもガントチャートに表示されるのでそこから横方向にドラッグして開始日と終了日を編集できます。
こちらはマイルストーンの便利な仕様として普通にお薦めします。
マイルストーン+予定時間=バーンダウンチャート自動生成ができる!
さてここまでで、
- マイルストーンの開始日と終了日
- そのマイルストーン内で実行するすべての課題(プロダクトバックログ)
- 各課題の予定時間(ストーリーポイント)
をBacklogに登録してきました。この状態でプロジェクトのホーム画面を開くと、バーンダウンチャートが表示されています。
バーンダウンチャートはプロジェクトの進捗を可視化するのに非常に優れたツールです。どれくらい優れているかというと、子どもが夏休みの宿題を自律的に進められて、本人にいちいち聞かなくても常に進捗が把握できて妻もニッコリなくらい効果的です。
使い方:バーンダウンチャートを使用するには – Backlog ヘルプセンター
そして紙に描くのに比べて、見積もりの修正やタスクの追加などで全体の作業量が増減してもちゃんと良い感じに描画し直してくれるところがずっと優れています。
さらにBacklogのバーンダウンチャートは常に同じURLで画像として表示しているので、右クリックして「画像のURLをコピー」などして、たとえばWikiや他サービスの画面に貼り付けることもできます * 。なにもしなくても自動で最新の情報を表示するページができます。便利ですね。
* プロジェクトに参加しているアカウントでログインしている間だけ表示されます
バーンダウンチャートがちゃんと実態を表すように運用して、「好きなときにここを見てください」と伝えるだけで、上司や他のチームが進捗を知りたいタイミングですぐに確認できるため、双方にとってストレスフリーな環境が簡単に得られます。
個別のタスクを子課題として登録する
ユーザーストーリーはあくまで外から見える機能の単位です。一つのストーリーを実現するには、大抵の場合複数の個別タスクをこなす必要があります。そのような個別タスクをストーリーの子課題として登録します。
プロダクトバックログと別のマイルストーン
あらかじめ、子課題のためのマイルストーンとして【現在のスプリント】を用意します。これは開始日、終了日を設定せず、作ったタスクを適当に放り込むイメージで使っています。
開発メンバーは、マイルストーンや親課題など意識せず、とりあえずタイトルだけ入れてあればOK。あとは私が時々見まわって親課題にくっつけたりマイルストーンを設定したりしています(面倒なのでなにかツールを作りたい)。
子課題と親課題であえて別のマイルストーンにするのはちょっとした工夫で、以下の理由と効果があります。
バーンダウンチャートの仕様
Backlogが生成するバーンダウンチャートは「予定時間が入力されてない課題は”1″とカウントする」という仕様があります。個別の課題のマイルストーンを【ヌーラボ社内リリース】にしてしまうと、予定時間を入れていなくてもバーンダウンチャートの縦軸が変化してしまいます。別にすることでこの変化を防いでいます。
まるで複数ボードを使うように
チームの会議などで、カンバンボードのフィルタでマイルストーンを【ヌーラボ社内リリース】と【現在のスプリント】で切り替えることにより、「プロジェクト全体」と「直近でとりかかっている仕事」という時間感覚の違う2つのボードを行き来するように使えます。
カンバンボードのフィルタ切り替えはかなり高速なので、こういう使い方でもストレスがありません。
スプリント記録用のマイルストーンで、プロジェクトの記録が簡単に残せる
一週間のスプリントが終わったら、そのスプリント記録用のマイルストーンを作ります。
たとえば
名前 | 【Sprint #25】 | 開始日 | 2019-12-18 | 終了日 | 2019-12-25 |
---|
のように作り、【現在のスプリント】マイルストーンの中で完了した課題のマイルストーンをこれに変更します。これは課題のまとめて操作で簡単にできます(でも自動化できそうなのでツール作りたい)。
するとプロジェクトのホーム画面に、プロジェクト開始から完了までの毎スプリントで何個ずつ課題を完了できたという進捗の履歴が一覧表示されます。
リリースノート(超マイナー機能😅)も社内向けに「今週はこういう変更ができた」とアナウンスするときに使用しています。
カンバンボードなら課題登録が一瞬でできる!
カンバンボードでは、タイトルを一行書くだけで課題登録ができます * 。しかも、フィルタで絞り込んでから課題登録すると、できた課題にその条件が付与されます。
例えばマイルストーン【現在のスプリント】で絞り込んでいるときに、「あっそういえばこの課題も必要だ」と思ったらタイトルを一行書くだけで、一瞬でマイルストーン【現在のスプリント】が設定された課題ができるのです。
課題種別のフィルタで絞り込んでいれば課題テンプレートもちゃんと適用されて、とても便利です。
* プロジェクトに必須入力のカスタム属性が設定されていない場合
カンバンボードがBacklogの既存機能を引き立たせる
私たちカンバンボード開発チームのBacklogの使い方をご紹介しました。
カンバンボードは単体でも便利ですが、他のBacklogの既存機能を引き立たせるような効果があると感じています。開発する前はそこまでは考えていなかったのですが、今はとてもしっくり来ていて、早く皆さんにお届けしたい気持ちでいっぱいです。
それから、今すぐにでも試していただきたいのはマイルストーン+予定時間+バーンダウンチャートの組み合わせです。カンバンボードが無くてもすぐに使えますので、皆さんのプロジェクトのお役に立てていただければ幸いです。
2020年1月以降のリリースに向けて、引き続き開発をがんばりますので、楽しみにお待ち下さい!
こちらもオススメ:
プロジェクト管理とは?目的や項目、管理手法について徹底解説! | Backlogブログ
プロジェクト管理の基本や主な項目を紹介。CCPMやWBSなどのプロジェクト管理の代表的な手法やプロジェクト管理全体の流れを解説。これからプロ…
backlog.com