プロジェクト管理ツールとしてもNotionは素晴らしい

# はじめに

## 対象としている方

- Notionに興味はあるがあまり触ったことのない方
- Notionを使っているがデータベース機能の使い方がピンと来ていない方
- Notionでプロジェクト管理をしたいと思っている方

---

## 前提

- `ドキュメント共有やHP、LP作成ツールとしてのNotionはもちろん素晴らしいけど、プロジェクト管理ツールとしてのNotionも素晴らしいよ` という個人的な想いを伝えるためのものであり、他のプロジェクト管理ツールとの具体的な比較、優劣は記載しません
- この記事では `プロジェクト管理` を `≒タスク管理` という文脈で記載しています
- Notionの基本的な概念には触れていません

# プロジェクト管理ツールとしてのNotionのここが素晴らしい

この記事の本題です。
(長文ですがこれでもまだ魅力のほんの一部分しか伝えられていません)

## 0. Notionのデータベースについて

Notionの素晴らしさを伝える前に、Notionのデータベース機能を説明します。

Notionには`データベース`という機能があり、以下のように自由にテーブルやボード、タイムラインのデータベースなどをつくることができます。

テーブル | ボード(かんばん)
--- | ---
![Aug-19-2021 17-30-00.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/5232e7e4-1d60-199f-ff67-8f3afd294399.gif) | ![Aug-19-2021 17-31-25.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/42ef0fa6-35db-0bfa-33f7-69fae1443005.gif)


この記事ではデータベース機能の利用を前提にしたNotionの素晴らしさを記載します。

## 1. ボード、テーブル、タイムラインなど表示形式を切り替えられる

BacklogやAsanaなど他のツールでも同様のことができますが、Notionでも`ビュー`という機能で表示切り替えができます。

![Aug-19-2021 17-33-25.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/6265b558-91b8-ce95-50c0-53a6808e623c.gif)

また、ビューごとにフィルターを掛けられるので、例えばスプリントごとにビューを切り替えたりもできます。

Sprint1のタスク | Sprint2のタスク
--- | ---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/12654288-db4c-6bc4-4dd1-ec2b129e89e1.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/98522374-6ed5-85dc-092e-35b6ef4a1862.png)

さらに、このビューで便利なのが、`フィルターを掛けた状態でタスクを追加すれば、フィルターに合致した項目が自動的に挿入される`点です。

例えば、以下のように3つのフィルターを設定しておいた状態でタスク追加すると3つの項目が自動的に設定されます。

![Aug-19-2021 17-50-30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/3a4092bc-033d-7e3e-6c33-bc2809802733.gif)

範囲指定して一括設定もできますが、設定する項目が複数ある場合は都度すべての項目を設定するとそれなりに手間なので、ビューとフィルターを効果的に活用できると管理の手間を省くことができます。

## 2. 項目(プロパティ)を自由に設定できる

※`Property`という名称ですが、この記事では`項目`と表記しています

こちらも他ツールでもありますが、Notionでは非常に柔軟に設定できます。

設定例と、設定可能な項目の種類が以下になります。

項目設定例(Add a propertyで追加できる) | 設定可能な項目の種類(抜粋)
--- | ---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/9058725a-28d5-b268-7fd8-df271bf2ae2b.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/59ffac9e-b1bf-578b-91a7-39cc1a83e526.png)

また、項目はビューごとにフィルターと表示/非表示を切り替えられるので`項目が増えすぎて見づらい`問題も工夫次第で解消できます。

例えば、

ボード | テーブル
--- | ---
・フィルター: 対象スプリントのみ<br/>・表示項目: 作業分類のみ | ・フィルター: なし<br/>・表示項目: ストーリーポイントのみ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/acce6b23-fbf1-d44a-22bc-601eff3577dd.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/9365d264-43b7-137a-6df0-8933de3362fa.png)

みたいなことができます。
(ちなみに上記テーブルビューに`SUM`が表示されていますが、テーブルビューではSumやAverageなどの集計機能を利用することができます)

