howmとタスクリンクの相性よさそう
さんがよくやっている気がする
hown+タスクリンクにタスク管理を移行しようと思う
ここで書式設計を行う
うまくいけば他の人にも使えるシステムになる
このページで決めた書式のタスクに名前をつけたい
タスクリンク feat. hown
長い!
タスクリンクv2
hownリンク
いうほどhown要素残っているかな?
作成方法
TODOを思いついたらとりあえず [⬜️靴下買う]
みたいに書いておく
用意するもの
タスクリンク操作package
字句パーサー
計算には関わらない
基準となる日時とタスクリンクを与える
基準となる日時からの相対量を返す
タスク作成補助script
日付の変更?
howmのアクションロックにもあった機能
一覧用UI
いろんな実装方法が考えられる
PageMenuで表示
一時的にページを作って流し込む
etc.
閲覧方法
UI
TODO一覧を見るページがどっか(例:
TODO)にある
ページを潰してしまうので意見分かれるところ、PageMenuでもいいかもだが編集したいところさん
今日の日付基準でソートされる
終わったらrenameして沈む
一覧用UIを作って使っている
わざわざTODOリストを作らなくていいのが便利
TODOリストにして色々編集したいときは、コピーボタンを押すと特定期間内のタスクリンクを全部コピーできる
書式設計
日時指定 {Timestamp}
\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2})
日程調整
曜日指定 /\((\+|-)?(\d+)\*(Sun|Mon|Tue|Wed|Thu|Fri|Sat)(?:(\+|-)(\d+))?\)/
/yyyy-MM-dd(THH:mm)?/
の後ろにつける
指定した日時の月基準で、曜日単位で日時を指定する
例: 2023-09-05T12:14(2*Wed+1)
は 2023-09-14T12:14
と等価になる
9月の第2水曜日(2023-09-13)の翌日
タスクの開始日時
/@{Timestamp}/
タスクリンク中のどこに挿入してもいい
案
[@yyyy-mm-dd タスク]
[タスク@yyyy-mm-dd]
一番最初に出現した /@{Timestamp}/
を採用する
終了日時
終了日時で直接指定
/\/{Timestamp}/
@yyyy-MM-dd/2023-12-21T12:34
で、 2023-12-21T12:34
に終了する
年月日を略した記法も可
/\/\d{2}:\d{2}/
/\/\d{2}T\d{2}:\d{2}/
/\/\d{2}-\d{2}T\d{2}:\d{2}/
/\/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/
/\/\d{2}/
/\/\d{2}-\d{2}/
/\/\d{4}-\d{2}-\d{2}/
開始日時に時刻が指定されていないときは、終了日時の時刻も無視し、終日扱いとする
見積もり時間で指定
/D\d+/
\d+
分後に終了する
/\/{Timestamp}/
と /D\d+/
の両方があった場合は、一番最初に出現した方を採用する
✅,⬜,📝, ❌にする
廃止
各自で行頭に入れるのは自由
記載位置は(日付|日時)の後ろとする
[(状態絵文字)@yyyy-mm-dd(記号) タスク]
/([\+\-!~])(\d*)?/
@
は @yyyy-mm-dd
で表現できるので略
.
は (状態絵文字)
に ✅
を入れれば表現できるから略
自分のはどこに日付を挿入しても認識されるようにしてある
といっても、末尾に書くことがほとんどだが
繰り返し指定
繰り返しタスクの実装は
も悩んでた
わざわざコードを書かなければならず、非常に手間
修正も面倒くさい
ページを開いてコードを書き換える
タスクリンクに繰り返し情報を埋め込めれば楽なのだが、記法が思いつかなかった
一時期
RRULEを検討したが、非常にタスクが長くなってしまい、結局実装しなかった
QFixHowmの繰り返し記号と曜日指定記法を組み合わせれば、大抵の繰り返しタスクを取り扱えそう。採用してみる
/R([YMWD])?(\d+)/)
RY\d+
: \d+
年おきに実行
RM\d+
: \d+
月おきに実行
RW\d+
: \d+
週間おきに実行
RD\d+
: \d+
日おきに実行
R\d+
: \d+
日おきに実行
@
を R
に変更
repeatのr
日時指定ですでに @
を使っているので、代替した
繰り返し周期を Y
, M
, W
と表現
どの周期か読み取りやすい
QFixHowmはもっと複雑な指定もできるが、全部真似ると実装が大変なので、ほどほどにしておく
タスクの生成方法
defaultでは、繰り返す当日になるたびに、新しいリンクを作成する
例: [⬜️散髪@2023-09-08(1*Mon)RW2]
があったら、実行日が来るたびに以下のリンクが生成される
[⬜️散髪@2023-09-04]
[⬜️散髪@2023-09-18]
[⬜️散髪@2023-10-02]
...
[⬜️散髪!2023-09-08(1*Mon)RW2]
なら、 [⬜️散髪!2023-09-04]
, [⬜️散髪!2023-09-04]
,...が生成される
リンクにしたくないときは、繰り返し記法の末尾に *
を入れる
例: [⬜️散髪@2023-09-08(1*Mon)RW2*]
があったら、実行日が来るたびに以下の文字列が記録ページに記載される
️散髪@2023-09-04
️散髪@2023-09-18
️散髪@2023-10-02
...
やり残しをカウントしたいタスクはリンクに、カウント不要のタスクは文字列にしておく
生成したタスクの同一判定
むずい
未来のタスクを生成して、その予定をずらした場合、生成されたタスクかどうかの判断ができなくなる
何らかの記号を入れれば、繰り返しタスクから生成されたタスクだと示せるが、どの繰り返しタスクから生成されたまでは特定できない
繰り返しタスク内に、生成したタスクへのリンクを並べる?
✅生成した期間 or 生成していない期間を繰り返しタスクに記録すればいいのでは?
ようは重複生成を防ぎたいだけなんだし
採用
不足しているパラメタは undefined
とする
defaultで値を補うか、文法ミスとして警告を出すかは、各UI開発者の設計に委ねる
別々に扱う理由が無い気がする
試す
別々にする場合
[⬜@2002-10-20! ハイウェイ惑星 〆切]
[⬜ハイウェイ惑星 〆切@2002-10-20!3]
[📝@2002-10-20- ハイウェイ惑星 買おう]
[✅ハイウェイ惑星 買おうかな@2023-09-12~]
同じにする場合
[@2002-10-20! ハイウェイ惑星 〆切]
[ハイウェイ惑星 〆切@2002-10-20!3]
[📝@2002-10-20- ハイウェイ惑星 買おう]
[✅ハイウェイ惑星 買おうかな@2023-09-12~]
❌日付と状態指定の順序を任意にする?
[ハイウェイ惑星!3 〆切@2002-10-20]
[!3ハイウェイ惑星@2023-09-12 〆切]
流石に分かりにくくないか?
タスク名と混同するのでやめる
例:TODOのつもりで [ハイウェイ惑星買う!@2002-10-20+3]
と書いたが、締め切り扱いになってしまった
別々にする利点
やったかやってないかがわかりやすい
cons. ⬜はなくてもわかるから付けなくていいと思う
✅📝❌はほしいな
同じにする利点
タスクの状態を表す場所を一箇所に統一できる
cons.
✅完了した状態と、どの浮沈方式のタスクだったかがわからなくなる?
[ハイウェイ惑星 〆切@2002-10-20.!3]
とすれば、元々の
howmのリマインダの記号も残るからこれでいいんじゃないかな
✅「📝❌」を表現できなくなる
各自で行頭に挿入するのは自由。表現できなくなることはない
単にparserのパース対象外にするだけ
ずらずらと⬜がついたタスクが並ぶとげんなりする
同じにしよう
日時指定子( @yyyy-MM-dd
)の直後にくっつける
✅相当の記号として、本家と同様の .
を採用する
後方互換性として、 /^✅|❌/
を完了とみなす処理を入れておく
浮き沈みの間隔
注目している日に浮いてくると判定されたら、その日のタスクリストに入れることにする
元仕様だと一定間隔だった(defaultは1週間ごと)
指定日時になったら浮いてくる頻度を増やすようにしてみたい
minは毎日浮上
指定した日数前に最初に浮上する様にする
普通にe^xとか2^xを使っているっぽい
じゃあそれでいいや
案2の例: @2024-06-23+60
なら06-23の1ヶ月前に最初に浮上し、次は15日前、その次は1週間前、次は3日前、以降は毎日浮上する
本家の実装を見たことがないけど、
inlineでは三角関数で実装した
じわじわ上がってきて、去っていく
タスクリスト上を下→上→下と移動する速さを三角関数で表したのでしょうか?
合ってそう
ここでの様子だと、ある日ピュッと上がってくる動きをさせようとしている?
結局誤読でしたが
自分が構想しているタスクリストの挙動としては「指定された期間内のタスクを全て出力する」だったので、タスクリスト内の順序を +
/ -
で制御するのはあまり意味がなかったのです
タスクリストは実行日でソートするつもりだった
タスクリスト内に「重要度」columnを追加し、その順番制御に使うことはできそうだけど、複雑になりそう
の使い方は、0を境目にして正数のものがマストでやるもの、それ以下はまぁ目に入るくらいのもので、浮遊のタスクは0までしか優先度が上がらない
マストではないので浮遊させているという解釈
0より大きなタスクが爆発しないように運用する
まぁ現時点でやや溢れているのですが・・
0以下のものは気分で取り掛かる
図書館で本を選ぶ感じの気持ち、多く目に入る方が良いという考え方
0を境に見た目を変えると使いやすそう
0以下をグレーか半透明の色にする
0を境に <hr>
を入れる
❌0以下を折りたたんで非表示にする
見えなくなるのは本末転倒
これなら(
重要度旬度計算以外は)楽に実装できそうです
タスクリストの優先順位を数字で表していて、指定した期日が原点になるようにして、日付で位相をずらして行くみたいな実装だったはず