こんにちは、技術開発部 PdMの上田です。
みなさんはプロジェクトの進捗状況をどのように管理していますか。
私はプロジェクトのタスクの進捗率をガントチャートで管理するのが好きです。
スパイダープラスではGitHubを用いて開発を行っていますので、今回はGitHub Projectsの進捗率をExcelで見える化してガントチャートで管理した話をしたいと思います。
※公開用に一部情報を省略、編集しております。
📝 この記事で説明しないこと
- 📝 この記事で説明しないこと
- やりたいこと
- GitHub Projectsのroadmap機能では足りない
- Microsoftが提供するExcelガントチャートを利用
- GitHub Issueのタスクをガントチャートへ
- 完成
- Excelからスプレッドシートへ
- 最後に
- 参考
やりたいこと
メンバーはアサインされたIssueを進めています。
私は対応する案件がリリース日までに終わるのかどうか、順調にすすんでいるかどうかを進捗率を見て随時確認したいと考えています。
別途進捗を管理するファイルを用意すると、メンバーに余計な手間がかかってしまいます。
そこで、メンバーにはアサインされたIssueのみ更新してもらい、管理したいIssueの情報を収集することで進捗状況を管理できないか考えてみました。
GitHub IssueにはIssueのトップコメントに記載したチェックリストをタスクとしてカウントする機能があります。このチェックリストをガントチャートでは進捗率として利用し、Issue上では各メンバー自身の残タスク管理として利用することでメンバーはIssueを更新するだけ、私はIssueの情報を取得して進捗状況を確認できる状態を目指します。
GitHub Projectsのroadmap機能では足りない
GitHub Projectsには2023/3/23にroadmap機能(ガントチャート表示)がリリースされています。
ただし、このroadmap表示では開始日、終了日は表示できるものの、各Issueの進捗状況を表示することはできませんでした。
https://github.blog/changelog/2023-03-23-roadmaps-in-projects-are-now-generally-available/
Microsoftが提供するExcelガントチャートを利用
共有するならスプレッドシートで作成したいところですが、利用したい機能はMicrosoftが提供するExcelガントチャートに網羅されており、すぐに使える状態にしたかったためExcelをそのまま利用することにしました。
このExcelには進捗状況欄の進捗率に応じて、スケジュールの線の色を塗りつぶしてくれる機能があります。また、スケジュールも表示したい最初の週に含まれる日付を入力するとスケジュールの線が切り替わるため、日付の列が足りなくなったから追加するような手間もありません。
GitHub Issueのタスクをガントチャートへ
Excelに表示したい項目列を追加し、GitHub ProjectsおよびIssueの内容をガントチャートに当てはめます。
項目 |
種別 |
Excelの対象列 |
備考 |
開始日 |
GitHub Projects |
実績開始日 |
- |
開始予定日 |
GitHub Projects |
開始 |
スケジュールの線に反映 |
終了予定日 |
GitHub Projects |
終了 |
スケジュールの線に反映 |
GitHub Issue |
- |
||
タイトル |
GitHub Issue |
タイトル |
- |
assignees |
GitHub Issue |
担当者 |
- |
Issueトップのタスクリスト |
GitHub Issue |
タスク |
- |
- |
- |
進捗状況 |
タスクリストから計算 |
GitHubからのデータ取得にはGithub GraphQL APIを利用しExcelマクロにて取得します。
GitHub GraphQL APIを利用するためにはPersonal access tokenの発行が必要です。
Personal access tokenの発行についてはこちらを参照してください。
【Projectsのデータを取得するGraphQL】
query { organization(login: \"組織名\") { projectV2(number: 131) { title items(first:100) { totalCount edges { node { type content { ...on Issue { number id title url closed closedAt createdAt updatedAt repository { name } milestone { id title } assignees(first: 5) { nodes { name login } } body } } isArchived updatedAt fieldValues(first: 20) { nodes{ ... on ProjectV2ItemFieldTextValue { text field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldDateValue { date field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldSingleSelectValue { name optionId field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldIterationValue { iterationId startDate title titleHTML field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldLabelValue { labels(first: 10) { nodes { name } } field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldMilestoneValue { milestone { id title } field { ... on ProjectV2FieldCommon { id dataType name } } } ... on ProjectV2ItemFieldNumberValue { number field { ... on ProjectV2FieldCommon { id dataType name } } } } } } cursor } pageInfo { endCursor hasNextPage } } } } }
完成
ProjectsのIssueをタスクリストをもとに進捗管理できるようになりました。
Excelからスプレッドシートへ
現状の把握をすぐにできるようにMicrosoftが提供するExcelガントチャートを利用しましたが、スプレッドシートのほうがメンバーがアクセスしやすいだけでなく、他チームや他部署からも状況が確認できてアサインの調整がしやすくなり便利です。
そのため、今後はスプレッドシートへ移行しプロジェクトの状況を誰でも確認できるようにしていく予定です。
最後に
スパイダープラスでは仲間を募集中です。
もっといい方法を知っている、自分だったらこんな風に管理する、などなど、スパイダープラスにちょっと興味が出てきたなという方がいらっしゃったらお気軽にご連絡ください。
https://spiderplus.co.jp/contact/