Ubuntu Weekly Recipe

第182回Taskwarriorでターミナルからタスクを管理する(1)

Ubuntuには様々なタスク管理ツールが存在します。代表的なものは第78回で紹介したTasqueですが、これ以外にも第171回のTomboyなどを用いてタスクを管理することができますし、Webサービスを直接利用することを含めれば、無数の選択肢があります。今回はその中でもひと味ちがったタスク管理ツール、ターミナル上で動作する『Taskwarrior』を紹介します。

Taskwarriorの導入

Taskwarriorは、ターミナル上で動作するToDo/タスク/プロジェクト管理ツールです。単純なToDoアイテム管理ツールに留まらず、バーンダウンチャートなどの各種チャートの生成機能・レポートツールなどを備えています。ただし、2011年7月現在、UI部分は英語のままなので、英語に苦手意識があると、慣れるまでは少々厳しいかもしれません[1]⁠。とはいえ、日本語のタスク名称等は登録できるので、平易な英語さえ読めれば問題なく利用できることも事実です。

まずはインストールしてみましょう。Taskwarriorは、Ubuntu 10.10以降の環境であれば、⁠task」というパッケージ名でuniverseリポジトリに収録されています[2]⁠。以下のコマンドでインストールできます。……Taskwarriorはターミナル上で機能するアプリケーションですので、当然ながら以下の操作はすべてターミナルから行います。

リポジトリから導入する場合
$ sudo apt-get install task

より古いUbuntu環境で利用したい、もしくはリポジトリに収録されていない最新版のTaskwarriorを利用したい場合、taskwarrior.orgにあるバイナリパッケージか、PPAを利用してインストールできます。直接バイナリパッケージを利用するよりは、たいていは(PPAにあるものの方が古いのでなければ)PPAから導入した方がよいでしょう。

バイナリパッケージを利用する場合
$ wget http://www.taskwarrior.org/download/task_1.9.4-0ubuntu1~lucid2_i386.deb
$ sudo dpkg -i task_1.9.4-0ubuntu1~lucid2_i386.deb
PPAから導入する場合
$ sudo add-apt-repository ppa:ultrafredde/ppa
$ sudo apt-get update
$ sudo apt-get install task

インストールが完了したら、実際に利用してみましょう。Taskwarriorを呼び出すには、⁠task」というコマンドを用います。テストとして「Taskwarriorに慣れる」というタスクを登録してみます。タスクの新規登録には、⁠task」にサブコマンドとして「add」を与えた、⁠task add」を用います。

$ task add "Taskwarriorに慣れる"

しかしながら、現在のバージョンではパッケージに日本語リソースが含まれていないので、登録しようとすると「Could not read string file '~/.task/strings.ja-JP'」といったメッセージに遭遇するはずです。

以下を実行してリソースファイルを追加してください。

$ cd ~/.task
$ wget http://people.ubuntu.com/~hito/task/strings.ja-JP  http://people.ubuntu.com/~hito/task/tips.ja-JP

もう一度「task add」を実行し、さらに「task list」としてタスクの一覧を表示してみましょう。

$ task add "Taskwarriorに慣れる"
$ task list

今度はうまく機能し、図1のように一覧されるはずです。

図1 ⁠task add」「task list」を実行した結果。通常のターミナルではなくbyobu上で実行しているため、フッタ部分に各種パフォーマンス情報が表示される
図1 「task add」と「task list」を実行した結果。通常のターミナルではなくbyobu上で実行しているため、フッタ部分に各種パフォーマンス情報が表示される

続けて、さらにタスクを登録してみましょう。

$ task add "Taskwarriorにタスクを登録する"
$ task add "Taskwarriorでタスク管理"

この状態で一覧します。図2のように、これまで登録したタスクに「ID」というナンバリングがされた状態で並んで表示されるはずです。

図2 登録したタスクが画面に表示された
図2 登録したタスクが画面に表示された

タスクを「終了」させてみましょう。タスクの終了は、⁠ID」を指定する形で、⁠task %ID% done」⁠例:task 1 done)というコマンドで指定します。ここではID=1のタスクを終了させてみます。

$ task 1 done

