☑️

Notionで実現する個人のタスク・プロジェクト・スケジュール管理の一元化 ~実際の活用例~

2024/12/17に公開

この記事は ミライトデザイン Advent Calendar 2024 の 17 日目の記事です。

https://qiita.com/advent-calendar/2024/miraito-inc

前回は tomo さんの記事でした。

https://qiita.com/__tomotomon/items/522e2bed3dffae69e65d

はじめに

日々の個人のタスクやプロジェクト、スケジュール管理には Notion を活用しています。

「活動」データベースを利用することで、タスクやスケジュールを一元管理し、効率的に整理できます。

また、「計測」データベースを活用することで、各タスクに費やした時間を計測し、プロジェクト全体でどのくらいの時間がかかったのかの記録もできます。

さらに、 Notion カレンダーと連携することで、でスケジュール上のどの時間に何をしていたのかも把握が可能です。

この記事では、自分が普段どのようにタスクやプロジェクト、スケジュールを管理しているか、その方法を紹介します。

一部でも参考になれば幸いです。

実現したいこと

  • タスクとスケジュールの一元管理
    • タスクとスケジュールを同じデータベースで管理
    • カレンダービューや Notion カレンダーを利用して、スケジュールやタスクの着手時間を視覚的に確認
  • タスクやプロジェクトの時間計測
    • 各タスクにどれだけの時間を費やしたのかを把握
    • プロジェクト全体でどれだけの時間を費やしたかを把握
  • プロジェクトごとのタスク計画
    • プロジェクトに紐づくタスクの整理やガントチャートを利用した計画

まずはざっくり紹介

スクリーンショット

紹介用にページを簡略化していますが、Notion ではホーム画面を作成し、タスクやスケジュール、プロジェクト管理をしています。

詳細は後述しますが、今回紹介する内容は以下の 3 つのデータベースのみを使用しています。

  • activities
    • タスクとスケジュールを「活動」として管理する
  • projects
    • 期限と目標があるもので、 1 対 n でタスクと紐づける
  • time tracker
    • 時間計測用のデータで、 n 対 1 でタスクと紐づける

タスク管理

スクリーンショット

左の Tasks ブロックでは、当日前後のタスクを管理、計測しています。

計測用のデータベースとリレーションしており、ボタンプロパティのオートメーションによって時間計測を実現させています。

タスクに開始と終了を設定すれば時間がわかりますが、実際は休憩や間隔を空けて作業することもあります。

その時に、開始〜終了としてしまうと、実際に活動していない時間まで計測に含まれてしまうので、リレーションやオートメーションを利用しています。

タスクの時間計測は Toggl というツールを以前利用していて、同じようなことを Notion でもやりたいと思って実現させました。

スクリーンショット

tasks ビューに切り替えると、日付が決まっていないタスクがリストされています。

ここでは、日付は決まっていないけどいつかやるタスクとしてリスト化させています。

スケジュール・タスク管理

スクリーンショット

右の Activities ブロックでは、Weekly カレンダーでスケジュールとタスクを一目で確認できます。

週末に翌週の計画を立てる際、 tasks ビューのタスクを Weekly カレンダーにドラッグ&ドロップすると、日付プロパティに自動で日付が入力されます。

プロジェクト管理

スクリーンショット

projects ビューに切り替えると、プロジェクト一覧が確認できます。

期限と目標があるものは、個人的な活動でもプロジェクトとしています。

資格取得やアドカレ執筆もプロジェクトとして管理しています。

今回は個人の例なので、適当にサンプルのプロジェクトを追加していますが、期限がある目標であれば何でもここに追加しています。

スクリーンショット

プロジェクトページを開くと紐づくタスクが表示され、それぞれどのぐらい時間を使ったがわかるようになります。

また、新たにプロジェクトを立てたときもプロジェクトページでタスクを洗い出すことで、 tasks ビューに追加されますし、このプロジェクトページ内で管理もできます。

スクリーンショット

Gantt chart ビューでは、各タスクのスケジュールを設定できるようにしています。

スケジュールの計画を立てたいときはここでタスクの洗い出しをすることで、 Weekly カレンダーにも表示されます。

Notion カレンダー

スクリーンショット

Weekly カレンダーでスケジュールとタスクを確認できますが、細かい時間や Google カレンダーのスケジュールを確認したいときもあります。

その際は Notion カレンダーを開いて確認しています。

Notion カレンダーは Notion のデータベースを表示できるので、上記で紹介したタスク、スケジュール、タスクの着手時間を確認できるようにしています。

自分は内容ごとに色分けをするため、以下のビューを作成して連携しています。

  • activities データベース
    • スケジュールだけのビュー ( オレンジ )
    • 未完了だけのタスクのビュー ( 黄色 )
    • 完了済みだけのタスクのビュー ( 緑 )
  • time tracker
    • タスクに紐づいた計測用データのビュー ( 青 )

