Notionでプロジェクト管理とガントチャート:タイムラインで進み具合を見る

公開 書いた人 大林 諒

Notion(ノーション)には、ガントチャートという名前の機能はありません。タイムラインのビューが、その役割をします。日付の範囲を持ったデータベースをタイムラインで表示すると、横軸が日付、1行が1つの仕事の棒になり、どの仕事がいつからいつまでで、どこが重なっているかが一目で分かります。この記事では、プロジェクトとタスクの2つのデータベースをつなぎ、タイムラインで並べ、進み具合を%で出すところまでを作ります。読み終わると、2〜3か月かかるイベントや新しい取り組みの準備を、スタッフ全員が同じ画面で追えるようになります。前提は「Notionでタスク管理:担当・期限・状態のデータベースを作る」で作るタスクのデータベースがあることです。無ければ、この記事の手順の中で一緒に作れます。

例は、スタッフ6名の予約制の料理教室「サンプル料理教室」が、8月の土曜に開く「夏の親子料理イベント」(定員12組)の準備です。6月にメニューを決め、7月にチラシとホームページで告知し、8月に当日を迎えます。代表・講師3名・受付2名に加えて、チラシを作る外部のデザイナーと印刷会社が関わります。

「プロジェクト」データベースのタイムラインビュー。「夏の親子料理イベント」「秋の新メニュー」「ホームページの写真の撮り直し」の3本の棒が並んでいる
「プロジェクト」データベースのタイムラインビュー。「夏の親子料理イベント」「秋の新メニュー」「ホームページの写真の撮り直し」の3本の棒が並んでいる
この記事の内容
  1. 先に決めること
  2. 作るものの一覧
  3. 公式のテンプレートから始めるか、自分で作るか
  4. 作る手順
  5. 応用
  6. 週1回の進み具合の確認の回し方
  7. Notionのガントチャートでできないこと
  8. よく詰まるところ
  9. 次にやること

先に決めること

作り始める前に、次の4つを決めておきます。

1つ目は、何をプロジェクトと呼ぶかです。サンプル料理教室では「終わりの日が決まっていて、3つ以上のタスクに分かれる仕事」をプロジェクトにしています。夏のイベント、新メニューの立ち上げ、ホームページの写真の撮り直しはプロジェクトです。毎月の発注や毎週の掃除は終わりがないので、プロジェクトではなく繰り返しのタスクです。ここを曖昧にすると、プロジェクトのデータベースに「日々の受付業務」のような終わらない行が増えて、タイムラインが意味を持たなくなります。

2つ目は、データベースを2つに分けるかです。小さな仕事なら、タスクのデータベース1つにサブアイテムを使えば足ります。分けたほうがいいのは、プロジェクトが同時に2本以上走る、プロジェクトごとに予算や責任者を持たせたい、プロジェクトの一覧を代表が月に1回見る、のどれかに当たるときです。サンプル料理教室は同時に2〜3本走るので、2つに分けます。

3つ目は、タスクに開始日を持たせるかです。タイムラインで棒を引くには、日付に幅(開始と終了)が要ります。期限だけのタスクは、タイムラインでは1日分の点になります。プロジェクトの中のタスクには開始日を入れる、日々の雑務は期限だけでよい、と分けておきます。

4つ目は、誰が週に1回、進み具合を見るかです。タイムラインは更新されて初めて役に立ちます。プロジェクトごとに責任者を1人決め、その人が毎週の確認で日付とステータスを直します。

作るものの一覧

プロジェクトのデータベースには、次のプロパティを置きます。

プロパティ名種類入れるもの補足
プロジェクト名タイトル「夏の親子料理イベント」終わりが分かる名前にする
状態ステータス計画中・進行中・保留・完了・中止未着手のカテゴリーに計画中、進行中のカテゴリーに進行中と保留、完了のカテゴリーに完了と中止
責任者ユーザー代表1人に決める
期間日付(終了日あり)6月1日〜8月31日振り返りまで含めた期間
目的テキスト「夏休みの親子で新しいお客様を12組集める」1行で書く
タスクリレーションタスクのデータベースの該当行相手側に「プロジェクト」として表示
タスク数ロールアップタスクの「すべてカウント」確認用
見込み時間ロールアップタスクの「見込み時間」の合計大まかな負担の目安
完了率数式完了したタスクの割合表示をバーにする
残り日数数式終了日まで何日か週1回の確認で見る

