[Taskwarrior](https://taskwarrior.org/)
最近、何でも CLI でするのが楽しい。
[[Claude Code]] の流行で GUI → CLI に戻っていくってのも妙だ。
CUI を使っていくと、仕組みについて学べるのもいい。
## シンプルな設計がいい
例えばこのタスクデータは SQLite で管理されていて、tasks テーブルの `uuid`, `data (JSONテキスト)` の2カラムで構成されていた。確かにこの管理方法なら、data の構成を操作側から柔軟に変更できる。
また、よくあるTODOアプリは `title` と `description` でタスクを管理してるけど、これには `description` しかないシンプルな設計になってる。シンプルはいい。
## 日付の指定方法
文字による日付の指定方法とかも参考になった。
[Taskwarrior - Named Dates - Taskwarrior](https://taskwarrior.org/docs/named_dates/)
* `so`: `s`tart `o`f ...
* `eo`: `e`nd `o`f ...
を `prefix` にして、
* `p`: `p`revious
* `n`: `n`ext
をオプションで挟みつつ、
* `y`: `y`ear
* `m`: `m`onth
* `w`: `w`eek
* `ww`: `w`ork `w`eek
* `d`: `d`ay
とかを組み合わせていくといい感じに表せる。
* `sow`: `s`tart `o`f the current `w`eek.
* `sopy`: `s`tart `o`f the `p`revious `y`ear.
* `eonww`: `e`nd `o`f the `n`ext `w`ork `w`eek.
また、[[ISO 8601]] の継続時間の表記とかも、調べるきっかけになった。
## 設定
結構面白かったので `alias` をたくさん貼った。
report は `next` と `list` の2つに、見積もり時間 (Duration) をテキスト形式で追加して、Project を Description の左に移動して使っている。
ref. [⚙️ \[taskwarrior\] Taskwarrior設定セットアップとエイリアス追加 · usagizmo/dotfiles@1a3fb84 · GitHub](https://github.com/usagizmo/dotfiles/commit/1a3fb84c69e1f435f701925c6f295dac9db21e7f)