表示させたいビュー毎に、リンクドビューを作成して Notion カレンダーに連携しますが、その場合データベースの名前が同じもので登録されてしまいます。

そのため、以下の様にリンクドビューのブロックの名前を変更することで、それぞれ任意の名前をつけることが可能となります。

スクリーンショット

https://lala.idea4u.net/archives/108459503

実際の運用例

  1. 活動の作成: 週単位や日ごとに作業や予定を入力
  2. 時間の記録: 作業開始・終了時に time tracker へ記録
  3. 進捗の確認: ホーム画面や各ページでプロジェクトの状況を確認

データベース詳細

activities

スクリーンショット

タスクとスケジュールを一言管理するため、 activity ( 活動 ) という単位でデータベースを作成しています。

セレクトプロパティで type としてタスク・スケジュールを分けるようにしています。

そうすることで、同じデータであるタスクとスケジュールを一元管理できます。

プロパティ type 説明
Done チェックボックス 完了済みフラグ
type セレクト タスクとスケジュールを区分
date 日付 対象の日付
project リレーション projects データベースとのリレーション
n 対 1
duration フォーミュラ かかった時間
ボタン オートメーションで time tracker のデータを作成
ボタン オートメーションで time tracker のデータを編集
tracking status フォーミュラ 計測中かを判定する
time tracker リレーション time tracker データベースとのリレーション
1 対 n

duration の詳細。

lets(
  total, prop("time tracker").map(current.prop("elapsed minutes")).sum(),
  hours, floor(total / 60),
  minutes, mod(total, 60),
  formattedMinutes, if(length(minutes) == 1, "0" + minutes, minutes),
  formattedTime, format(hours) + ":" + formattedMinutes + ":00",

  if(
    prop("Done"),
    "✅ " + formattedTime.style("b", "green"),
    formattedTime.style("b")
  )
)

tracking status の詳細。

if(
  includes(map(prop("time tracker"), current.prop("isTracked")), true),
  "⏳ 計測中".style("yellow"),
  ""
)

ボタンのオートメーション。

start stop
startボタンのオートメーション stopボタンのオートメーション

start 変数の詳細。

let(
  tracker, {"global":"button_page","source":"global"}.prop("time tracker").filter(current.prop("isTracked")),
  if(empty(tracker), {"global":"now","source":"global"}, tracker.first().prop("date").dateStart())
)

time tracker

スクリーンショット

タスクと n 対 1 で紐づくデータで、日付範囲から時間を集計する。

プロパティ type 説明
isTracked チェックボックス 計測中フラグ
date 日付 対象の日時
duration フォーミュラ かかった時間
type セレクト タスクとスケジュールを区分
activity リレーション activities データベースとのリレーション
n 対 1
project ロールアップ activity のプロジェクトを表示
elapsed minutes フォーミュラ 経過分数
hours フォーミュラ 経過時間

duration の詳細。

lets(
  hours, floor(prop("elapsed minutes") / 60),
  minutes, mod(prop("elapsed minutes"), 60),
  formattedMinutes, if(length(minutes) == 1, "0" + minutes, minutes),
  formattedTime, format(hours) + ":" + formattedMinutes + ":00",

  formattedTime.style("b")
)

elapsed minutes の詳細。

lets(
  start, fromTimestamp(timestamp(prop("date").dateStart())),
  end, fromTimestamp(timestamp(prop("date").dateEnd())),
  dateBetween(end, start, "minutes")
)

hours の詳細。

lets(
  hours, floor(prop("elapsed minutes") / 60),
  minutes, mod(prop("elapsed minutes"), 60),
  decimalTime, hours + (minutes / 60),
  roundTime, round(decimalTime * 10) / 10,

  roundTime
)

projects

スクリーンショット

プロパティ type 説明
deadline フォーミュラ 期限日までの日程
date 日付 期間
duration フォーミュラ プロジェクト全体でかかった時間
activities リレーション activities データベースとのリレーション
1 対 n

まとめ

今回紹介した Notion を活用した活動管理方法は、スケジュールやタスクを一元管理することで運用の効率を上げられる点がおすすめです。

日々の活動を整理しやすくなるだけでなく、時間の使い方を見直すきっかけにもなります。

ぜひ参考にして、Notion の便利な使い方を広げてみてください。

余裕があったらテンプレートとして公開もしようかなと思います。

テンプレートとして欲しい人、他にもこんな活用例があるよって方は是非コメントしてくれると嬉しいです。

次回

次回は hoge さんの「RDBMS のトランザクションとロック」についての記事となります。

Discussion