howmとタスクリンクの相性よさそう
takker.iconさんがよくやっている気がする
hown+タスクリンクにタスク管理を移行しようと思うtakker.icon
ここで書式設計を行う
うまくいけば他の人にも使えるシステムになる
このページで決めた書式のタスクに名前をつけたいtakker.icon
タスクリンク feat. hown
長い!
タスクリンクv2
hownリンク
いうほどhown要素残っているかな?
作成方法
TODOを思いついたらとりあえず[⬜️靴下買う]みたいに書いておく
用意するもの
タスクリンク操作package
字句パーサー
計算には関わらない
基準となる日時とタスクリンクを与える
基準となる日時からの相対量を返す
タスク作成補助script
日付の変更?
howmのアクションロックにもあった機能
一覧用UI
いろんな実装方法が考えられる
PageMenuで表示
一時的にページを作って流し込む
etc.
閲覧方法
UI
TODO一覧を見るページがどっか(例:TODO)にある ページを潰してしまうので意見分かれるところ、PageMenuでもいいかもだが編集したいところさんwogikaze.icon
今日の日付基準でソートされる
終わったらrenameして沈む
一覧用UIを作って使っているtakker.icon
わざわざ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で表現できるので略
.は(状態絵文字)に✅を入れれば表現できるから略
自分のはどこに日付を挿入しても認識されるようにしてあるtakker.icon
といっても、末尾に書くことがほとんどだが
繰り返し指定
繰り返しタスクの実装はtakker.iconも悩んでた
わざわざコードを書かなければならず、非常に手間
修正も面倒くさい
ページを開いてコードを書き換える
タスクリンクに繰り返し情報を埋め込めれば楽なのだが、記法が思いつかなかった
一時期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.
✅完了した状態と、どの浮沈方式のタスクだったかがわからなくなる?
✅「📝❌」を表現できなくなる
各自で行頭に挿入するのは自由。表現できなくなることはない
単にparserのパース対象外にするだけ
ずらずらと⬜がついたタスクが並ぶとげんなりする
同じにしようtakker.icon
日時指定子(@yyyy-MM-dd)の直後にくっつける
✅相当の記号として、本家と同様の.を採用する
後方互換性として、/^✅|❌/を完了とみなす処理を入れておく
浮き沈みの間隔
注目している日に浮いてくると判定されたら、その日のタスクリストに入れることにする
元仕様だと一定間隔だった(defaultは1週間ごと)
指定日時になったら浮いてくる頻度を増やすようにしてみたい
minは毎日浮上
指定した日数前に最初に浮上する様にする
普通に$ e^xとか$ 2^xを使っているっぽい
じゃあそれでいいや
案2の例:@2024-06-23+60なら06-23の1ヶ月前に最初に浮上し、次は15日前、その次は1週間前、次は3日前、以降は毎日浮上する
本家の実装を見たことがないけど、inlineでは三角関数で実装したinajob.icon じわじわ上がってきて、去っていく
タスクリスト上を下→上→下と移動する速さを三角関数で表したのでしょうか?takker.icon
合ってそうinajob.icon
ここでの様子だと、ある日ピュッと上がってくる動きをさせようとしている?
結局誤読でしたが
自分が構想しているタスクリストの挙動としては「指定された期間内のタスクを全て出力する」だったので、タスクリスト内の順序を+/-で制御するのはあまり意味がなかったのです
タスクリストは実行日でソートするつもりだった
タスクリスト内に「重要度」columnを追加し、その順番制御に使うことはできそうだけど、複雑になりそう
inajob.iconの使い方は、0を境目にして正数のものがマストでやるもの、それ以下はまぁ目に入るくらいのもので、浮遊のタスクは0までしか優先度が上がらないinajob.icon
マストではないので浮遊させているという解釈
0より大きなタスクが爆発しないように運用する
まぁ現時点でやや溢れているのですが・・
0以下のものは気分で取り掛かる
図書館で本を選ぶ感じの気持ち、多く目に入る方が良いという考え方
0を境に見た目を変えると使いやすそうtakker.icon
0以下をグレーか半透明の色にする
0を境に<hr>を入れる
❌0以下を折りたたんで非表示にする
見えなくなるのは本末転倒
これなら(重要度旬度計算以外は)楽に実装できそうです タスクリストの優先順位を数字で表していて、指定した期日が原点になるようにして、日付で位相をずらして行くみたいな実装だったはず