ObsidianのPeriodic Noteでタスク管理を便利にする方法
はじめに
Obsidianの便利機能にボタンを押せばDaily Noteを作成してくれる機能がある。
Daily Noteの使い道としてその日やるタスクを管理するツールとしての活用があるが、大きなタスクが与えられた時にそれをどう分解して日時単位のタスクにするかというのは別で考える必要がある。
自分は最近以下のようにしてタスクを管理する予定である
- 半期単位でやることが上から降ってくる
- Quarterly Noteに半期の自分担当のやることをチェックボックスで書く
- Monthly Noteに現在取り組んでいるタスクをQuarterly Noteから抜粋する
- Weekly Noteに今週取り組むタスクをMonthly Noteから抜粋する
- Daily Noteに今日やるタスクをWeekly Noteから抜粋してバレットジャーナル的に管理
- バレットジャーナルで書いたタスクをDay Planner pluginで時間を割り振ることも可能
Quarterly Noteのイメージ
補足
- タスクが増えた場合はQuarterly Noteに追加
- タスク名はObsidianのNoteリンクになっており、そのノートにlogを書く
- Monthly Note を飛ばして Quarterly Note から Weekly Noteに抜粋しても良さそう
この記事はこれらを便利に使うためのプラグインと設定を紹介する
installするプラグイン
- Calender
- Periodic Notes
- Templater
- (Day Planner 時間レベルで管理するなら)
Calender
Calenderを表示して、日付を押せばそのノートに飛べる
Weekly Noteへも飛べるのはありがたい
右上のカレンダーアイコンを移動でき、自分はUIの左下に配置している
Periodic Notes
Daily Note以外に Quarterly Note, Monthly Note を作る補助をしてくれるプラグイン
Weekly Noteの設定はCalenderプラグインでもできるが、こちらの方が補完が効いてるのでおすすめ
弱点は Monthly Note, Quarterly Note にUIから簡単にアクセスする手段がないこと
cmd + oの命令で各種Noteを作れる
Templater
Periodic Notesの弱点にも書いたが、Calenderの日付からWeekly Note、Daily Noteは楽にアクセスできるが、Quarterly Note, Monthly Noteへのアクセスは難しい
そこでTemplaterを使いリンクをNoteに埋め込むことで階層を移動できるようにする
参考: https://github.com/ljavuras/obsidian-power-tools/tree/main/Periodic Notes Navigation
daily note template
<%*
moment.locale('ja');
const today = moment(tp.file.title);
const prev = today.clone().subtract(1, 'days');
const next = today.clone().add(1, 'days');
// 2023 / Q1 / January / Week 1
tR += '[[' + today.format('YYYY') + ']] / ';
tR += '[[' + today.format('YYYY-[Q]Q') + '|' + today.format('[Q]Q') + ']] / ';
tR += '[[' + today.format('YYYY-MM') + '|' + today.format('MMMM') + ']] / ';
tR += '[[' + today.format('gggg-[W]ww') + '|' + today.format('[Week] w') + ']]\n';
// ❮ 2022-12-31 | 2023-01-01 | 2023-01-02 ❯
tR += '❮ [[' + prev.format('YYYY-MM-DD') + ']]';
tR += ' | ' + today.format('YYYY-MM-DD') + ' | ';
tR += '[[' + next.format('YYYY-MM-DD') + ']] ❯';
%>
weekly note template
<%*
const week = moment(tp.file.title);
const end = week.clone().endOf('week');
// 年 / 四半期 / 月
tR += '[[' + week.format('YYYY') + ']] / ';
tR += '[[' + week.format('YYYY-[Q]Q|[Q]Q') + ']] / ';
tR += '[[' + week.format('YYYY-MM|MMMM') + ']]';
// 週が月や四半期をまたぐ場合:末尾に追加
if (week.format('M') !== end.format('M')) {
tR += ' - ';
if (week.format('YYYY') !== end.format('YYYY')) {
tR += '[[' + end.format('YYYY') + ']] / ';
}
if (week.format('Q') !== end.format('Q')) {
tR += '[[' + end.format('YYYY-[Q]Q|[Q]Q') + ']] / ';
}
tR += '[[' + end.format('YYYY-MM|MMMM') + ']]';
}
tR += '\n';
// ナビゲーションリンク:❮ Week 52 | Week 1 | Week 2 ❯
const prev = week.clone().subtract(1, 'weeks');
const next = week.clone().add(1, 'weeks');
tR += '❮ [[' + prev.format('gggg-[W]ww|[Week] w') + ']]';
tR += ' | ' + week.format('[Week] w') + ' | ';
tR += '[[' + next.format('gggg-[W]ww|[Week] w') + ']] ❯\n';
// 各日付リンク:01 - 02 - … - 07
for (let i = 0; i < 7; i++) {
const day = week.clone().weekday(i); // 週の i 日目 (月〜日)
tR += '[[' + day.format('YYYY-MM-DD') + '|' // リンク先:2025-05-26 など
+ day.format('DD') + ']]'; // 表示名:26
if (i < 6) tR += ' - ';
}
%>
monthly note template
<%*
const month = moment(tp.file.title, "YYYY-MM");
// 年 / Q / 月
tR += '[[' + month.format('YYYY') + ']] / ';
tR += '[[' + month.format('YYYY-[Q]Q') + '|' + month.format('[Q]Q') + ']] / ';
for (let i = 0; i < 12; i++) {
const m = month.clone().month(i);
tR += '[[' + m.format('YYYY-MM') + '|' + m.format('MMM') + ']]';
if (i < 11) tR += ' - ';
}
tR += '\n';
// 前月・翌月
const prev = month.clone().subtract(1, 'month');
const next = month.clone().add(1, 'month');
tR += '❮ [[' + prev.format('YYYY-MM') + ']]';
tR += ' | ' + month.format('YYYY-MM') + ' | ';
tR += '[[' + next.format('YYYY-MM') + ']] ❯';
%>
quarterly note template
<%*
const quarter = moment(tp.file.title, "YYYY-[Q]Q");
// 年 / Qリンク(Q1〜Q4)
tR += '[[' + quarter.format('YYYY') + ']] / ';
for (let q = 1; q <= 4; q++) {
tR += '[[' + quarter.format('YYYY') + '-Q' + q + '|Q' + q + ']]';
if (q < 4) tR += ' - ';
}
tR += '\n';
// 対応月リンク
const startMonth = (parseInt(quarter.format('Q')) - 1) * 3 + 1;
for (let m = 0; m < 3; m++) {
const month = quarter.clone().month(startMonth - 1 + m);
tR += '[[' + month.format('YYYY-MM') + '|' + month.format('MMMM') + ']]';
if (m < 2) tR += ' - ';
}
%>
yearly note template
<%*
const year = moment(tp.file.title, "YYYY");
// ❮ 2024 | 2025 | 2026 ❯
tR += '❮ [[' + year.clone().subtract(1, 'year').format('YYYY') + ']]';
tR += ' | ' + year.format('YYYY') + ' | ';
tR += '[[' + year.clone().add(1, 'year').format('YYYY') + ']] ❯\n';
// Q1 - Q4
for (let q = 1; q <= 4; q++) {
tR += '[[' + year.format('YYYY') + '-Q' + q + '|Q' + q + ']]';
if (q < 4) tR += ' - ';
}
%>
と、ここまで書いて思ったがY/Q/Mに簡単にアクセスできるパンくずリストがあればいいだけな気がしてきた
こんなの
year
[[2025]] / [[2025-Q1|Q1]] [[2025-Q2|Q2]] [[2025-Q3|Q3]] [[2025-Q4|Q4]]/ [[2025-01|1月]] [[2025-02|2月]] [[2025-03|3月]] [[2025-04|4月]] [[2025-05|5月]] [[2025-06|6月]] [[2025-07|7月]] [[2025-08|8月]] [[2025-09|9月]] [[2025-10|10月]] [[2025-11|11月]] [[2025-12|12月]]
quarterly
[[2025]] / [[2025-Q2|Q2]] / [[2025-04|4月]] [[2025-05|5月]] [[2025-06|6月]]
monthly
[[2025]] / [[2025-Q2|Q2]]
daily & weekly
[[2025]] / [[2025-Q2|Q2]] / [[2025-05|5月]]
Discussion