『エンジニアのための時間管理術』に準拠したタスク管理システムを作った話

# これはなにか？

[『エンジニアのための時間管理術』](https://amzn.to/2WugPpN)
を読んだのですが、ITエンジニアがタスク管理をする上で良本でした。
読んだ後、早速それに基づいたタスク管理を始めてみまして、
紆余曲折を経て運用が落ち着いてきたので、運用方法をまとめてみます。
実際の[スプレッドシート](https://docs.google.com/spreadsheets/d/1_FHk7etNVosbMMld__9BPAeJWZD7l6NnEJJSlDIWbGc/edit?usp=sharing)を見ていただきながらお読みいただくとスムーズかと思います。

# タスク管理の６原則
1. タイムマネジメントに関するものを全て1箇所にまとめる
- 今取り組んでいることに頭を使い、それ以外のことには外部ストレージを使用する
- 定期的に行うことに対しては日課（ルーチン）を定める
- 習慣やモットーを身に付けることにより、事前に決断を下す
- プロジェクト（作業）タイムでは集中力を維持する
- これらのツールを仕事以外の時間にも応用し、日常生活を改善する
<br>
<br>

『エンジニアのための時間管理術』で提唱されているタスク管理の原則です。
これらが生み出された背景については書籍に説明を譲ります。
時間がない場合、一旦この原則だけ押さえて運用システム作ると何か得られると思います。



# タスク管理の2シート

- [こちらのシート](https://docs.google.com/spreadsheets/d/1_FHk7etNVosbMMld__9BPAeJWZD7l6NnEJJSlDIWbGc/edit?usp=sharing)をご覧いただくとスムーズです。


## タスクプール
![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/8bda2755-a154-9a08-d6b7-d74bb7306277.png)

- 自分の代わりにタスクを覚えておいてくれる外部ストレージ。
- 外部ストレージを使うことで、脳のリソースを"記憶"ではなく"処理"に当てられる
- このシートに先々のタスクまでまとめて入れておくことで、「何か忘れてないかな？」と不安になることが無くなる
- プールの各項目は下記のように設計

| 項目名 | 説明 |
|:-----------|:------------|
| # | タスクを識別するIDです。    |
| カテゴリ     | タスクを整理するための分類です。      |
| タスク      | タスクを一言で記述します。       |
| 工数予算       | タスクにかかる工数を予測します。タスク分解が甘いと大きくズレることも。    |
| ステータス    | タスクの完了状態です。"未着手","待機","移譲","完了"の4項目が入っています。 <br><br>- 未着手：タスクに手がつけられておらず、本日行う予定もない <br>- 待機：**タスクが本日実施予定**となっている <br>- 移譲：タスクを誰かに引き継いた <br>- リスケ：タスクをリスケした <br>- 完了：タスクが完了した  |
| 優先度    | 緊急度と重要度に応じてA-Cのランク付けをします。<br>Cのタスクは実行しない印象    |
| 実施日    | タスクを実行した日を記録します   |

- ステータス欄の"移譲"と"完了"を非表示にして、見るべき情報を最低限にします。



## 本日のタスク
![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/4a4d0f4f-30da-369a-b945-e824743b24d0.png)

- シートの見方
    - A - D列は、"タスクプール"から取り出したタスクの一覧。始業時と終業時以外は見ない
    - F - J列は、本日のタスクプール。今日やるべきことは全てここにリスト化されている
    - L - O列は、本日のスケジュール。朝に立てたものを元にしつつも、随時更新していく
- 本日行うタスクの全てとスケジュールが管理されている
- 今日何をやったら「完了」と見なせるのかが明確になることで不安や焦りが無くなる
- タスクを完了させていくことに対する喜びを感じられる（後述）
- 1日の最初と最後以外は、基本的にこのシートだけを見てタスクを黙々と消化していく



# 1日の流れ
基本的にタスク管理は1日単位で行います。
"タスクプール"と"本日のタスク"を行き来しながら見てみましょう。

## 始業時
- "本日のタスク"のマスタシート(コピー用のシート)をコピーして、本日使うシートを作成する
- "タスクプール"で新たなタスクを洗い出す
- "タスクプール"から本日のシートに本日実施するタスクをコピーする（コピー元では、コピーされたタスクのステータスを"待機中"にしておく）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/19a933e7-02a9-e1cc-1a86-26b9d13409a7.png)


- "本日のタスク"上でタスクをスケジューリングする
- "本日のタスク"でスケジューリングまで完了すると下記のようになる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/c528e43d-f718-9032-c116-9c0772ee8645.png)



## 業務中
#### タスクの開始
- 基本的には、"本日のタスク"のF-O列のみを見てタスクを進めていく
- まずは朝一で立てたM列のスケジュールに沿ってタスクを実行する
- スケジューリングがズレてきたら、N列の変更スケジュールに沿ってタスクを実行する

#### タスクの実行
- タスクの差し込みがない限り、基本的にはタスクの実行に集中する
- スケジューリングシステムを外部化することで、タスクの実行に集中できるのがこのシステムの強みだ

#### タスクの完了
- タスクが完了したら、"本日のタスク"N列のステータスを「完了」に変更する
- ステータスを「完了」にすると嬉しくなるような条件付き書式を設定しておくと良い

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/2c3dddfe-6306-5035-f24f-000c3d8ebd3f.png)

