GitHub Projects の始め方 〜社内のタスク管理にどうですか？〜

# はじめに
今所属しているチームでは、社内ホストで`Redmine`を使用しています。
そのサーバーがEOLを迎えるとのことなので、タスク管理の移行先を検討しています。

そこの候補の一つとして、`GitHub Projects`が上がったので、始め方を調べて、アウトプットいたします。

:::note
本記事の参考になる人

- GitHub Projects とは。を理解したい方
- 使い方を知りたい方
:::

:::note alert
本記事の参考にならない方
- タスク管理の運用方法を知りたい方
- 機能のもっと詳細の使い方が知りたい方
    - 例：`GitHub Actions`を利用したProjectsの管理方法など
:::

# GitHub Projects とは
公式のドキュメントには、以下の記載がされています。

> プロジェクトは、作業の計画と追跡を効果的に行えるように GitHub 上の issue および pull request と統合できる、適応性のあるスプレッドシート、タスク ボード、ロード マップです。

簡単にいうと、`GitHub`が提供しているタスク管理ツールになります。
タスクだけではなく、issueやPRとも紐づけることができて、`GitHub`だけで完結できるのは嬉しいですね。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects

## 料金
料金：**無料**

始めるにあたって、お金は気になると思います。
使用量によって、料金が変わることもないので、安心して使えますね。

https://github.co.jp/pricing.html


## 始め方
それでは、GitHub Projectsを作成していきましょう。
Projectを作成したいリポジトリを開いて、`Projects`のタブを押してください。

![スクリーンショット 2024-02-04 13.38.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/4315fe72-a08e-6d30-6098-401239251c4f.png)

- `Link a project`：既にあるProjectをリポジトリに紐付ける
- `New project`：リポジトリに新たにプロジェクトを作成する

上記2つがあると思うので、今回は新たに作成するため、`New project`を押します。
押すと、新たにProjectが作成されると同時に、テンプレートを選択する画面が表示されます。

![スクリーンショット 2024-02-04 13.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/e025ec30-d25e-7a0a-8bc7-5e36944408b3.png)

### テンプレート
GitHub側が用意してあるテンプレートは、以下があります。

- Team planning
- Feature release
- Kanban
- Bug tracker
- Iterative development
- Product launch
- Roadmap
- Team retrospective

テンプレートを選択すると、`フィールド`と`ビュー`が整った状態で作成されます。
その時作成したい状況にあったテンプレートがあれば、それを選択した方がすぐ始められるのは便利ですね。

今回は、`Kanban`を選択して、始めようと思います。

:::note warn
全てのテンプレートは紹介できないので、選択する場合は、状況にあった適切なものをお選びください。
:::

![スクリーンショット 2024-02-04 14.17.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/d1ae5d1d-3fbf-4403-e1eb-7cf2ff16ae90.png)

テンプレートを選択すると、Project名を入力する画面が表示されます。
名前が決まれば、`Create project`を押して、Projectが作成されます。

![スクリーンショット 2024-02-04 14.23.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/01a50660-2ec3-f18b-874d-6d7fcced4a36.png)

これで、あとはチケットを作成して管理していく形になります。
ここからは、仕様に関して、もう少し詳しく見ていきます。

### Views
レイアウトに関して、以下3種類の見た目があります。

![スクリーンショット 2024-02-04 14.27.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/7b328f61-cfce-b5f2-20eb-2b9ee5f00de4.png)

#### Table
見た目は、以下のようになっています。

![スクリーンショット 2024-02-04 14.30.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/033acc89-3bec-7c56-da39-1b7d1804f0ed.png)

並び替えやフィルター処理があるので、その人によって使いやすい見た目に、個人でアレンジができると思います。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view#about-the-table-layout

#### Board
見た目は、以下のようになっています。

![スクリーンショット 2024-02-04 14.34.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/abc118a4-bb25-5283-431e-1405b54e2166.png)

列をステータスなどでグルーピングすると、今タスクがどんな状況なのか、一目で分かると思います。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view#about-the-board-layout


#### Roadmap
見た目は、以下のようになっています。

![スクリーンショット 2024-02-04 14.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/1bc0fdd4-f055-8b7b-266b-b1b9a906f612.png)

タイムラインで、タスクを進捗管理できる見た目となっています。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view#about-the-roadmap-layout


#### カスタマイズ
見た目は上記のように設定できて、そこからさらに、タスクをどう表示するか、何を表示させるかなど、色々とアレンジすることができます。

![スクリーンショット 2024-02-04 14.43.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/ca159ebf-0d29-2f6e-cc82-3e1a1fe9e4cd.png)

|設定|説明|
| --- | --- |
|Fields|ビュー上に表示させる項目を選択することができます|
|Column by|Board上で何をもとに、列を分けるか決めます|
|Group by|タスクをグループ分けして、表示することができます|
|Sort by|選択したフィールドで、降順・昇順を選択して、並び替えることができます|
|Field sum|ビュー上に、該当フィールドの合計値を表示させます|
|Slice by|選択してフィールドの値ごとに、タスクを表示させることができます|


これらを駆使して、Projectに適した見た目を設定していきましょう。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout


### フィールド
タスクで管理したい項目を設定することができます。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/understanding-fields

設定方法は、まずProject内の右上にある`・・・`を押し、`Settings`を選択します。