タスクのデータベースには、タスク管理の記事で作ったプロパティに、次の3つを足します。

プロパティ名種類入れるもの補足
開始日日付手を付ける日プロジェクトのタスクだけ入れる
プロジェクトリレーションプロジェクトのデータベースの該当行プロジェクト側から作ると自動でできる
見込み時間数値かかりそうな時間(時間単位)正確でなくてよい

ビューは、プロジェクト側に「タイムライン」「一覧」、タスク側に「プロジェクトのタイムライン」を作り、さらにプロジェクトのページの中にそのプロジェクトのタスクだけを並べたタイムラインを置きます。

公式のテンプレートから始めるか、自分で作るか

Notionには、プロジェクトとタスクの2つのデータベースが最初からつながったテンプレート「Projects & tasks」があります。Notionのヘルプのガイドでは、To-doリスト(1つのデータベースの簡単なタスク管理)、Projects & tasks(プロジェクトとタスクの2つのデータベース)、Projects, tasks & sprints(スプリントで区切る、開発チーム向け)の3つが紹介されています。Projects & tasksのプロジェクト側には、関連するタスクの完了率がバーで表示されるプロパティと、開始日と終了日を使うタイムラインのビューが最初から入っています。

比べること公式のテンプレート自分で作る
作る時間数分1時間ほど
プロパティ名テンプレートの名前と項目名のまま入るので、会社の言葉に直す手間がある最初から会社の言葉で付けられる
既存のタスクのデータベーステンプレート側に別のタスクのデータベースができる既存のタスクのデータベースにつなげられる
仕組みの理解動いているが、なぜ動くかが分かりにくい直したいときに自分で直せる

すでにタスクのデータベースを運用しているなら、自分で作るほうが向いています。テンプレートを入れるとタスクのデータベースが2つになり、どちらに入れるかで迷う元になるからです。これからタスク管理も始める会社なら、テンプレートを入れて、プロパティ名を日本語に直し、使わないビューを消して使うのが早道です。テンプレートを入れる場合も、この記事の手順を読んでおくと、どこを直せばいいかが分かります。テンプレートの直し方は「Notionのテンプレートの使い方:公式テンプレートを会社用に直して配る」でも書いています。

作る手順

プロジェクトのデータベースを作る

  1. サイドバーの「教室全体」チームスペースで「+」を押し、新しいページを作る。
  2. タイトルを「プロジェクト」にする。
  3. 本文で /データベース と入力し、フルページのデータベースを選ぶ。
  4. 「名前」の列を「プロジェクト名」に変える。
  5. 「ステータス」の種類で「状態」を足し、選択肢を計画中・進行中・保留・完了・中止にして、未着手・進行中・完了のカテゴリーに振り分ける。
  6. 「ユーザー」の種類で「責任者」、「日付」の種類で「期間」、「テキスト」の種類で「目的」を足す。
  7. 最初の行に「夏の親子料理イベント」と入れ、「期間」のセルを開いて「終了日」をオンにし、6月1日から8月31日を入れる。
「夏の親子料理イベント」の期間のセルを開いたところ。終了日がオンになり、6月1日と8月31日が入っている
「夏の親子料理イベント」の期間のセルを開いたところ。終了日がオンになり、6月1日と8月31日が入っている

タスクとリレーションでつなぐ

  1. プロジェクトのデータベースで、列の右端の「+」を押す。
  2. 種類で「リレーション」を選び、つなぐ先に「タスク」データベースを選ぶ。
  3. 「タスクに表示」のトグルをオンにし、相手側のプロパティ名を「プロジェクト」にする。
  4. プロパティ名を「タスク」にして「リレーションを追加」を押す。
リレーションの設定画面。つなぐ先に「タスク」データベース、「タスクに表示」のトグルがオンで、相手側のプロパティ名が「プロジェクト」になっている
リレーションの設定画面。つなぐ先に「タスク」データベース、「タスクに表示」のトグルがオンで、相手側のプロパティ名が「プロジェクト」になっている