## 3. 個人専用ビューがつくれる

Notionでは`任意のページにデータベースを埋め込む`ことができます。
また、埋め込んだ先では専用ビューを設定できます。

例えば、

![Aug-19-2021 17-39-03.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/bbcb9218-c033-c4a5-2f8c-186d16a9b219.gif)


このように任意のページ内にデータベースを埋め込み、埋め込んだ先で専用のビューを設定することができます。
特定の人だけ使いたいビューがある場合に重宝する機能です。

例えば、

- 個人ページに自分のタスクだけを表示する
- ふりかえりページに対象スプリントで行ったタスクだけを表示する

などの使い方ができます。

## 4. 日報と紐付けられる

3.の応用で、Notionで日報や週報を書いている場合、その中にデータベースを埋め込み、やったこと、次やることを連携させることができます。
こちらについては、以前同じプロジェクトに関わった @watatakahashi が [「Notionでかんばん、日報、KPTを組み合わせると良い感じになった」](https://qiita.com/watatakahashi/items/c327dea96fee80fd9ab2) という記事でまとめてくれているのでこの記事では割愛させて頂きます。

## 5. 親子関係がつくれる

Notionのデータベースではタスクの親子関係を設定することもできます。

- スプリントバックログのアイテムごとに子タスクを管理したい
- ガントチャートに親タスクのみを表示し、細かい子タスクは別で管理したい

というような場合に効果を発揮します。

`スプリントバックログのアイテムごとに子タスクを管理したい`の例だと、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/4554d6e5-4efe-f757-e861-9d0c22917f70.png)

このように、

- ボードには親タスクのみ表示する
- 表示項目に子タスクを表示する

とすることで、タスクの親子関係を可視化することができます。

さらに、子タスクの任意の集計、合計値なども取得することもできます。
例えば、

子タスク1 | 子タスク2 | 親タスク(工数計は自動算出)
--- | --- | ---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/cd2ae6a9-1a31-8085-fb5f-53737eee23a0.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/9c54d6c4-43f7-fbee-999d-c8c14b62cb3a.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/72c0c251-6361-ee25-2a0d-77e7eb113d81.png)

このように子タスクの合計工数を取得できたりします。
スプリントとスプリントバックログを紐付けて、スプリントごとの合計ストーリーポイントを表示したりするのにも使えますね。

## 6. 項目のカスタマイズができる

項目の種類に`Formula`というものがあり、こちらがものすごく有能です。
Formulaは`式を埋め込める`項目ですが、`例えばこんなことができるよ`という例を見ていただくのがわかりやすいと思うのでいくつか記載します。
(項目名は任意なので適宜読み替えてください)

### 例1: 工数の予実差を表示する

`実績工数(日)`と`予定工数(日)`という項目がある状態で

```
"予実差: "+format(prop("実績工数(日)")-prop("予定工数(日)"))+"日"
```

とすると、予実差を自動算出することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/24700ab5-cd41-bc76-71b5-68c95ca3e466.png)

### 例2: 期限までの日数をわかりやすく表示する

こちらは

1. 期限日と現在日付の差分を表示する項目をつくる
2. つくった項目を使ってわかりやすく表示する

の2段階で設定します。

まずは1.について、`期限日`という項目がある状態で

```
dateBetween(prop("期限日"), now(), "days")
```

とすると、期限日と現在日付の差分を取得することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/af23bec5-9809-838c-afb2-8b4786b6105d.png)

次に、`期限日_表示用`という項目を追加して、

```
if(prop("期限までの日数") < 0, "【😱期限超過😱】期限を" + format(prop("期限までの日数")) + "日過ぎています", if(prop("期限までの日数") < 2, "🔥期限まであと" + format(prop("期限までの日数")) + "日", "期限まであと" + format(prop("期限までの日数")) + "日"))
```

とすると、期限までの日数によって表示を切り替えることができます。

設定情報 | 表示例
--- | ---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/707edcfb-f7e5-520d-f2d6-33ac3b24c273.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/e30bd698-905e-c3b8-1685-8447ed2833dd.png)


