GitHub を使って個人タスク管理

GitHub を使って個人用のタスク管理を開始して数週間がたったので現時点で落ち着いたやり方についてメモっておこうと思います。
注意事項として、クラウドに置いたらダメって言われてる情報は乗せないように注意してね。プライベートリポジトリだと他人には基本見えないけど、そもそも会社のルール的にダメになってるところもあるので、そこらへんは個々人で気を付けてください。

元々は Azure DevOps の Boards 使って管理していたのですが、GitHub の Issues とか Projects とかちゃんと使ったことなかったなと思い、とりあえず失敗しても一番痛くない個人タスク管理を GitHub の方にうつしてみました。

## 下準備

GitHub のリポジトリを作ります。そして以下のような感じでプロジェクトとマイルストーンとラベルを作ります。

### マイルストーン

以下のような感じで 1 月単位で作ります。Due date は、その月の最終日を指定しています。（ソートくらいにしか使わないので、設定しなくても差し支えはないと思う）

- 2021年1月
- 2021年2月
- 2021年3月

基本的に Issue を作ったらいつ頃やるのかという目安のためマイルストーンに突っ込んでおくのに使います。

### プロジェクト

プロジェクト単位や案件単位や対応しているお客さん単位で作っていきます。
例えば以下のような感じで作ります。

- 事務作業
- A 案件
- B 案件
- 2月リモート飲み会監事

作るときに Project template は Automated kanban にします。自動でタスクが移動してくれたりするので便利です。
そして Description には、プロジェクト名だけだとわからない付帯情報があればメモっておきましょう。

プロジェクトを作ったらデフォルトで追加されているカードを全部アーカイブしておきます。正直邪魔なので。

## ラベルの追加

ラベルは現時点では「今日のタスク」というラベルを用意して朝の時点で今日やりたい Issues にラベルをつけるという運用をしています。

## Issues の追加

では、Issue を追加しましょう。追加方法としては主に 2 通りあります。

1. Issues から追加
2. Projects から追加

Issues から追加するのは多くの人がやってる方法ですね。注意点としては Issue を追加した時点でマイルストーン、担当者（自分）、プロジェクトをきちんと入れておきましょう。最初が大事。

Projects から追加する方法は、以下のように To do のカラムにノートを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/10074115-ef08-1f71-441e-19670fe5b541.png)

Convert to issue で Issue に変換できるので変換したら担当者やマイルストーンを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/c627b3e9-fae0-f265-9e5f-2f369d93ead9.png)

Issue のタイトルには `[プロジェクト名] Issue のタイトル` というフォーマットを自分ルールとして適用しています。手動で頑張ってます。これは、Issues の一覧上ではプロジェクト名が見えないからです。プロジェクト名出す方法があれば知りたい…。こうしないと、事前準備みたいな Issue が複数案件で乱立したときに、何がなんだかわからなくなるからです…。

## 今日やる作業の決定

毎朝仕事を始める前に Issue とにらめっこします。そして今日やる作業にチェックを入れて「今日のタスク」ラベルを一括でつけます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/b8d6b834-2492-a573-a6b7-ec9650882481.png)

Issues が増えてくると一覧が長くなるので、そんなときはマイルストーンやプロジェクト単位でフィルタリングできるので、それを使ってノイズとなる Issues はフィルタリングしてしまうと楽です。

## 作業開始

リポジトリはローカルにクローンしておいて Visual Studio Code で開いておきます。Visual Studio Code には GitHub Pull Requests and Issues 拡張機能を入れておきましょう。

https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/33f1a7de-8582-44f8-f02a-d2424f9c1d8e.png)

そうすると、以下のようなアイコンが出てくるので、ここで Issues や Pull Requests が確認できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/24f3bdc1-b3bd-f22f-1619-e62577cf39e5.png)

上の ISSUES のところで My Issues の横らへんに鉛筆マークが出るのでそれを押してクエリの設定画面を開きます。そこに「今日のタスク」ラベルがついているものだけを表示するクエリを追加しておくと捗るので追加しておきましょう。

私の該当部分の設定は以下のようになっています。

```json
"githubIssues.queries": [
    {
        "label": "Today's Issues",
        "query": "author:${user} state:open repo:${owner}/${repository} label:今日のタスク"
    },
    {
        "label": "My Issues",
        "query": "default"
    },
    {
        "label": "Created Issues",
        "query": "author:${user} state:open repo:${owner}/${repository} sort:created-desc"
    }
]
```

基本的には My Issues (元からあるやつ) と Today's Issues を見ます。以下のように My Issues はマイルストーン単位でグルーピングされます。Today’s Issues は今日のタスクのみに絞って出てきます。便利。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/25f75ced-47f8-8e91-7da3-0fe835703788.png)

作業したいタスクの Issue で右クリックすると Start woking on Issue があるのでクリックすると作業用ブランチを作ってブランチを勝手に切り替えてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/ff85a7dd-196f-6610-3e59-fbcc94fe5c06.png)

そして、今どの Issue で作業しているのかわかりやすくチェックマークもつきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/670a7f1a-39cc-15df-b958-4ed432f4350b.png)

別の作業にうつりたいときは、別の Issue に切替もできるし、純粋に作業を辞めるということも出来ます。

注意点は変更中のファイルとかは Issue 切り替えても自動で Stash に突っ込んでくれたりコミットしてくれたりはしないので、コミットはちゃんと適時しましょう。テキストファイルで作業している場合はあまり気にしなくていいですが Word, Excel, PowerPoint のようなもので作業している場合はコミットとかのときには閉じておくのが無難です。というか閉じないとコンフリクトやらなんやらがおきて悲しい気持ちになります。

作業が一区切りついたり終わったらコミットしましょう。コマンドパレットから`git: Commit All` してもいいですし、GUI でやってもいいです。コメントもこんな感じで勝手に入ってくれているので何も考えなくていいのは楽ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/202a6724-a52e-15c9-e463-129c098cd25b.png)

コミットができたら Pull Requests を作ります。これもコマンドパレットから Pull Request 作ってもいいですし、GUI からやってもいいです。お好きな方法で。GUI の場合は以下の画面にある + ボタンから行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/d94af1aa-8911-90a8-4e6f-c1b986885cb6.png)

作ったらセルフレビューしてマージします。VS Code からレビュー・マージするとローカルブランチもまとめて消してくれるのでゴミブランチが残らなくて個人的に好きです。

プルリクをマージすると Issue もクローズするので一覧からも消えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/4b663083-dc14-d06a-053d-eb263923580b.png)

基本的にこれを繰り返していきます。

## タスク管理リポジトリをアプリとしてインストール

Chrome や Edge のようなブラウザーでは、最近は Web サイトをアプリとしてインストールできます。なのでタスク管理リポジトリをアプリとしてインストールしてワンクリックで行けるようにしておくと何かと便利です。

## まとめ

とりあえず現状こんな感じというメモでした。