「タスクに表示」をオンにしておくと、タスクのデータベースにも「プロジェクト」の列ができ、どちらからでもつなげられます。オフのままだと、タスクを開いてもどのプロジェクトの仕事か分からず、プロジェクトの一覧からしか追えません。リレーションの考え方は「Notionのリレーションとロールアップ:2つのデータベースをつなぐ」に詳しく書いています。

タスクに開始日と見込み時間を足す

  1. タスクのデータベースを開く。
  2. 「日付」の種類で「開始日」を足す。
  3. 「数値」の種類で「見込み時間」を足す。
  4. 「夏の親子料理イベント」のタスクを入れ、「プロジェクト」の列で夏の親子料理イベントを選ぶ。

サンプル料理教室では、次のタスクを入れました。

タスク名担当開始日期限見込み時間
イベントのメニューを決める講師A6月1日6月7日4
メニューを試作する講師A・講師B(担当は講師A)6月8日6月20日8
料金と定員を決める代表6月15日6月20日1
チラシの原稿を作りデザイナーに渡す受付A6月21日6月28日3
チラシのデザインを確認する代表6月29日7月5日1
チラシを印刷会社に入稿する受付A7月6日7月10日1
ホームページとLINEで告知する受付B7月11日7月12日2
申込を受け付ける受付B7月11日8月1日6
食材と使い捨ての器具を発注する受付A8月3日8月8日2
当日の役割分担を決める代表8月3日8月10日1
アンケートを集計して振り返る代表8月24日8月31日2

タスク数・見込み時間をロールアップで出す

  1. プロジェクトのデータベースで「+」を押し、種類で「ロールアップ」を選んで名前を「タスク数」にする。
  2. リレーションに「タスク」、プロパティに「タスク名」、計算に「すべてカウント」を選ぶ。
  3. もう1つロールアップを足して名前を「見込み時間」にする。
  4. リレーションに「タスク」、プロパティに「見込み時間」、計算に「合計」を選ぶ。

夏の親子料理イベントなら、タスク数が11、見込み時間が31と出ます。見込み時間は正確な工数ではなく、「このプロジェクトはスタッフの手をどれくらい取るか」をざっくり掴むための数字です。

完了率を数式で出す

完了率は、数式でリレーション先のタスクを数えるのがいちばん確実です。ロールアップでも、対象のプロパティと計算の選び方によっては割合を出せる場合があります。ただ、「やめた」を分母から外すような数え方は数式のほうが思いどおりに書けるので、ここでは数式で作ります。

  1. プロジェクトのデータベースで「+」を押し、種類で「数式」を選んで名前を「完了率」にする。
  2. 「関数の編集」を開き、次の式を入れる。
let(
  active,
  prop("タスク").filter(current.prop("ステータス") != "やめた"),
  if(
    active.length() == 0,
    0,
    active.filter(current.prop("ステータス") == "完了").length() / active.length()
  )
)
  1. 数式のプロパティの設定で、数値をパーセントで表示する形式を選ぶ。
  2. 表示の方法を、数字ではなく進み具合の棒にする。

この式は、つながったタスクのうち「やめた」を除いたものを分母にし、「完了」のものを分子にしています。「やめた」を分母に残すと、やらないことにしたタスクのせいで完了率が100%にならなくなります。タスクが1件も無いときに0で割らないよう、if で0を返しています。

続けて、終了日までの残り日数を出します。

if(
  empty(prop("期間")),
  "",
  format(dateBetween(dateEnd(prop("期間")), now(), "days")) + "日"
)

dateEnd は日付の範囲から終了日を取り出し、dateBetween は2つの日付の差を指定した単位で返します。期間が空のときは空の文字を返すので、もう片方も format で数字を文字にし、「日」を付けて型をそろえています。「-3日」のようにマイナスになっていれば終了日を過ぎています。数式の書き方は「Notionの数式(関数):期限・進み具合・金額をよく使う式で計算する」でまとめています。

プロジェクトのデータベースのテーブルビュー。完了率がバーで表示され、夏の親子料理イベントが45%、残り日数が入っている
プロジェクトのデータベースのテーブルビュー。完了率がバーで表示され、夏の親子料理イベントが45%、残り日数が入っている

