コマンドベースのタスク管理 Taskwarrior

1年余り Raspberry Pi で Redmine を運用しています。
[SBC(シングル・ボード・コンピュータ)]だからか Ruby 付属の Web サーバ WEBrick だからかは不明ですが、パフォーマンス的に辛いです。
ストレージエンジンを高速なデバイスに移すことで、かなり早くなりますが普段使いしていると気になる時も出てきてしまいます。

そこで、普段使いようにシンプルで高速な別のタスク管理を試すことにしました。

調べてみると、コマンドベースのタスク管理 Taskwarrior というパッケージがあることを知りました。
コマンド(CLI)ベースですから、軽さは明白でしょう。
早速導入して使っていきたいと思います。

目次

前提条件

Lubuntu 18.04.3 LTS(x64)です。

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:    18.04
Codename:   bionic

Taskwarrior インストール

Taskwarrior はリポジトリに登録されているため、簡単に導入可能です。

  • 確認
$ apt-cache search Taskwarrior
bugwarrior - Pull tickets from bug trackers into taskwarrior
ptask - GTK+ graphical user interface for managing tasks
python-powerline-taskwarrior - Powerline segment for showing Taskwarrior information (Python 2)
python-taskw - Python bindings for your taskwarrior database
python3-powerline-taskwarrior - Powerline segment for showing Taskwarrior information (Python 3)
python3-taskw - Python bindings for your taskwarrior database (Python 3 version)
taskd - Synchronisation server for taskwarrior
tasksh - shell command that wraps Taskwarrior commands
taskwarrior - feature-rich console based todo list manager
vit - full-screen terminal interface for Taskwarrior
  • 導入
$ sudo apt install taskwarrior

以下のパッケージが新たにインストールされます:
  taskwarrior
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。

Lubuntu 18.04 LTS には、バージョン 2.5.1 が導入されました。

$ task --version
2.5.1

Taskwarrior 使い方

公式サイト

Taskwarrior - What's next?
Taskwarrior - What's next?

タスクの確認

"task list" コマンドを使いましたが、たぶん "task" だけでも OK です。

$ task list
A configuration file could not be found in 

Would you like a sample /home/link/.taskrc created, so Taskwarrior can proceed? (yes/no) yes
No matches.

初回利用時、"/home/link/.taskrc" に構成情報ファイルが作成されます。

base on Taskwarrior - Configuration
Configuration
Taskwarrior stores all configuration information in a file in your home directory, named .taskrc. The default .taskrc file contains a minimal set of entries, with only one required setting, which is:

Taskwarriorは、すべての構成情報を.taskrcという名前のホームディレクトリ内のファイルに保存します。 デフォルトの.taskrcファイルには最小限のエントリのセットが含まれており、必要な設定は1つだけです。

  • .taskrc サンプル
    Lubuntu 18.04 LTS に導入直後の ".taskrc" は以下のようになっていました。
$ cat /home/link/.taskrc
# [Created by task 2.5.1 12/8/2019 20:58:00]
# Taskwarrior program configuration file.
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-color',
# 'man task-sync' or 'man taskrc'

# Here is an example of entries that use the default, override and blank values
#   variable=foo   -- By specifying a value, this overrides the default
#   variable=      -- By specifying no value, this means no default
#   #variable=foo  -- By commenting out the line, or deleting it, this uses the default

# Use the command 'task show' to see all defaults and overrides

# Files
data.location=~/.task

# Color theme (uncomment one to use)
#include /usr/share/taskwarrior/light-16.theme
#include /usr/share/taskwarrior/light-256.theme
#include /usr/share/taskwarrior/dark-16.theme
#include /usr/share/taskwarrior/dark-256.theme
#include /usr/share/taskwarrior/dark-red-256.theme
#include /usr/share/taskwarrior/dark-green-256.theme
#include /usr/share/taskwarrior/dark-blue-256.theme
#include /usr/share/taskwarrior/dark-violets-256.theme
#include /usr/share/taskwarrior/dark-yellow-green.theme
#include /usr/share/taskwarrior/dark-gray-256.theme
#include /usr/share/taskwarrior/dark-gray-blue-256.theme
#include /usr/share/taskwarrior/solarized-dark-256.theme
#include /usr/share/taskwarrior/solarized-light-256.theme
#include /usr/share/taskwarrior/no-color.theme

利用方法

上記公式サイトを参考に、少し動かしてみます。

タスク確認

"task list" コマンドで登録済みタスクの一覧を表示できます。

$ task list
No matches.

タスク追加

上記公式サイトの一番上にある例文をそのまま登録してみます。

$ task add Fix the leaky plumbing
Created task 1.

"task list" で登録を確認してみます。

$ task list

ID Age Description            Urg 
 1 4s  Fix the leaky plumbing    0

無事登録されていることを確認できました。
なお、Age は登録してからの経過時間です。

プロジェクトで分類

project を付与すると分類できます。

$ task project:TEST add "20191208 task1"
Created task 2.
The project 'TEST' has changed.  Project 'TEST' is 0% complete (1 task remaining).

$ task list

ID Age   Project Description                Urg 
 1 11min         Fix the leaky plumbing        0
 2 3s    TEST    20191208 task1                1

2 tasks

Project 欄が追加されていることが確認できます。

タスク削除

タスクは、キーを指定して削除することが可能です。
※削除キーは全て小文字で指定する必要があります。

ID 欄を指定して削除

$ task list

ID Age   Description                Urg 
 1 17min Fix the leaky plumbing        0

1 task

$ task id:1 delete
Delete task 1 'Fix the leaky plumbing'? (yes/no) yes
Deleting task 1 'Fix the leaky plumbing'.
Deleted 1 task.

$ task list
No matches.

Project 欄を指定して削除

以下の例だと2つのタスク(20191208 task1, 20191208 task2)が削除されます。

$ task list

ID Age   Project Description                Urg 
 1 17min         Fix the leaky plumbing        0
 2 3min  TEST    20191208 task2                1
 3 2min  TEST    20191208 task1                1

3 tasks

$ task project:TEST delete
Delete task 2 '20191208 task2'? (yes/no/all/quit) yes
Deleting task 2 '20191208 task2'.

Delete task 3 '20191208 task1'? (yes/no/all/quit) yes
Deleting task 3 '20191208 task1'.
Task 8854110f '20191208 task1' is not deletable.
Deleted 2 tasks.
The project 'TEST' has changed.  Project 'TEST' is 0% complete (0 of 0 tasks remaining).

直指定

もちろん、タスク名を指定しても削除可能です(が、現実的ではない気がします...)。

$ task delete "20191208 task1"
Delete task 2 '20191208 task1'? (yes/no) yes
Deleting task 2 '20191208 task1'.
Deleted 1 task.
The project 'TEST' has changed.  Project 'TEST' is 0% complete (0 of 0 tasks remaining).

結論

Taskwarrior はコマンドベースなのでレスポンスは高速です。
待たされるという感覚自体がありません。

ただ、シンプルすぎるので多くのタスクを管理するには向かないでしょう。
しばらくは Redmine と併用してみようと思います。