#### タスクのリスケ
- タスクを翌日以降にリスケする場合は、"本日のタスク"N列のステータスを「リスケ」に変更する
- リスケも立派な「タスク消化」である。よってステータスを「リスケ」にしても嬉しくなるようにしておくと良い

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/fdda3392-5fd1-cec7-5984-aca7a9450502.png)


#### タスクの移譲
- タスクを誰かに移譲する場合は、"本日のタスク"N列のステータスを「移譲」に変更する
- 移譲も立派な「タスク消化」である。よってステータスを「移譲」にしても嬉しくなるようにしておくと良い

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/fb98f4c1-bf92-16c7-58eb-af6bac22ae7f.png)


#### 実績入力 / スケジューリングの変更
- 30分or60分ごとに"本日のタスク"O列で実績を入力する
- スケジューリングが変更になりそうな場合は、"本日のタスク"N列でスケジューリングの修正を行う
- 下記は「App説明文の作成」が想定以上にかかっている場合のスケジューリング変更の例
![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/3593af76-42e2-de5d-8bf1-cbacde31aa49.png)


#### 差し込みタスクへの対応
- 差し込みタスクを本日実施する場合
    - "本日のタスク"のG-J列に、タスクを追加する
    - "本日のタスク"N列で、スケジューリングに必要な変更を加える
    - タスク追加によって副作用の出るタスクがあれば、J列のステータスを更新する   

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/33277575-309d-8d5b-c2ec-416f65f75280.png)

- 差し込みタスクを翌日以降に追加する場合
    - "タスクプール"にタスクを追加する


## 終業時
#### "本日のタスク"の全タスクを「消化」する
- 終業時に「待機(本日中にやる)」のままで終わるタスクは論理上ないので、全タスクのステータスを"移譲","リスケ","完了"のいずれかに振り分ける
- 全てを「消化」すると下記のようにタスクが全て濃青色で塗りつぶされる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/33cbd116-4a8e-38f2-3c27-e104a497b3bf.png)

#### "タスクプール"にデータを統合する
- "タスクプール"から引き出されたタスクの完了状況を更新する（実施日も入力しよう）
- 新しく発生したタスクのうち、**本日中に完了しなかったタスク**をタスクプールに転記する
    - 新しく発生し、本日中に完了したタスクは転記の必要はない。終わったことは忘れよう
- 完了状況を反映するとこんな感じになる。2つのリスケしたタスクを明日以降で処理する必要がありそうだ

![image.png](https://qiita-image-store.s3.amazonaws.com/0/250543/fd62adac-c85c-6508-ff63-0c5a50fd1905.png)

#### 明日の事は明日の自分に任せて帰宅する
- 終業作業が終わったら気持ちよく帰宅しよう
- "本日のタスク"では全てのタスクが濃青色で塗りつぶされている。形はどうあれ、自分はタスクを消化したのだ


# まとめ
文体があまり安定していませんでしたが、
以上がタスク管理システムの全体像です。

このシステムを作ってみてしばらく運用していると、
日々感じる達成感が少し増え、不安感が少し減ったような気がします。

タスクとスケジュールが一箇所に管理されることで抜け漏れへの恐怖は無くなりますし、
タスクを消化する時間とスケジュールを直す時間、タスクを洗い出す時間が明確に分かれることで、
今やるべきことに集中できるようになった気がします。

まだまだ実装できていない改善点もある中での公開となり恐縮ですが、
色々ご意見いただけますと幸いです。