GitHubを活用したプロジェクトのIssue管理

## はじめに

TVerでTPdM(テクニカルプロダクトマネージャー)をしている[@t-arai1228](https://qiita.com/t-arai1228)です。
こちらは[TVer Advent Calender 2024](https://qiita.com/advent-calendar/2024/tver) 6日目の記事です。
昨日は[tomo](https://qiita.com/tomonish888)さんの[TVerの動画配信を支えるCDN](https://qiita.com/tomonish888/items/9934a38a047fb86b4a7f)でした。
現在は主にWeb/iOS/Androidのフロント開発ディレクションを行っています。
本記事では、これまで利用していたプロジェクト管理ツールをBacklogからGitHubへ移行した際の運用方法について記載します。GitHubでのプロジェクト管理はまだ始めたばかりですが、得られた知見を共有します。


## TVerプロジェクト管理ツール移行の背景

TVerのフロント開発では2021年からプロジェクト管理ツールはBacklogを使用していました。バージョン管理ツールでは、GitLabを使用していましたが、2024年にGitHubへ切り替えを行いました。
プロジェクト管理ツールとバージョン管理ツールが別々だったため、タスクとコードレビューの連携を強化し、開発効率の向上を目指してGitHubのIssueでプロジェクト管理を進めることにしました。

## GitHub移行後に直面した課題

GitHubでissue管理を行う中で、Backlogでは可能だったがGitHubで難しかった点を記載します。

- 親子チケット(Issue)の紐付けが出来ない
- プラットフォームごとにリポジトリを分けたため、リポジトリを跨いでの管理が必要
- リポジトリ単位ではIssueの優先度(Priority)設定はLabels管理かissueに記載する必要がある

親子チケットの紐付けはBeta版で提供されているSub-issues機能(2024年10月発表)を利用することで解決が期待されます。 [Evolving GitHub Issues (Public Beta)
](https://github.blog/changelog/2024-10-01-evolving-github-issues-public-beta/)
Sub-issues機能は正式リリースを待ちながら、リポジトリ間の課題管理についてはGitHub Projectsで補完しています。



## GitHub Issue管理のポイント

GitHub Projectsではリポジトリを跨いで管理するため、下記3点を意識しました。

- リポジトリ間での表記の揺らぎをなくす
- 入力のしやすさ (小文字統一)
- フィルタのかけやすさ (小文字統一、スペース排除)

### Labels/Milestones

LabelsとMilestones管理は一貫性と視認性を保ち、Projectsで検索やフィルタリングを容易にすることを重視しました。

- **形式**: 全て小文字で記載（可能な範囲で英語表記）
- **区切り**: ハイフン（-）で単語を区切り、スペースを使用しない
- **カラー**: リポジトリ間で統一

| 項目        | 例                 |
|-------------|--------------------|
| **Labels**  | `bug`, `non-function` |
| **Milestones** | `web-v1.0.0`, `ios-v1.1.0`,  `android-v1.1.1` |

### Issue テンプレート

MarkdownファイルでIssueテンプレートを作成しました。
[GitHub Docs : Issue テンプレートを追加する](https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issues-and-pull-requests/manually-creating-a-single-issue-template-for-your-repository#adding-an-issue-template)

テンプレートを作成するにあたり今回下記3点を意識しました。

- コメントガイドを活用し、記載内容の揺らぎをなくす
- 必要なセクションの精査
- タイトルやラベルの一貫性


```issue-template.md
---
name: issue-template
about: WebフロントチームへのIssue依頼テンプレート
title: "[Web]"
labels: ["hoge", "fuga"]
---

## 目的
<!-- このタスクの目的を記載してください。優先度高の場合は記載してください。 -->


## 概要
<!-- タスクの概要を簡潔に記載してください。関連するリンクなどもあれば添付してください。 -->


## 詳細機能要件
<!-- 機能の具体的な要件、仕様書URLを記載してください。 -->


## デザイン
<!-- Figma URLやワイヤーフレームを添付してください。 -->


## 計測タグ
<!-- トラッキングの要件を記載してください。 -->


## テスト確認観点
<!-- テスト時の確認項目や観点、成功条件を記載してください。不具合が出やすい箇所や要件については具体的に記載してください。 -->


## 用語定義
<!-- 専門的な用語を利用する場合は記載してください。 -->


## 関連Issue
<!-- 関連するIssueがあれば記載してください。 -->


## その他
<!-- スケジュールや補足などあれば記載してください。 -->


## ToDoリスト
<!-- 実施すべきタスクのToDoリストを記載してください。 -->
- [ ] Task 1
- [ ] Task 2
- [ ] Task 3

```

MarkdownファイルではLabelsの自動反映は可能ですが、Projectsの自動反映には対応していません。この点は今後の改善を期待したい部分です。
YAML形式ではProjectsへの自動反映が可能なようです。

## プロジェクト管理をGitHubに移行したメリット

GitHubを利用して良かった点は下記です。

- Issue、Pull Request、コードレビューをGitHub上で一元管理できるため、作業効率が向上
- リポジトリをまたぐタスクもGitHub Projectsのカンバンボードで進捗状況を視覚的に把握可能
- GitHub Actionsを活用することで、手動で作成していたリリースノートを自動生成できる

今後はGitHub Actionsをさらに活用していきたいと考えています。


## 最後に

GitHubでのIssue管理は今回が初めての経験でしたが、運用を進める中で最適な開発体制を模索しています。本記事が、同様にGitHubを活用しようと考えている方々の参考になれば幸いです。
おすすめの運用方法や便利な機能について、フィードバックがあれば是非お願いいたします。
明日の[TVer Advent Calendar 2024](https://qiita.com/advent-calendar/2024/tver) 7日目は[@ShikiCheri](https://x.com/ShikiCheri)さんによる[大規模なマルチプラットフォームサービスのためのデザインシステム-成功を導く3原則](https://note.com/shikicheri/n/n89d9fc1532ef)になります。
TVerについての私の記事も公開していますので、興味がありましたらご覧ください。

https://www.wantedly.com/companies/company_4696980/post_articles/906537

https://www.wantedly.com/companies/company_4696980/post_articles/910434