Taskwarrior と Timewarrior でコマンドラインからタスク管理とタイムトラッキングをする

productivity

Taskwarrior は OSS のタスク管理ツール。期限やタグなど複数の要素から urgency を計算して優先度を自動で決められる。タスクの追加や完了時の hook でスクリプトを実行することもできる。

$ brew install task

$ task add Taskwarrior の記事を書く
Created task 1.

$ task add depends:1 記事を公開する
Created task 2.

$ task add recur:weekly due:monday 週次レビュー
Created task 3.

$ task list
ID Age D R Due        Description                  Urg
 3 5s    R 2026-02-23 週次レビュー                 8.28
 1 5s                 Taskwarrior の記事を書く        8
 2 5s  D              記事を公開する                 -5

$ task 1 done
Completed task 1 'Taskwarrior の記事を書く'.
Completed 1 task.
Unblocked task 2 '記事を公開する'.

$ task completed
ID UUID     Created    Completed  Age  P Project Tags                    R Due        Description
 - 87229646 2026-02-21 2026-02-21 2w                                                  Taskwarrior の記事を書く

タスクには project、tag、due、priority などの属性を設定でき、それらでフィルタリングできる。

$ task add project:home +買い物 due:tomorrow +next priority:H 牛乳を買う
Created task 1.

$ task add project:work 仕事のタスク
Created task 2.

$ task project:home
ID Age P Project Tag         Due        Description Urg
 1 5s  H home    next 買い物 2026-02-22 牛乳を買う  31.6

task info で urgency の計算の内訳を確認できる。例えば期限の係数は 12 で、期限までの近さを掛けてスコアが計算される。+next は urgency が 15 加算される特別なタグ。

$ task 3 info
Name          Value
ID            3
Description   今日やること
Status        Pending
Entered       2026-02-21 16:36:07 (1min)
Due           2026-02-21 00:00:00
Last modified 2026-02-21 16:36:07 (1min)
Virtual tags  DUE DUETODAY LATEST MONTH OVERDUE PENDING QUARTER READY TODAY UNBLOCKED WEEK YEAR
UUID          61da91f0-ec64-4ec3-b86e-85a44f7b1fd9
Urgency       9.117

    due   0.76 *   12 =   9.12
                        ------
                         9.117

~/.task/hooks にスクリプトを置くと、タスクの追加や変更時にスクリプトを実行できる。

$ cat ~/.task/hooks/on-add-sample
#!/bin/bash
read input
echo "$input"
echo "タスクが追加されました"
exit 0

$ chmod +x ~/.task/hooks/on-add-sample

$ task add テスト
Created task 4.
タスクが追加されました

公式やサードパーティによる関連ツールが多数ある。公式の Timewarrior はタスクにかけた時間を記録できる。Toggl のようなカレンダービューもある。on-modify.timewarrior を ~/.task/hooks/ に置くと task start で自動的にトラッキングが始まる。Taskwarrior では複数のタスクを同時に start できるが、Timewarrior のトラッキングは一つなので新しいタスクを start すると前のトラッキングが自動で止まる。

$ cp "$(brew --prefix timewarrior)/share/doc/timew/ext/on-modify.timewarrior" ~/.task/hooks/
$ chmod +x ~/.task/hooks/on-modify.timewarrior

$ task 1 start
Tracking タスク名
  Started 2026-02-21T17:14:42

$ task 1 done
Recorded タスク名
  Started 2026-02-21T17:14:42
  Ended              17:14:45
  Total               0:00:03

$ timew summary
Wk Date       Day ID Tags   Start    End      Time
-- ---------- --- -- ------ -------- -------- -------
W8 2026-02-21 Sat @1 タスク名 17:14:42 17:14:45 0:00:03

同じく公式の taskchampion-sync-server で複数デバイス間でタスクを同期できる。クライアントごとに client_id を設定し、共通の encryption_secret でエンドツーエンド暗号化される。

$ docker run -d -p 8080:8080 ghcr.io/gothenburgbitfactory/taskchampion-sync-server

$ task config sync.server.url http://localhost:8080
$ task config sync.server.client_id $(uuidgen)
$ task config sync.encryption_secret <secret>

$ task sync
Syncing with sync server at http://localhost:8080
Success!
Sent 45 local operations to the server

サードパーティの VIT は対話的に操作できる TUI クライアント。a で追加、d で完了、m で変更、b で start/stop、f でフィルタ変更、/ で文字列検索できる。 list や completed の切り替えは :list, :completed のようにして行う。 リアルタイム更新ではないので Ctrl+l で手動リフレッシュする。