tascow検討
ネーミング
countするtask管理 → task count → tascount → taskcou → taskcow
牛さんアイコンのタスク管理ツール
絵下手なので描かないけど
読み方は「タスカウ」
1
デイリータスクリストをつくるというアプローチ
たとえばn個のmdファイルを書く
毎日、これらn個のファイルから「今日のデイリータスクリスト」がつくられる
today.md
1-task 1-line
俺はこれを消化すればいい
タスクの実体
タスクハッシュとして管理していきたい
taskhash.jsonでいいだろう
保存タイミングは?
3space doneされたとき?
性能が許すならこっちでいいsta.icon
タスクハッシュをinmemoryで持ってるマンが定期的に保存する?
タスクの実行はどうやって記録する?
報告的終了にする
today.mdを監視して、修正が入った行を検出してdoneとみなす
これならどの行のどの位置に半角スペース入れてもいい(先頭で、とか要らない)
保存操作=コミット、になる
なので5行くらい更新してから保存してもいい
いや、文字は固定しよう(でないとタスク名を取り出せない)
たとえば( ){3,}半角スペース3個以上
code:sample
scrapboxいじり
メールアドレス1確認
メールアドレス2確認
↓ これらを報告的終了したい場合、以下で良い
scrapboxいじり
メール アドレス1確認
メールアドレス2確認
末尾で3space、中で3space、先頭で3space
で、監視する側ではreplace('( ){3,}', '')とかすればいい
3space doneと名付けることにする
で、タスク名はタスクハッシュに入れる
code:taskhash
このイメージ
last usedやmost usedはどうする?
タスクハッシュから計算すればいい
線形探索で十分
これをどうやって「監視されてるmdファイル」で表現するかだよなーsta.icon*2
most_used.md
↑ これでよくない?
generateを行ったら(再)生成される
generateしない限りはされない(好き勝手に3space doneすればいい)
実行ログはどうする?
taskhash.json記録と同時に、別で何か記録する
なんで欲しい?
何かとは
log_50.mdで直近50件記録、でよくね?
log_N.mdのNはカスタマイズできる
N=100くらいにしておけば1日分は確実に入る
日時レビュー後はクリアしておけばいい
報告的終了時に何を記録する?
終了した旨must
同上、現在日時lastused用
実行に要した時間
これなぁ。。。
いいや。捨てよう。プライベートでは俺はすでにミニマムだし、緩いロボットでもきつくてもっとだらけたい考えてるんだから、律儀な記録はせんでええ
が、ラフにならいけるとも思ったsta.icon
3space doneをN個つけたとして、前回との時刻がT空いている場合
1タスクの平均所用時間をT/Nとみなすことができる
……いや雑すぎるか?
たとえば14:00から記録やめて、その間に音ゲーとマンガと大掃除とスクボをして17:30になった場合
経過時間は210分
音ゲーも漫画も大掃除もスクボも全部、52.5分費やしたことになる
sta.iconの実情で言えば、たぶん音ゲー120、漫画30、大掃除20、スクボ40とかだと思うけど
が、だらけたいから、いったんなしでええか
taskhash.jsonフォーマット
データが無限に太る系はなし
done_history=[2021/08/01 21:21:04', ...] こんなんはなし
code:task.json
{
"タスク名" : {
count: 2,
セクション系もカウントしたい...,
lastused: (大小見れればいいからunixtimeでいい),
}
}
セクション案
[a-f]で3時間ごと
code:3h(38chars).json
{"a":2,"b":2,"c":2,"d":2,"e":2,"f":2}
code:1h(153chars).json
{"0":2,"0":2,"0":2,"0":2,"0":2,"0":2,"0":2,"0":2,"0":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2,"10":2}
うーん、記録にこだわらないなら要らねえんじゃねえかなぁ。。。
が、後から入れるのはきっついので、入れるなら今のうち
lastused
時系列で並べられればいいのでdatetimestrである必要はない
unixtime(10文字)でいいし、もっと端折ってもいい
yymmddhhmmssとか?(12文字)
が、自製するのもだるいしunixtimeでいいだろう
似たタスク名の補完や吸収はどうやる?
肝やぞここsta.icon*2
メンテナンスモード
taskhash.jsonをいじるモードを用意する
タスク名でソートしたのを表示して、「あ、これとこれ似てるからこっちに吸収な」みたいなことする
AをBに吸収するとは
Aに、Bへのエイリアスを設定する
Aを削除する
@all_by_ascなどをテキストエディタで開いて自分で重複探す
で、見つけたらtaskhash.jsonを開いてそっちをダイレクトに修正しちゃう
2
@ files(@everydayはeveryday.mdなど、一つのmarkdownファイルとして存在する)
@n
@everyday
@evenday
@oddday
@1 as a DOW
@monday
@tuesday
@wednesday
@thuesday
@friday
@saturday
@sunday
specials
@daily …… ルーチンタスク群からなるデイリータスクリスト
@today …… 今日やるタスクをユーザー自身が書いたもの(todoリスト)
@last_used
@most_used
@all_by_asc
@all_by_desc
@log_N
ファイル名
@everyday.md、all_by_asc.mdみたいに、ルーチンタスク系だけ@をつけて区別させたいかな
もっと短くしていい
曜日系は12,3,4,5,6,7を当てる
dailyはd.md、todayはt.md
0.mdが余るけどどないしよ
使い方イメージしてみる
まずはルーチンタスクを@nと@1 as a DOWに書き込んでいく
hello処理を実行する
ルーチンタスクから@dailyがつくられる
この時点で、@dailyには「今日やっておいた方がいいタスク」が並んでるsta.icon
新たなタスクを扱いたい場合はどうする?
たとえば「tascow検討する」というタスク
普通に@dailyに書けばいい
んで3space doneすればいい
この時点でtaskhask.jsonに保存される
last_usedからもアクセスできるようになる
同じタスクを扱いたい場合はどうする?
アプローチ二つあるよなぁ
a: 行をn回複製する
b: 3space doneの後、当該スペースを削除して元どおりにすう
a案
o 3space doneがそのまま残るので何やったかが見える
x 複製作業がだるい
b案
o 複製作業が要らない
x doneが残らないので何やったかが見えない
a案はありきたりなのでb案にしてみたい
today doneが見えない問題は、ログを別途つくってそっち見てくれにすればいい
あとは実装イメージ
@dailyを監視する
変更が入った→中身チェックして3space doneあった行を検出→done処理する
で?
で、処理を終えたら全部元に戻す
いけるねsta.icon
ただ「一度実行したらもう終わり」なタスクも残り続けるのでうざい
今度は手作業で行削除するハメになる
vscodeだとcommand+shift+Kで一発だが
使い方イメージ ツール
VSCodeか秀丸エディタ
nファイルひらけるIDEやエディタならなんでもいい
検索が便利だしvscodeが便利そう
N-space done
行のどこかにN個スペースを入れるだけで、その行(タスク)を終了したとみなす方式
なぜ?
楽に打ちたいから
スペースは一番楽に打てる
先頭や末尾に何か入力する、だといちいち先頭や末尾にカーソル移動させなきゃいけない
欲しい操作
報告的終了します
報告的終了します + このタスクはもう使わないので消していいです
Nの設計
N=1は論外(タスク名もスペースは普通に含むだろう 英単語とか)
N=2は?
ほとんどない
ので使っていい
アサイン
N=2:報告的終了します
N=?:報告的終了します + このタスクはもう使わないので消していいです
?はどうする?
3だと紛らわしい?
3以上?
4以上?
要は「これはもういいから消してくれ」を連打で表現するか、「おっと、これはまた実行しそうだから残しておいてくれ」を連打で表現するか。どっちが自然?
前者だな
消したい場合に、より力を入れるのが自然
いや、待って
N-space doneやっぱりいらない
まずはシンプルにすべき
ルーチンタスクを扱うためだけにN>=2で固定する
ルーチンじゃないタスクの記録は諦める
GTDレビューしたければ別の方法を使えばいい(このツールが本当にやりたいことではない)sta.icon
たとえば「今日やった主な作業をメモする」とかつくればいい
でもそうすると
カウントって要るかいね?
なんつか、n枚の@fileからデイリータスクリストつくるだけで済む気がしてきたけど。。。
いや、やっぱり要るだろう
今は夏休みだから好き放題だらけているのであって
自宅戻って仕事も再開したら、何やるかは管理しないとあかん(生産的に動けない)
直近のタスクを列挙したりブレストしたりする
だったら、そのついでに終了状態も管理すればいい
つか終了状態見えるようにしないと進捗わからんからかえってキツイ
それに@most_usedとかが一種のトリガーリストになる気がするんだよねsta.icon*2
人力で次やることを思い出すのではなく、ログがラフに教えてくれる
で?どっち?
いる!
が、再考の余地はありそう。たとえば
ルーチンタスク系の@filesは、2space done=消す、にする
これは逆説的に「一度の着手で終わる粒度のタスクである」という前提を強いることになる
問題ない
@last_usedなどはいわばフィルタリングや集計の結果なのだから、そもそも消しちゃダメ
@dailyと@todayに分けた
で、ルーチンじゃない奴らは@todayの方でよしなにやればいい
こっちも消しちゃダメ方式で運用する
3
やっぱりタスクハッシュはなしにするべきだと思った
常に特定のディレクトリに特定のファイル名で生成する
daily.md
利用者はdaily.mdに書かれた 1-task 1-line を消化していく
報告的終了で良い
つまり、あとで眺めて「これやったわ」ってのを消していく
やってないものがあれば「これやるか」としてもいいし、「まああとでやるか」といったん飛ばしてもいい
開始終了の記録やカウントは一切サポートしない
つまりログは諦める
2+space doneは別ツールとしてつくればいいと思う
2以上のスペースを含む行があった場合に、それを削除する的な
あれば便利
が、最悪なくてもいい
行削除なんてちょっと操作すれば一発
が、できれば「片手間でスペースとカーソルキーだけでタスク終了(そして削除)」したいところsta.icon
いや、そうでもないな
んなもんあとからやればいいし
そもそも画面だって仮想デスクトップn枚使っていたり、1枚であっても別ウィンドウを前に表示してたりしてどうせ切り替え操作が入る つまりこのルーチンタスク管理のためだけの画面を設置していない限り、片手間でタスク終了(そして当該行の削除)ができることにさほど価値はない
なくていい
思索エリア
あるルーチンタスクRが毎回同じ曜日に登場することになるが、良いのか?
いいんじゃね
ゴミ捨てみたいなものだ
が、「面倒だな」って時にスキップできないのは辛いかも
たぶん毎回同じ曜日や日に出現しても心理的に苦しくないように設計する、ってのが重要な気がする
あるいは苦しくても慣れてしまえばトータルで見て楽できるとか
いったんこの仮説を信じたい
ので出現日や頻度をばらつかせる仕組みを入れるのはやめます
ランダムにばらつかせる案もある
たとえば@3以上の場合、50%の確率で表示させない、とか
表示させなかったタスクはpending_of_210803.mdに入れておいて、8/4になったらもう一度判定する
また表示されなかったらpending_of_210804.mdに入る
たぶん@nに対して、出現確率を定義するf(n)をうまいことつくるのが良いだろう
うまいのつくれたら「毎回同じ曜日になってうぜえ」もなくなる?
いや、そのときだけだろ
元となる曜日ファイルが同じやからなぁ……
ってことは、元なる曜日ファイルから移す必要があるねんな
実装煩雑になっていくにおい
いったんここまでsta.icon
あるルーチンタスクRがどの曜日に入っているかをかんたんに調べるには?
補助ツールつくった方がいいかも
いや、ツールつくるまでもないだろ、ルーチンタスク数総数なんて100もない
いや欲しいですsta.icon*2
存在するファイルをスキャンして「このファイルにはこのタスクがあるよ」みたいなレポートを出すツール ← これくらいでいい
report.mdを生成して開くくらいでいい
ないな
Scrapboxでこねる前提ならいいけど、単にルーチンタスクの忘迷怠防ぎたいだけならそこまでコストかけるのはバカらしい コストかけていいならTritaskのままでいいんだよ
ランダムとかは?w
たとえば4とした場合、25%の確率で出現するとか
うざそう
いや
「うざいですか?」と質問出させてyにしたら少し確率減らすとか(4→5にする)
そうやって直感的にコントロールする
だったらルーチンタスク全部を確率性にする、くらい思い切ってしまえばいいのでは?www
半分ギャグだが、案外うまくいく気がしないでもないsta.icon*2
タスク管理に確率を導入する。ランダムを導入する。このアイデアを理解できる者は、当時は誰もいなかった。――「吉良野すた名著集13 タスク管理の本質」p67
こんな未来になる?w(調子乗りすぎ
仮にDOWファイル7つだけで@2+のフルカバーを頑張るとしたら
とりあえず週にn回入れるとして、なるべく定期的になるようにする……というやり方で考えてみる
結果
DOWに5箇所入れれば「@2 x2 + @1 x3」のパターンになる(@1が基本だが、5回に2回は@2になる)
DOWに4箇所入れれば「@2 x3 + @1 x1」のパターンになる(@2が基本だが、4回に1回は@1になる)
DOWに3箇所入れれば「@2 x2 + @3 x1」のパターンになる(@2が基本だが、3回に1回は@3になる)
DOWに2箇所入れれば「@3 + @4」のパターンになる(@3と@4が交互に繰り返される)
つまり
@2を実現したければ、3箇所か4箇所に仕込め
3箇所の場合、たまに@3になる(気持ち頻度減らしたい場合はこっち)
4箇所の場合、たまに@1になる(気持ち頻度増やしたい場合はこっち)
@3と@4を実現したければ、2箇所に仕込め
週2回あるゴミ捨てはこれやねsta.icon
---
2
3日後と4日後が交互に繰り返される
table:例.dow
mon tue wed thu fri sat sun
y y
3
2日後x2、3日後x1
table:例.dow
mon tue wed thu fri sat sun
y y y
3日後x2、翌日x1
table:例.dow
mon tue wed thu fri sat sun
y y y
4
2日後x3、翌日x1
table:例.dow
mon tue wed thu fri sat sun
y y y y
5
2日後x2、翌日x3
table:例.dow
mon tue wed thu fri sat sun
y y y y y
使うファイルの検討
生成されるデイリータスクリスト
daily.md
@1
everyday.mdn日毎という語彙を使っているのだから統一すべし
@1
@2
oddday.md
evenday.md重なりを防ぎたいのが目的なのだから「スロットが違いますよ」だけ示せればいい
@2_slot1.md
@2_slot2.md
@3
mod3_0.md
mod3_1.md
mod3_2.md同上
@3_slot1.md
@3_slot2.md
@3_slot3.md
@7以下を表現する
@4_slot1.mdモジュロだとルーチンタスクの出現パターンに偏りを感じそうなので廃止する
monday.md
tuesday.md
....
sunday.md
@30以下を表現する
1.md
2.md
3.md
……
31.md
@30より大きいもの
つまり月一くらいでチェックを設ける
1.mdあたりに全部ぶち込んでしまえばいい
込み入ったやつどうする?
---
n.md
n日だったら追加する
n-m.md
n日からm日の間だったら追加する
evenday.md、oddday.md
偶数日、奇数日
第nのxx曜日
月末日
月初日
@2
書類inboxチェック
食料補充チェック
@3
メアドチェック
ケータイの充電
@4
日用品補充チェック
inboxチェック
@5
amazon購入履歴チェックして支出管理に記載
@10
枕カバーとメガネを洗濯に出す(洗濯日でない場合は翌日にセットする)
洗濯機の糸くずフィルター掃除
@7これは曜日mdでいける
@14これも曜日mdに入れといて毎回「やるorやらない」を判断すればいい
@30@14と同じでいいかな
毎週やるやらない判断がだるいなら「以下は9月に入ったら実行する」的な注意書きを入れておけばいい(そしたら9月に入るまでは機械的に消せる)
DOWみたいな体系を複数用意する
DOWは@7を扱う能力を持っている
同様に、@14や@21や@30を扱う能力を持つ何かを持ち出してくればいい
いやんなもんないです
よし、定まったぞ
次は実際にファイル群つくって、今のルーチンタスクたちを突っ込んでみるか
もはやtascowという名前は正しくないので別の考える。