タイムラインのビューでガントチャートにする

まず、プロジェクトの一覧をタイムラインにします。

  1. プロジェクトのデータベースの名前の横の「+」を押す。
  2. 種類で「タイムライン」を選び、名前を「タイムライン」にする。
  3. 設定メニューの「レイアウト」を開き、「タイムラインの表示」で「期間」を選ぶ。
  4. 右上の「今日」の左のドロップダウンで、表示の単位を「月」にする。
  5. 設定メニューの「プロパティの可視性」で、棒に出すプロパティを「責任者」「完了率」にする。

次に、タスクのデータベースにタイムラインを作ります。タスクは開始日と期限の2つの日付を持っているので、別々のプロパティを開始と終了に使う設定にします。

  1. タスクのデータベースの名前の横の「+」を押し、「タイムライン」を選んで名前を「プロジェクトのタイムライン」にする。
  2. 設定メニューの「レイアウト」→「タイムラインの表示」を開き、開始と終了に別々の日付のプロパティを使う形にする。
  3. 開始に「開始日」、終了に「期限」を選ぶ。
  4. フィルターで「プロジェクト」が空でないものに絞り、「全員に保存」を押す。
  5. 表示の単位を「週」にする。
  6. 「レイアウト」の「読み込み制限」で、プロジェクトのタスクが全部出る件数を選ぶ。

読み込み制限は、一度に何件まで読み込むかの設定です。タスクの数より少ないままだと、後ろのほうのタスクが続きを読み込む操作の向こうに隠れます。プロジェクトのタイムラインでは多めにしておきます。

左側の「>>」を押すと、タイムラインの左にテーブルが出て、タスク名・担当・ステータスを表のように並べたまま棒を見られます。これがいわゆるガントチャートの形です。表示するプロパティは「レイアウト」→「テーブルプロパティ」で選びます。

タスクのデータベースの「プロジェクトのタイムライン」ビュー。左にタスク名・担当・ステータスのテーブル、右に6月から8月の棒が並んでいる
タスクのデータベースの「プロジェクトのタイムライン」ビュー。左にタスク名・担当・ステータスのテーブル、右に6月から8月の棒が並んでいる

棒の左右の端をドラッグすると、開始日と期限を直せます。表示している期間の外にあるタスクは、行の端に小さな矢印が出て、押すとその期間に移ります。右上の「今日」を押すと、今日の日付に戻ります。

プロジェクトのページの中に、そのプロジェクトのタスクだけを並べる

プロジェクトごとにタイムラインを見たいときは、プロジェクトのページを開いた中に、タスクのデータベースのリンクドビューを置きます。

  1. 「夏の親子料理イベント」のページを開く。
  2. 本文で /linked と入力し、「タスク」データベースを選ぶ。
  3. ビューの種類を「タイムライン」にする。
  4. フィルターで「プロジェクト」が「夏の親子料理イベント」を含むものに絞る。
  5. 開始に「開始日」、終了に「期限」を選ぶ。

プロジェクトが増えるたびにこの手順を繰り返すのは手間なので、プロジェクトのデータベースにテンプレートを作り、その中にこのリンクドビューを置いておきます。新しいプロジェクトを作ったら、リンクドビューのフィルターの「プロジェクト」をそのプロジェクトに選び直すだけで済みます。

「夏の親子料理イベント」のページの中。上に目的と期間、下にこのプロジェクトのタスクだけを並べたタイムラインのリンクドビュー
「夏の親子料理イベント」のページの中。上に目的と期間、下にこのプロジェクトのタスクだけを並べたタイムラインのリンクドビュー

依存関係の矢印でつなぐ

「メニューを決める」が終わらないと「試作する」に進めない、「チラシのデザインを確認する」が終わらないと「入稿する」に進めない、といった前後を、タイムラインの上で矢印でつなげます。

  1. タスクのデータベースの設定メニューから「データベースの設定」→「その他の設定」を選ぶ。
  2. 「依存関係」を押す。
  3. 日付の自動シフトを「日付が重なる場合のみシフト」にする。
  4. 「週末を避ける」はオフにする(教室は土日も動くため)。
  5. 「依存関係を設定」を押す。
  6. 「プロジェクトのタイムライン」のビューで、「イベントのメニューを決める」の棒にカーソルを合わせ、右側に出る矢印を「メニューを試作する」の棒までドラッグする。