![スクリーンショット 2024-02-04 15.06.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/032a8717-f961-4b35-5961-7cf33f00aab6.png)


そうすると、以下の画面に遷移されます。

![スクリーンショット 2024-02-04 15.07.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/0d14bfe6-f4f0-6748-df94-97b76867aab3.png)

テンプレートを選択していると、既にフィールドが用意されています。
新たに作成したければ、`New field`を押して、作成してください。

フィールドには、設定できる内容がいくつかあります。

![スクリーンショット 2024-02-04 15.11.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/581b1ef9-413b-a180-3a17-d335a1656aad.png)

|設定|説明|
| --- | --- |
|Text|テキスト|
|Number|数値|
|Date|日付|
|Single select|決められた項目しか設定できない|
|Iteration|設定した期間を作成して、タスクに紐づけることができる|

#### Single select
選択すると、以下のような表示となっています。

![スクリーンショット 2024-02-04 15.15.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/674770a6-06c7-b1b4-6187-f18bdb7a748c.png)

複数オプションを作成しておいて、適切な1つを設定することができます。

#### Iteration
選択すると、以下のような表示となっています。

![スクリーンショット 2024-02-04 15.17.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/3d10c85f-63ac-c9c2-32c9-e1f59bf4a47e.png)

フィールドを作成する際に、初めの期間と、いつまでの期間なのかを設定することができます。
（※ 今回で言うと、始めを2/1、期間を2週間に設定しています。）

期間はweekとdayで選べるので、スプリントに合った期間を選択できます。
また自動で3つほど作成されるので、不要な場合は削除して、再度作り直しましょう。

:::note
開発でスプリントを導入していれば、`Iteration`はすごく便利だなと思いました。
期間も自由に設定できるので、導入した際は活用必須かなと思っています。
:::


### Workflows
タスクが`Close`になったら、ステータスを`Done`にする。などのように、`GitHub Projects`はワークフローを設定することができます。

![スクリーンショット 2024-02-04 21.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/eef4b5f1-ca37-92c9-d147-a5c7b0973124.png)

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/automating-your-project/using-the-built-in-automations

ただ、デフォルトであるワークフローは、あまり自由度は高くないです...。（ステータスを変更するだけ）
なので、もし自由度を高めたい場合は、`GitHub CLI`などを利用しましょう。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects


### Insights
Projectsのデータをグラフで可視化することができます。

Insightsに関しては、以下のユーザーしか使用できないと記載があります。

> プロジェクトに対する書き込みまたは管理者のアクセス権を持つユーザーは Insights を使用できます。

また、`履歴グラフ`という機能もありますが、注意点として以下のような記載がありました。

> 注: Insights は新しいプロジェクト エクスペリエンスで利用できます。projects (classic) では Insights を使用できません。 履歴グラフは、Organization 向けの GitHub Team と GitHub Enterprise Cloud で利用できます。 Organization 向けの GitHub Team および GitHub Enterprise Cloud と、ユーザー向けの GitHub Pro で、プライベート プロジェクトに無制限のグラフを保存できます。 パブリック プロジェクトを使用しているユーザーと Organization も、無制限のグラフを保存できます。 GitHub Free またはレガシ プランを使用しているユーザーと Organization は、プライベート プロジェクトに 2 つのグラフを保存できます。 詳しくは、「GitHub のプラン」をご覧ください。

使用できるユーザーは限られますが、それでもグラフ化されるのは、定量的に確認できる良い機能ですね。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/viewing-insights-from-your-project/about-insights-for-projects


### Add item
最後に、タスクの作成方法を紹介します。
ビューの下部にある`Add item`を押すと、タイトルを入力して、エンターを押すと、タスクを作成することができます。

![スクリーンショット 2024-02-04 22.04.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/1a2b4631-52b6-c2f0-d63b-98f68823aaa1.png)

作成できたタスクの名前を押すと、詳細が表示されます。

![スクリーンショット 2024-02-04 22.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849898/f04ced26-f4a9-4def-5387-c182b30ec91b.png)

ここで、`Markdown`を利用して、タスクの詳細を記入したり、`Convert to issue`を押してissueと紐づけることもできます。

触ってみた所感だと、タスクか`issue`のどちらかを作成して、必ず紐付けた方が管理しやすいなと思いました。

:::note
アイテムのテンプレートは作成できず、issueはテンプレートを作成することができるので、issueを先に作成して、Projectに紐付けるのがまとめやすいなと個人的には思いました。
:::

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/managing-items-in-your-project

## 注意点

:::note alert
`Add item`を押して、タイトルを入力して変換する際に、キーボードの矢印の`↓`を押すと、変換する前に、フィルターの箇所にカーソルが当たってしまいます...。
これはバグかわかりませんが、文字の変換をする際は、一工夫必要かもしれません。
:::

# まとめ
ここまで`GitHub Projects`の始め方・使い方を紹介しました。
今回記載したのは使い方でしかないので、業務でどのように使用したいかをしっかりチームで決めた後に、学んだことを生かせるようにしたいです。

まだ自分のチームでも導入には至っていないので、導入が決まればどのように運用しているか記載しようと思います。

最後までご覧いただき、ありがとうございました。

# 参考文献
https://user-first.ikyu.co.jp/entry/2023/11/09/175121

https://blog.studysapuri.jp/entry/2022/08/01/how-to-use-github-insights