この状態で「task list」を実行すると、以下のようにタスクが「繰り上がって」表示されるはずです[3]⁠。これで、旧ID1の「Taskwarriorに慣れる」というタスクが完了した状態になりました。

また、もしもタスクを「誤って」閉じてしまった場合、⁠task undo」というコマンドを用いることで、直前の操作を取り消すことができます。覚えておくと便利でしょう。

$ task list

ID Project Pri Due Active Age   Description
 1                        1 min Taskwarriorにタスクを登録する
 2                        1 min Taskwarriorでタスク管理

2 tasks

Taskwarriorのごく基本的な使い方は、これだけです。とにかく「task add」でタスクを登録していき、完了したら「task %ID% done」で閉じていく、という流れで利用します。ターミナル上で簡単に操作できるため、日常的な作業の一部をターミナルやEmacs・vimなどのエディタ上で利用している人にとっては便利なはずです。

Taskwarriorのいろいろな使い方

Taskwarriorには、タスクを管理するためのさまざまな使い方があります。が、最大のメリットは、⁠すべての操作をコマンドから実行できる」ことです。

これにより、Emacsen上で動作するメーラーやmutt・Thunderbirdなど、⁠外部コマンドを実行できる」メーラーから直接Taskwarriorを実行し、メールの内容からタスクを作る、といった連携が簡単に行えます。Thunderbirdとの連携muttとの連携は既存の設定を取り込むだけで実現できるでしょう。

また、タスクの実データは「completed.data」⁠pending.data」⁠undo.data」にテキストで記述されているため、外部からエディタ等で修正したり、grepで検索することも簡単に行えます。その一方でUUIDによる衝突管理や、外部アプリケーションとの連携のためのical・yaml形式でのエクスポート機能も備えた「いまどき」のターミナル向けソフトウェアです。

……タイトルに「⁠⁠1⁠⁠」という気になる文字列が入っていることからも分かるように、応用編は後日お伝えすることにして、ここではごく基本的な操作方法だけを紹介します。

タスクの検索

Taskwarriorに登録したタスクは、⁠task list(検索文字列⁠⁠」とすることで検索にヒットさせることができます。気になるURLなどを「task add http://gihyo.jp/」などとして一括で登録しておき、あとから「task list http」とすることでまとめてリストし、時間のある時に一つずつ確認する、といった使い方ができます。

タスクへの「着手」

通常、登録したタスクを一瞬で完了できることはありえません。タスク管理では「着手した」という状態を登録する方法が必要です。Taskwarriorでは、これを「start」という属性で管理しています。⁠task 1 start」などとすることで、⁠タスクに着手した」状態にすることができます。

一度「start」属性にしたタスクは、listなどでの画面表示上、目立つ色で表示されるようになります。大量のタスクを並行してこなしているような人にお勧めの機能です。

各種チャートの作成

add/start/doneで登録/完了させたタスクは、task history・task ghistory・task burndownといったコマンドを用いることでグラフィカルに表示させることができます図3⁠。

図3 バーンダウンチャートを表示させた状態。この例では「start」属性にしたタスクが存在しないため、黄色で表示されるべきタスクがレンダリングされていない
図3 バーンダウンチャートを表示させた状態。この例では「start」属性にしたタスクが存在しないため、黄色で表示されるべきタスクがレンダリングされていない

省略入力

Taskwarriorの各コマンドは、⁠いわゆるCLI[4]⁠」で「show version」「sh ver」となるのと同じように、⁠他のコマンドと区別が付く限り、最小の入力文字数で認識する」という機能があります。

たとえば、⁠task 1 done」「task 1 do」と省略することができますし、⁠task list」「task li」とすることができます。後述のtask shell機能と組み合わせることで、短いキーシーケンスでタスク管理が可能になり、頻繁に利用する場合は便利です。

task shell

Taskwarriorには、⁠task shell」から呼び出せるシェルモードがあります。一度シェルモードに入ると、⁠task list」⁠task add(タスクの内容⁠⁠」といったコマンドの「task」の部分の入力が不要になり、⁠list」⁠add(タスクの内容⁠⁠」といったコマンドで操作ができるようになります。

byobuやtmux・screenなどを利用している環境では、task shellを起動させたままにしておくと便利に利用することができるでしょう。

おすすめ記事

記事・ニュース一覧