自動シフトを「日付が重なる場合のみシフト」にしておくと、前のタスクが延びて後ろのタスクとぶつかったときだけ、後ろのタスクの日付が押し出されます。「アイテム間の期間を維持してシフト」は、前が1日延びれば後ろも全部1日ずれる設定で、日程を詰めたい場面では余計に延びます。

依存関係の矢印はタイムラインのビューでしか見えません。テーブルやボードでは、前後関係は隠れたままです。

タイムラインで「チラシの原稿を作りデザイナーに渡す」→「チラシのデザインを確認する」→「チラシを印刷会社に入稿する」が矢印でつながっている
タイムラインで「チラシの原稿を作りデザイナーに渡す」→「チラシのデザインを確認する」→「チラシを印刷会社に入稿する」が矢印でつながっている

外部のデザイナーと印刷会社への見せ方

チラシを作る外部のデザイナーは、ゲストとして「夏の親子料理イベント」のページだけに招待します。ワークスペース全体やプロジェクトのデータベース全体には招待しません。ゲストに見せたいのは「チラシの原稿を渡す日」「デザインの確認日」「入稿日」の3つだけなので、イベントのページの中に、チラシ関係のタスクだけに絞ったリンクドビューを置いて案内します。ゲストの扱いは「Notionの共有と権限:メンバーとゲストの違い、ページごとの権限の決め方」に書いているので、ここでは「招待は必要なページだけ」とだけ押さえておきます。

応用

遅れているタスクに印を付ける

タスクのデータベースに数式のプロパティ「遅れ」を足し、期限を過ぎて完了していないものに赤い文字で印を付けます。

if(
  and(now() > prop("期限"), prop("ステータス") != "完了", prop("ステータス") != "やめた"),
  style("遅れ", "red", "b"),
  ""
)

タイムラインの棒に出すプロパティに「遅れ」を足すと、棒の上に赤い「遅れ」が出ます。週1回の確認で、まずここを探します。

タスクのタイムラインで「チラシのデザインを確認する」の棒に赤い太字の「遅れ」が表示されている
タスクのタイムラインで「チラシのデザインを確認する」の棒に赤い太字の「遅れ」が表示されている

予定と実績のずれをざっくり見る

Notionには予定と実績を自動で残す仕組みはありません。どうしても見たい場合は、タスクに「実績時間」の数値のプロパティを足して終わったときに担当が入れ、プロジェクト側で見込み時間と実績時間の合計をロールアップで並べます。ずれが大きいプロジェクトを振り返りで話す材料にはなりますが、時間単位の正確な管理には向きません。

1つのプロジェクトを1つのタスクのサブアイテムで済ませる

タスクが5件以下の小さな取り組み(例: 冷蔵庫の買い替え)は、プロジェクトのデータベースを使わず、タスクのデータベースで親タスクとサブアイテムにします。サブアイテムはタイムラインのビューでもトグルで畳んで表示できるので、小さなガントチャートとして十分に使えます。

週1回の進み具合の確認の回し方

タイムラインは、週に1回、全員で見て直す時間があって初めて正しい状態に保たれます。サンプル料理教室では、月曜のスタッフ会議の最初の15分をここに使っています。

順番見るビューやること時間
1プロジェクトの「タイムライン」走っているプロジェクトの完了率と残り日数を読み上げる3分
2タスクの「プロジェクトのタイムライン」「遅れ」の印が出ているタスクの担当が、理由と新しい期限を言う5分
3同じビューの今週の範囲今週始まるタスクの担当が、始められるかを言う4分
4依存関係の矢印遅れが後ろのタスクを押していないかを見る2分
5議事録決まったことを議事録に書き、新しいタスクを足す1分

この確認で大事なのは、日付を直すのは担当本人だという決まりです。代表が会議中に棒を動かすと、担当は「期限は代表が決めるもの」と覚え、自分で直さなくなります。会議の場で担当が自分の画面から直すようにすると、次の週から担当が会議の前に直してくるようになります。

