最近は小さなチームのリーダーとしてチーム運営をしており、GitHub Projects を何年かぶりに使っています。

GitHub Projects は以前からありましたが、2022/07/27 に完全リニューアルし、GA (Generally Available) となりました。

Planning next to your code - GitHub Projects is now generally available | The GitHub Blog

最近の使い方

こんな前提です。

  • 現在は自分含めた 3 人のチーム
  • コア開発っぽいリポジトリと、案件ベースのリポジトリ合わせて 10 個くらいある
  • 1 つの機能をチームで開発することはなく、それぞれが別々の開発をしている
  • 出来るだけレビューを通した PR をマージするように、合意はしている

そんな GitHub Projects を再現したものがこちらです。Issue/PR が少ないのはご愛嬌。😅

@masutaka’s trial project

@masutaka’s trial project

各 view の使い方

Board

いわゆるカンバンとして使います。

-status:Idea というフィルターのとおり、Idea カラム(後述)は非表示にしています。

InboxBacklog などのカラムには、短いながらも的確な Description を書いたつもりです。例えば In Progress の「1人1つまで」だとか。

Schedule

期間を決めた主要 Issue や、期日が決まった Issue のスケジュールは、ここで確認できます。

Start Date もしくは Target Date を設定した Issue/PR が、この view に現れます。-no:"start date","target date" はそんなフィルターです1

当初は Roadmap という view 名にして、Epic ラベルがついた Issue をこの view に出そうと考えていました。

しかし前述した前提のように、案件ベースの Issue のようなロードマップ以外の要素が多く、チームで普段から Epic という言葉を使うこともないため、一旦このようにしました。もちろん今後変える可能性はあります。

今のところ Epic 的な Issue のタイトルには「★親課題★」という Prefix を付けています。ダサいですが分かりやすいし、自然発生的に生まれたのでこの名前も良いかもしれません。

補足:

🔗 エピック | Atlassian

アジャイル エピックとは、顧客やエンドユーザーのニーズやリクエストに基づいて特定のタスク (通称「ユーザー ストーリー」) に細分化できるまとまった作業を指します。

今はアジャイル開発はしていないし、Epic から User Story に細分化するような大きな業務フローでもないので、実業務と距離が遠いなと感じた次第。

List

カンバンを全体的に眺めて整理したい時を想定して作りました。あまり使いません。補助的な view です。

Idea置き場

Idea カラムを表示するだけの view ですが、自分なりの工夫を凝らしました。

個人でうまくいっている「やるかもしれないリスト(パーキングロット)」[2021-01-05-1] を、チーム向けにアレンジしています。

思いついたばかりの Issue は、考えが練られていないことが多いと思います。

例えば「○○をしたい」とか「△△を実装する」といった、「課題じゃなくて、願望や方法ですよね?」といった Issue を目にすることは多いでしょう。そのような Issue は、一番重要な「なにが課題なのか?」を説明した「背景」も置き去りにされているでしょう。

これを避けるための工夫が、この Idea置き場 view です。Issue 化前の Idea 置き場として使います。

最初は「○○をすると良いかも」といった、緩い Draft Issue2 を作り、時間をかけて追記や修正などして、よく練られた Issue に近づけていきます。

本当に Issue を作ると管理が面倒になる気がしたので Draft Issue を奨励していますが、Issue 化は禁止していません。Draft Issue は、更新しても GitHub の通知が飛ばないという悩ましさもありますからね。

me

自分の Issue/PR を眺めたい時に使います。これも補助的な view です。

まとめ

会社で使っている GitHub Projects を紹介しました。

個人では何年もうまく運用できているが、チームへの展開が難しかった「やるかもしれないリスト」を、GitHub Projects で表現できたことにかなり満足しています。この記事を書くモチベーションになりました。

あくまでひとつのサンプルなので、自分達に合ったやり方を見つけ出すことが重要です。参考になれば幸いです。

参考情報