GitHub Projects の機能が充実してきて、これは課題管理だけでも十分使えるのでは?と思ったので、 GitHub で Git を使わない使い方を試してみました。
課題管理システムに求めるもの
課題を管理する際に重要な点としてはいくつかあります。基本的なところで言えば課題を分かりやすく簡単に記述できること、担当者が割り振れること、課題のステータスを管理できること等があると思います。
個人的に重要だと思うのは、プロジェクト参加者が全員同じ課題一覧画面(ビュー)を見られる状態になっていることです。同じ目標に向かうならば、ばらばらのビューを見るより、同じビューを見て同じ課題を認識すべきです。同じビューを表示するために毎回状態を未完了、カテゴリをプロジェクトA、マイルストーンを2023 Q4 に設定して検索してください、と言う運用をするのは疲れます。課題管理の画面を開いたときに全員同じ見た目のボードや一覧が表示されているのが理想です。または、1クリック程度で表示できる状態にすべきです。
この「ビュー」を表示する機能を GitHub Projects は提供してくれます。
GitHub Projects を作成する
まずは自分または組織の Projects タブを開き、 New project ボタンを押します。
すると、いきなりプロジェクトが作成されます。この挙動は最初はびっくりしましたが、初期設定はプライベートになっているので安心してください。
@zu-min-g's untitled project
というプロジェクト名にカーソルを合わせると編集アイコンが出てくるので、それを押して設定画面に移ります。ひとまず分かりやすい名前にしましょう。保存ボタンは無いタイプです。
設定画面の左にある Manage access から参照できるメンバーを追加できます。今回は一人で試すだけなので説明は省略します。
課題を登録する前に
課題を登録する前に把握してほしい点があります。GitHub Projects は課題を保存する機能ではありません。課題の登録先はあくまで repository です。各リポジトリの課題 (issue, PR) を表やボードのような「ビュー」として表示するのが Projects の機能です。
というわけで、課題の登録先である repository を用意する必要があります。
New repository · GitHub にアクセスしてリポジトリを作成します。 Public/Private に気を付けて(先ほどとは違い、こっちは public がデフォルトです)、リポジトリ名を入れて、残りは初期値で大丈夫です。
以上で準備完了です。
ビューの種類
GitHub Projects には現在3つのレイアウトが用意されています。表形式で表示するテーブルと、カンバン形式のボード、ガントチャート形式のロードマップです。
どれを選択するかはプロジェクトの課題の運用方法によって決定します。ここからは私がよさそうだなと思った使い方について紹介していきます。
ひとまず課題を登録する
課題を登録する方法は大きく分けて2つあります。GitHub Projects から課題を登録するか、 repository の issue を project に取り込む方法です。
project から課題を作る場合は以下のようなダイアログが出ます。repository は必須ですので先ほど作成したリポジトリを指定します。create ボタンを押すと repository の issue として登録されます。
repository から登録する場合は、いつもの issue 作成画面の右側から project に紐づけが可能です。
最終的には以下のようになりました。
カスタム項目の追加
GitHub Projects では issue にカスタム項目を追加できます。Project 作成時に自動で追加されたテーブルビューの列部分に + ボタンがあります。+ ボタンを押すと New field という項目がメニューに出ています。
するとフィールド登録モードになります。ひとまず作業工数見積もりを入れる欄を追加してみます。ポイントや理想日1伝統的なプロジェクトなら人日など、プロジェクトの呼び方に応じて設定します。型は5種類から選択できます。
初めて知りましたが、 Iteration という気になる項目も増えてますね。GitHub Projects は高頻度で機能改善されているのも魅力です。とりあえず追加してみましょう。
最終的にはこのような見た目になりました。幅調整して値を入れています。イテレーションはこのような入力になるのですね。
課題の見た目は以下のような感じです。
repository 側では以下のような表示になります。追加項目も表示されていますね。
フィルターとグループ化
フィルター機能によって、どの課題を表示するか絞り込みをすることができます。例えば完了ステータスの課題を非表示にしたい場合、まずフィルター部分に status と入力してみます。すると status: という選択肢がサジェストされるのでクリックします。
すると以下のように切り替わるので、 Exclude status を選択します。
最後に Done を選ぶと、
-status:Done
というフィルターがかかります。
ただ、この状態だとまだフィルタは保存されていません。自分の画面だけフィルターがかかっている状態です。タブのところに青丸🔵が付いていると未保存の状態というのが分かります。
保存するには青丸🔵のついているメニューから Save を選択します。
これで他の人にも適用される状態になりました。
グループ化はテーブルの列の・・・をクリックすると以下のようなメニューが出てくるので、Group by values を選択します。
すると以下のようにまた🔵が出てくるので、先ほどと同様に Save します。
これで各イテレーションごとの未完了タスクを出せるようになりました。
ボードを使う
次はボードを使ってみます。先ほどのテーブルは残したいので新しいビューを追加します。
すると以下のようなビューが追加されました。デフォルトだとステータスごとに分類されます(変更可能です)。
とりあえずステータスの種類を変更してみます。右上のメニューから Settings を選び、
左メニューの Custom fields から Status を選択します。(いつのまにかステータスの色が選べるようになってる・・・もう絵文字🔵🔴🟢で頑張らなくてもいいんですね)
ステータスを何にするかは色々考え方があると思いますが、個人的な流行りだと以下のようにします。「レビュー中」は PR の役目なので、ステータスとしてはなくても意外と大丈夫です。
- 検討中
- 見積待ち
- 見積済み
- 待ち
- 作業中
- 完了
ボードの画面に戻ると、ステータスが多すぎて横スクロールする感じになっています。Shift 押しながらスクロールすればいいのは分かってるのですが、感情的に横スクロール嫌いなのでボードを二つに分けます。
先ほどのフィルターを使ってステータスを絞り込みます。status:"検討中" status:"見積待ち" status:"見積積み"
と入力し(OR 条件なんですね)、ついでにビューの名前を変えて Save しました。
新しいビューを作ってこちらは作業ビューとしました。
見積ボードはプランニングポーカーする時に見るビュー、作業ビューは朝会とか作業中に見るビューというイメージです。
チャート
イテレーションが追加されたことを知ったので試したいことができたのですが、そればベロシティの可視化です。イテレーションごとに完了したタスクのポイント数をグラフとして出してみます。
とりあえず先ほど作成したタスクを完了にしておきます。
次に右上にいるグラフのアイコンを押します。
New chart ボタンを押します。
Configure ボタンを押します。
上から
- Layout: Line
- X-axis: イテレーション
- Y-axis: Sum of a field, ポイント
を選択します。
フィルタも設定できるので Status: 完了 を入力します。Save ボタンも押しておきましょう。
最小値が 0 じゃないのが気になりますが、ちゃんと表示できているのではないでしょうか。以前はうまく出せなくてもやもやしていたので、これはうれしいアップデートです。
まとめ
GitHub Projects (beta) がリリースされた当時は機能が少なくて使い勝手が悪かったのですが、現在は十分実用に耐えるレベルになってきたと思います。イテレーションが追加されたところを見ると、スクラムのようなアジャイル開発と相性がよさそうです。今後本格的に使ってみようと思います。