決まったことは議事録に残し、その場でタスクにつなぎます。やり方は「Notionで議事録:会議のテンプレートと、決まったことをタスクにつなぐ」に書いています。

Notionのガントチャートでできないこと

Notionのタイムラインは、小さな会社のイベントや取り組みの準備を並べて見るには十分です。ただ、本格的なプロジェクト管理ツールと同じことはできません。

やりたいことNotionでは代わりの手
人ごとの工数の山積み(誰が何日に何時間埋まっているか)出せない。見込み時間の合計で大まかに見る程度工数の山積みが要るなら、山積み表を持つプロジェクト管理の専用ツール
予定と実績の差を日ごとに追う実績を自動で残す仕組みが無い実績時間を手で入れて合計する。厳密に要るなら工数管理の専用ツール
クリティカルパスの自動計算できない。依存関係の矢印で目で追う期間の長い工事・開発のような仕事は専用ツール
基準の計画(ベースライン)を残して比べる元の日付を残す機能は無い計画を決めた日にビューを書き出すか、「当初の期限」の日付のプロパティを足して残す
ガントチャートを紙で印刷して配るタイムラインのビューは印刷用の形にならない画面の書き出しで代わりにするか、印刷が要る計画は表計算で作る
何十人もの関係者と細かい権限で分けるページ単位の権限で分けるのが基本関係者が多い案件は、権限を細かく持てる専用ツール

月に数本のイベントや取り組みを、数人で回す規模ならNotionで足ります。数十人が関わる工事や開発、取引先と日程を詰める受託の仕事、工数で請求する仕事は、最初から専用のツールを選んだほうが手戻りがありません。Notionで計画を立て始めて、山積みや予実が要るようになったら、そこが乗り換えを考える時期です。

よく詰まるところ

症状原因直し方
タイムラインに何も表示されない表示に使う日付のプロパティが選ばれていない、または日付が空「レイアウト」→「タイムラインの表示」で日付を選び、日付を入れる
棒ではなく点で表示される日付に終了日が無い、または開始と終了の両方に同じ日付が入っている終了日をオンにするか、開始日と期限の別々の設定にする
最後のほうのタスクが出てこない読み込み制限の件数がタスクの数より少ない「レイアウト」→「読み込み制限」を増やす
完了率が100%にならない「やめた」のタスクが分母に入っている数式で「やめた」を除いて数える
完了率がずっと0%式の中のステータスの選択肢名が実際の名前と違う式の「完了」をステータスの選択肢名と同じ文字にする
タスクを開いてもどのプロジェクトか分からないリレーションを作るときに「タスクに表示」をオンにしていないリレーションの設定を開いて相手側にも表示する
前のタスクを延ばしたら後ろが全部ずれた自動シフトが「アイテム間の期間を維持してシフト」になっている「日付が重なる場合のみシフト」に変える
テーブルで依存関係が見えない依存関係の矢印はタイムラインのビューだけに出るタイムラインで見る
新しいプロジェクトのページに別のプロジェクトのタスクが出るテンプレートのリンクドビューのフィルターが、前のプロジェクトのまま新しいプロジェクトを作ったら、フィルターの「プロジェクト」をそのプロジェクトに選び直す
公式テンプレートを入れたらタスクのデータベースが2つになったテンプレートに独自のタスクのデータベースが含まれているどちらか1つに寄せる。既存のタスクを使うならテンプレート側のタスクを書き出して移す

次にやること

プロジェクトのタイムラインができたら、タスク・数式・議事録をつなげて回していきます。

  • タスクのデータベースをまだ作っていないなら「Notionでタスク管理:担当・期限・状態のデータベースを作る」
  • プロジェクトとタスクのつなぎ方をもっと知りたいなら「Notionのリレーションとロールアップ:2つのデータベースをつなぐ」
  • 完了率や残り日数の式を自分の会社用に変えるなら「Notionの数式(関数):期限・進み具合・金額をよく使う式で計算する」
  • 週1回の確認で決まったことを残すなら「Notionで議事録:会議のテンプレートと、決まったことをタスクにつなぐ」

あわせて読む