GitHub ProjectsのBoard(カンバン)レイアウトでIssueを指定したレーンに一括作成する

2023.06.13

はじめに

本記事では、GitHub ProjectsのBoard(カンバン)レイアウトを利用した際に、GitHub issueを一括作成する方法を紹介します。以降Boardレイアウトのことをカンバンと称します。

ただし、本記事では以下の注意事項があります。ご留意頂けたら幸いです。

  • shuntaka9576/gh-p2 というOSSに依存します
  • 後述しますが、GitHub Projectsのカンバンレイアウトの利用方法が一般的な利用方法と少し異なります(※1)

※1 弊社でよく利用されている方式なので、参考にして頂くのも良いかもしれません

GitHub Projectsのカンバンレイアウトの使い方

PBIを一番左のPBIレーンに配置します。紐づくタスクをTodoレーンに配置します。

スクリーンショット 2023-06-13 14 49 35

PBIと紐づくタスクに同じ名前のラベルを貼り、グルーピングします。ラベルを選択すると、PBIの進捗が一目でわかります。

スクリーンショット 2023-06-13 14 51 24

カンバンの作り方

プラニング時に、スプレッドシートでPBIとタスクの下書きをする

プラニングでは、issueを作る前に、スプレッドーシートでPBIとそのタスクと工数を整理します。プラニングでFixしたら一括作成をします。 スプレッドシートは以下のような形式で、サンプルはこちらです。

スクリーンショット 2023-06-13 14 57 53

カンバンにIssueを一括作成

一括作成には、shuntaka9576/gh-p2を利用します。GitHub CLIの拡張機能で、権限はGitHub CLIの設定に依存します。以下のように指定したUser or Orgとリポジトリとプロジェクトとカンバンレーン(Status)を指定してIssueを発行することができます。

img

導入方法は、GitHub CLIを導入後、READMEの手順で設定をしてください。最初は、Quick Startをやってみるのもおすすめです。

今回は、以下のような設定になっております。適宜スプレッドシートの関数を修正してください。

設定キー
Organization名 sugoi-site
リポジトリ名 project
プロジェクト名 projectHoge

shuntaka9576/gh-p2 を利用して、一括作成します。

# PBIレーンのissue一括作成
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "お客さんがAA出来る" -l "お客さんがAA出来る" -f "Status:PBI"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "お客さんがBB出来る" -l "お客さんがBB出来る" -f "Status:PBI"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "お客さんがCC出来る" -l "お客さんがCC出来る" -f "Status:PBI"

# TODOレーンのissue一括作成
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装" -a "shuntaka9576" -l "お客さんがAA出来る" -f "Point:2" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装レビュー" -a "shuntaka9577" -l "お客さんがAA出来る" -f "Point:3" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "設計" -a "shuntaka9576,shuntaka9577" -l "お客さんがBB出来る" -f "Point:5" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装" -a "shuntaka9577" -l "お客さんがBB出来る" -f "Point:6" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装レビュー" -a "shuntaka9576" -l "お客さんがBB出来る" -f "Point:7" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装" -a "shuntaka9576" -l "お客さんがCC出来る" -f "Point:9" -f "Status:Todo"
gh p2 create -o "sugoi-site" -r "project" -p "projectHoge" -t "実装レビュー" -a "shuntaka9577" -l "お客さんがCC出来る" -f "Point:10" -f "Status:Todo"

オプションを簡単に解説します。詳細はUsageを確認してください。

gh p2 create -o "sugoi-site" \ # <-- org名
  -r "project" \ # <-- リポジトリ名
  -p "projectHoge" \ # <-- プロジェクト名
  -t "実装" \ # <-- issueタイトル
  -a "shuntaka9576,shuntaka9577" \ # <-- アサイン 複数の場合コロン区切り
  -l "お客さんがAA出来る"  \ # <-- ラベル(ない場合は自動作成,複数指定可能)
  -f "Point:2"  \ # <-- フィールド設定 `フィールド名:値` 形式で記載
  -f "Status:Todo" # <-- 上記同様

その他

1つのリポジトリに、PBIとタスク両方のissueを起票したくない

PBI用のリポジトリとタスク用のリポジトリを用意するのが良いです(-rオプションで発行先のリポジトリを変更する)。ラベルでの絞り込みは、リポジトリをまたがっても可能です。gh-p2でissueを作成するとラベルの色がPBI用とタスク用で異なってしまう問題があります。最初にPBI用のリポジトリとタスク用のリポジトリで、色も合わせてラベルを手動作成するのがおすすめです。

このユースケースが多い場合、gh-p2でラベルカラー指定オプションを付ける用意はあります。

さいごに

gh-p2は私の作業を減らす目的で作りました。日本語でも構いませんので、問題があれば気軽にissueをいただければ可能な限り対応します。

関連資料