Notion で(自分なりの)タスク・時間管理を行う「新たな」方法(プラン作成編)
前回から、今まで紹介してきたものとは、大きく異なる実装による、Notion で「タスクシュート」を実践する方法について、書き始めたのですが、
もしかして、読んでいただけましたでしょうか?
とりあえず、上の記事では、この、新しいシステム「RoutineGarden」の、設計の概要と、主な特徴を、簡単に説明しています。
今後は、その補足も行いながら、もっと具体的な話をしていきたいと思っているのですが、
特に、今回からは、本システムの、基本的な機能というか、使い方を、タスクシュートを実践する流れに沿って、紹介していくつもりです。
まだまだ、改良や拡張の余地はあると思うのですが、一応、私は、以下のような感じで、すでに「RoutineGarden」を、実運用し始めていて、
少なくとも、note でマガジンを連載して解説したいと思う程度には、気に入っているわけですね。
ちなみに、この記事というか、本マガジンは、実を言うと、タスクシュートのことを全く知らない人が読むことは、あまり想定しておらず、
単に、内容がマニアックというだけでなく、タスクシュートの実践方法としても、結構、特殊なので、その点は、ご留意ください。
というわけで、毎度のことながら、念の為、理解の前提となる参考書のリンクを貼っておきます。
まぁ、簡単に言えば、人を選ぶ感じのシステムであり、Notion の使い方だけで見ても、初心者向けでないことは、明らかかもしれませんが。
なので、別に真似してみようとは思わなくても、なんとなく、物珍しさで眺めていてもらえれば、私としては、嬉しい限りです。
それでは、始めていきましょう。
今日のプランを表示する
さて、いきなり、このシステムの根幹に関わる部分とも言えますが、前回の記事でも少し触れたように、
そもそも、記事のタイトルに反して、「今日のプラン」を「表示」するというのが、実のところ、仕様としては、かなりの曲者です。
当然、タスクシュートにおいて、「今日のプラン」とは、毎日、個別に「作成」するものですよね。
つまり、Notion でやるなら、「タスクデータベース」に、今日やるタスクを追加して、並べ替えておく、というのが、妥当でしょう。
しかし、「RoutineGarden」では、全てのルーチンが登録されている「ルーチンデータベース」に対して「フィルター」をかけることにより、
自動的に「今日やること」だけが「表示」されるビューこそが、「今日のプラン」に該当します。
ということは、並べ替えはともかくとして、プランを作成する時点で、そこに、新しいタスクを追加したければ、
必然的に、新しい「ルーチン」を作成する必要が出てくるのです。
まぁ、逆に言えば、しばらくタスクシュートを実践していて、毎日のルーチンが、人並み以上に安定しているよ、というような人が、
その「ルーチンリスト」を携えて、使い始めるのに適しているというか、むしろ、そうでなければ、使い始めにくいシステムなのかもしれません。
そういった事情もあり、本システムから、急にタスクシュートを実践し始めるのは、なかなか推奨できないので、改めて、ご了承ください。
ともかく、そろそろ、「ルーチンデータベース」を見てもらいましょうか。
これが、現在、私が抱えている、すべてのルーチンを管理するためのテーブルビューで、右にも長いため、多くのプロパティが隠れているのですが、
その、右にスクロールした先にある列の中には、「終了」という名前の「チェックボックス」プロパティがあり、
チェックしたルーチンは、このビューには、表示されなくなります。
代わりに、一つ右の「終了」という名前のビューで、そうして「非アクティブ」にしたルーチンの一覧が、確認できるようになっているわけですね。
ともあれ、最も重要なのは、いちばん左の「今日のプラン」ビューです。
これを見れば、確かに、「ルーチンデータベース」の中で「今日のプラン」を表示しようとしていることが、分かるかと思います。
フィルターを適用すると、当然、「全ルーチンのリスト」が、「今日やるタスクのリスト」に変わる、というわけですが、
こちらには、テーブルではなく「リストビュー」を採用しており、
一応、スマホ上で閲覧することも意識しているので、かなりシンプルに見えるかもしれません。
では、どうやって、ルーチンリストから「今日やるタスク」だけをピックアップしているのかというと、フィルターの設定は、以下の通りなのですが、
とりあえず、この「実行日時」プロパティの方は、着手したタスクを非表示にしていくための設定なので、今回は、措いておいて、
その右にあって「チェックあり」で絞り込むように設定されている「今日」という名前の「数式」プロパティの中身は、次のようになっています。
改めまして、関数全体は、以下の通りです。
if(
and(
not(prop("終了")),
dateBetween(today(), prop("開始日"), "days") + 1 > 0
),
if(
empty(prop("予定日時")),
let(
day, day(today()),
or(
includes(prop("周期"), "毎日"),
includes(prop("周期"), ifs(
includes([1, 2, 3, 4, 5], day), "平日",
includes([6, 7], day), "土日"
)),
includes(prop("周期"), ifs(
day.equal(1), "月曜日",
day.equal(2), "火曜日",
day.equal(3), "水曜日",
day.equal(4), "木曜日",
day.equal(5), "金曜日",
day.equal(6), "土曜日",
day.equal(7), "日曜日"
))
)
),
equal(formatDate(prop("予定日時"), "YYYY-MM-DD"), formatDate(today(), "YYYY-MM-DD"))
),
false
)
もちろん、「周期」プロパティの設定で、もっと複雑な繰り返しのパターンに対応するなら、この程度では済まないのですが、
スモールスタートで始めるなら、まぁ、こんなところでしょう。
毎日、平日、土日、あとは、各曜日の設定を、マルチセレクトの「タグ」で簡単に行えるのが、この「周期」プロパティの特徴です。
私の場合は、このくらいの種類で十分なので、ここは、個人的に最適化している点とも言えるかもしれません。
例えば、私は、毎週、ラジオを「2番組」ほど、それぞれ、水曜日と金曜日に(アーカイブで)聴いていて、たまたま、見積時間が同じこともあり、
そのルーチンの設定は、次のようになっています。
つまり、上のような「数式」によって、このルーチンの「今日」プロパティの値は、水曜日と金曜日にだけ「true」となり、
水曜日と金曜日だけ「今日のプラン」にも表示される、というわけですね。
あと、「終了」チェックボックスが「オン」のものを表示しないのは、当然として、「開始日」と「予定日時」プロパティの説明が、必要でしょうか。
とは言え、やろうとしていること自体は単純で、「開始日」を未来の日付にしておけば、まだ「今日のプラン」には表示されず、
仮に「周期」が「毎日」に設定されているとすると、その日が来たら、それ以降は、毎日、表示されるようになる、といった仕組みです。
ちなみに、「開始日」を空にしておくと、一生、開始されません。
また、「予定日時」プロパティは、名前の通り、「予定」を追加するためのもので、実は、なるべく Notion API に頼らない設計を目指しつつも、
最低限、ここだけは、GAS を使って、Google カレンダーからタスクを自動的に追加(実際には、ルーチンを更新)することも考えているのですが、
ともあれ、このプロパティが設定されているものは、上の関数の中で、ある種、例外的な扱いとなっています。
要するに、「予定日時」が空でなければ、「予定日時」の日付が「今日」の日付と一致している時にだけ、「今日のプラン」に表示されるわけです。
その場合、同じルーチンをもう一度、実行したい日があれば、「予定日時」を更新していく必要がある、ということになりますね。
まぁ、この辺りの詳しい解説や、活用事例については、また、個別に取り上げて、記事を書いていくとしましょう。
今日のプラン(ルーチン)を修正する
とりあえず、ここまでで、「ルーチンデータベース」に「フィルター」をかけることにより、「今日のプラン」を「表示」させることはできましたが、
もちろん、いくらルーチンが安定していたとしても、後からタスクを追加したり、並べ替えたりする必要は、常に、出てくることでしょう。
しかし、これは、「RoutineGarden」の大きな特徴でもあるのですが、
お察しの通り、このシステムにおいて、「今日のプラン」を修正することは、すなわち「ルーチン」を更新することに、直結します。
タスクの並べ替え
例えば、午前中に「電子書籍」を読むタスクがあったとして、そのセクションを、「7時〜10時」から「10時〜14時」に、移動させてみましょうか。
すると、それは、「ルーチン」の設定を変えていることになるため、次回からも、「10時〜14時」のセクションに表示される、というわけです。
場合によっては、不便に思うかもしれませんが、むしろ、この方が、「現実」を反映しやすいという意味では、有利だったりするかもしれません。
戻したければ、戻せばいいだけとも言えます。
この例のように、「サブアイテム」機能を有効にし、親タスクやサブタスクの関係が表示されている場合には、ちょっとコツがいるのですが、
タスクの並べ替えやセクションの移動は、ドラッグ&ドロップでも可能なので、そんなに大変でもないでしょう。
ちなみに、ここで「セクション」を設定しているプロパティは、
次回、紹介する予定の「セクションデータベース」の「リレーション」プロパティとなっているので、できれば、覚えておいてください。
タスクの追加
次に、タスクの追加方法の説明に入ります。
これには、いくつかのパターンがあるのですが、
今回は、割り込みなどではなく、プラン作成時のタスク追加なので、それは、必然的に「ルーチン」の追加と同義と言えるでしょう。
まぁ、それにも、表示されていない既存のルーチンを表示させる場合と、「新規追加」する場合とがあるのですが、
既存のルーチンを表示させる方法は、「周期」を変更するか、「予定日時」プロパティに「今日」の日付を設定するだけなので、割愛するとして、
普通に、テーブル右上の「新規」ボタンなどから、ページを追加すれば、
次のような、デフォルトの「データベーステンプレート」を元に、新しいルーチンを作成できるようにしておくのが、まず、オススメです。
この場合、自動で「開始日」に「今日」の日付を入れてくれるだけでなく、
なんと、ルーチンページ内に、そのルーチンを実行したログが追加されていくテーブルまで設置してくれます。
まだ「ログデータベース」の説明はしていませんが、当然、それは「ルーチンデータベース」とリレーションで繋げてあるため、
そちらにある「ルーチン」プロパティを、「新規ページ」で絞り込むようにしておくだけで、このようなことが、実現できるようなのです。
まぁ、これについても、詳しいことは、またの機会に取り上げることもあるでしょうし、今は、先へ進みましょうか。
新しいタスクを「今日のプラン」に追加する、もう一つの方法は、ただのルーチンではなく、「単発タスク」用ルーチンとでも言うべきもので、
最早、ルーチンを作成するほどではないかもしれないのですが、単発だと思っていたら、結局、何度もやることになった、ということもよくあるため、
わざわざルーチンとして追加するのも、あながち、悪くはありません。
目障りなら、後で削除すればいいだけですし、終了チェックボックスをオンにすることで、非表示にしておくこともできますからね。
ともかく、これもまた、詳しく説明していると、一つ記事を書けてしまうので、簡単に話してしまいますが、
実は、最近のアップデートで追加された、Notion の新機能である、「フォーム」を利用して、必要な項目を入力できるようにする方法もあります。
例えば、テーブルの下に配置した「ルーチンを追加」ボタンを押すと、
次のように、ポップアップが表示され、入力したデータを送信できるようにしておくことも可能なので、なかなか便利です。
これで、フォームからページを追加した場合でも、「データベーステンプレート」を適用できれば、言うことはなかったのですが、
まぁ、当然、新機能として出てきたばかりのため、その辺は、今後のアップデートに期待するとしましょう。
逆に、上述した「新規」ボタンなどからページを追加する方法では、「セクション」や「見積」の値は、ページを追加した後に、編集する必要があり、
いずれにせよ、「開始日」の設定を間違えると、「今日のプラン」に表示されなかったりもするので、そこは、ちょっと注意が必要となります。
タスクの削除
最後に、「今日のプラン」に表示されているけれど、やっぱり今日はやらないことにしよう、という場合には、どうすればいいのかというと、
例えば、そのタスクの(ルーチン)ページを開くなどして、「スキップ」ボタンを押すだけなら、簡単でしょうか。
つまり、どういう仕組みかといえば、単に、次のような関数によって、「開始日」を「明日」に、変えているだけですね。
ボタンで「関数」が使えるようになったため、こういう処理も容易に実行できるようになったわけですが、
実際、これは、本システムにおいて、それどころではない、超重要な新機能なので、それについては、次回、話したいと思います。
まとめ
今回は、「RoutineGarden」の「基本機能」編の、第一弾ということで、
まず、「今日のプラン」を「作成」ならぬ「表示」し、編集する方法を、大雑把に紹介してみました。
まだまだ、説明が足りないとは思いますが、少しずつ補足していく予定なので、しばらくお付き合いいただければ幸いです。
ともあれ、次回は、この続きとして、タスクの実行の仕方から、「ログデータベース」や「セクション」の解説へ、進めていくとしましょう。
ではまた。