### 例3: 親タスクの進捗率を視覚的に表示する

[Notion でプロジェクトの進捗を可視化する（Formula 機能の使い方）](https://blog.35d.jp/2021-01-14-notion-progress-bar)を参考にさせて頂きました。
設定方法は上記記事内に記載されていますので割愛しますが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173370/e44a6b06-3f55-639d-8eec-ba721d4825c1.png)

このように視覚的に進捗率を表示させることもできます。

# プロジェクト管理ツールを利用する際に個人的に気をつけている点

前項でNotionの素晴らしさを記載しましたが、こちらも記載しておかないとミスリードを招きかねないため個人的に気をつけている点を本項で記載します。

## 1. プロジェクト管理ツールで複雑なことをしようとする前に`もっとシンプルにできないのか`を何度も考えたほうが良い

経験上、うまく回っているプロジェクトほどツールの管理方針がシンプルで、逆にうまく回っていないプロジェクトほどツールベースで色々やろうとしているように感じています。
ツールで複雑なことをやりたくなった場合、ツールに何かを求める前に `なぜこんな複雑なことをしなければいけない状況になってしまっているのか` `もっとシンプルにできないのか` を考えたほうが良い思います。

例えば、`割り込みで期限付きの優先タスクが入ってきた場合を考慮する`は最たる例で、

- 発生頻度が低いのであれば無理に考慮せず仕組み化しない
- 発生頻度が高いのであれば体制そのものを見直す

など検討して、それでもツールベースで何かしら考慮せざるを得なくなった場合にのみ対応すべきだと考えています。

## 2. `プロジェクト管理ツールに100点はない`ということを共通認識しておいたほうが良い

プロジェクト管理ツールに限らずほとんどの業務、ツールに共通した話ですが、`100点はない`ということを前提に置くだけで必要以上に軋轢が生じずに済むケースはそれなりにあると思います。

`何を求めるか`と同時に`どこまでは受け入れられるか`も認識をすり合わせておくことが大事かなと思います。

プロジェクト管理はどんなツールを使ったとしても歯がゆい点が少なからず残ると思います。
もちろん残った歯がゆさをどうにかすることも重要ですが、そのために膨大なコストを支払うケースも少なくありません。
SI業界では`海外は業務をシステムに合わせるが、日本はシステムを業務に合わせるから云々`などとよく言われますが、それと同じでコスパを鑑みたうえで`本当にそこまでやる必要があるのか`は常に考えておいたほうが良いと思います。

# 個人的に思うプロジェクト管理ツールとしてのNotionの使い所

前項までの内容を見ると`じゃぁ結局プロジェクト管理ツールにNotion使うのってどんな時がいいの？`という疑問が出てくるかなと思うので、本項で`個人的に思う`使いどころを記載します。

以下いずれかに該当する場合はプロジェクト管理ツールにNotionを検討してみる価値があると思います。

- [ ] チームですでにNotionを使っていてNotion愛に溢れている
- [ ] チームにNotionの導入を検討していて、その他のプロジェクト管理ツールにまでお金を払うことが厳しい
- [ ] プロジェクト管理で色々やる必要が出てきた結果Excelに戻ってしまった
- [ ] プロジェクトの特性上どうしてもツールで複雑なことをやらなければならず、すでに二重、三重管理をしてしまっていて、どうにか情報を一元化したい

ここまでNotionのデメリットに触れませんでしたが`他ツールにあってNotionにないもの`もたくさんあると思うので、現在利用しているツールでうまく運用できているのであれば無理に乗り換える必要はないと思います。

# さいごに

Notionの魅力をギュッと濃縮して伝えたいなと思いましたがすごく難しいですね。。。

後半に記載した`できるかぎりルールはシンプルに`というのはその通りですが、組織の歪みなどのシワ寄せがプロジェクトに入り込んでくることはまぁまぁあるのかなと思うので、もしも記載したケースに出くわした際の参考になれば幸いです🙇