Notionで実現する個人のタスク・プロジェクト・スケジュール管理の一元化 ~実際の活用例~
この記事は ミライトデザイン Advent Calendar 2024 の 17 日目の記事です。
前回は tomo さんの記事でした。
はじめに
日々の個人のタスクやプロジェクト、スケジュール管理には 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 カレンダーに連携しますが、その場合データベースの名前が同じもので登録されてしまいます。
そのため、以下の様にリンクドビューのブロックの名前を変更することで、それぞれ任意の名前をつけることが可能となります。
実際の運用例
- 活動の作成: 週単位や日ごとに作業や予定を入力
- 時間の記録: 作業開始・終了時に time tracker へ記録
- 進捗の確認: ホーム画面や各ページでプロジェクトの状況を確認
データベース詳細
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 変数の詳細。
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