Ubuntu Weekly Recipe

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

この記事を読むのに必要な時間:およそ 5 分

第182回で紹介したTaskwarriorは,ターミナル上で動作する,BTSやチケットシステムに似たタスク管理ツールです。テキストベースのデータ構造とコマンドにより,非常に柔軟なカスタマイズが行えるのがポイントです。今回はそうした,Taskwarriorをより「使いこなす」ためのテクニックを紹介します。

Dropbox/Ubuntu Oneと連携する

Taskwarriorのようなタスク管理ツールを利用する場合,もっとも重要なのは「利用するためのコストを下げる」ことです。こうしたタスク管理を行うには,⁠何か思いついたら即座にタスク登録,手持ちぶさたになったらタスク一覧の確認,一日の仕事の始めと終わりにタスクを確認……」と,とにかくこまめにタスクを確認する必要がありますから,確認のための操作はできるだけ手軽である必要があります。

一方で,Taskwarriorのデータディレクトリは,原則としてローカルシステムの~/.tash/に配置することが前提です。これは言い換えると,複数のマシンでTaskwarriorを使いたければ,データ同期を何らかの方法で行う必要がある,ということです注1)⁠こうした作業は非常に面倒なので、早晩やらなくなることが予想されます。⁠一日の仕事の始めにTaskwarriorでタスクを一覧する」という目標の危機です。

こうした問題に対しては,⁠なんらかの方法でデータディレクトリを自動的に同期すればいい」というのが簡単な解です。データの自動同期となれば,DropboxやUbuntu Oneのようなオンラインストレージサービスの出番です。

しかしながら,Taskwarriorは原則として~/.task/にデータ領域があるので,このままではDropboxやUbuntu Oneの同期対象にすることができません。これらのストレージサービスでは,~/Dropboxや~/Ubuntu Oneといったディレクトリが同期対象となっているからです。このような場合,シンボリックリンクを作成してしまうことで対処できることがほとんどです注2)⁠

データを自動的に同期したい場合,次のような操作を行いましょう。いずれもDropbox・Ubuntu Oneの同期のための初期設定は完了していることが前提です。

Dropboxの場合:

データ保存用ディレクトリを作成:
$ mkdir ~/Dropbox/taskwarrior

既存のデータを作成したディレクトリへ移動:
$ mv ~/.task ~/Dropbox/taskwarrior

シンボリックリンクの作成:
$ ln -s ~/Dropbox/taskwarrior/.task ./

Ubuntu Oneの場合:

データ保存用ディレクトリを作成:
$ mkdir ~/Ubuntu One/taskwarrior

既存のデータを作成したディレクトリへ移動:
$ mv ~/.task ~/Ubuntu One/taskwarrior

シンボリックリンクの作成:
$ ln -s ~/Ubuntu One/taskwarrior/.task ./

これにより,Taskwarriorのタスクアイテムが自動的にDropbox・Ubuntu One経由で同期されるようになります。設定も同期したい場合は,さらに次の操作を行ってください。

$ mv .taskrc .task/
$ ln -s .task/.taskrc ./
注1
「原則として」というのがポイントで,後述の方法を用いることでリモートとの同期が可能です。……しかし,たいていの場合はここで紹介する方法が手軽でしょう。
注2
きわめて希に,シンボリックリンクを正しく処理してくれないソフトウェアが存在するため,常に使える手ではありません。……ですが,Taskwarriorにはそうした問題はないので,きちんと機能します。また,ファイルをロックせずに入出力するようなプログラムの場合,データの破損があり得ますが,Taskwarriorはデフォルト設定でこうしたI/Oを安全に行うようになっています(locking=on)⁠

タスク一覧に色をつける

Taskwarriorはテキストベースのソフトウェアですが,出力される文字の配色をコントロールできるように,⁠テーマ」ファイルが準備されています。

テーマの設定は,~/.taskrcを編集することで行えます。⁠include ⁠テーマファイルのフルパス)⁠「例:include /usr/share/task/dark-blue-256.theme」⁠という形で指定してください図1図2)⁠利用可能なテーマファイルは,Ubuntu標準のリポジトリから導入した場合は「/usr/share/task/」⁠PPAから導入した場合は「/usr/share/doc/task/rc/」⁠自分でコンパイルした場合は「/usr/local/share/doc/task/rc/」に存在する,拡張子「.theme」のファイルです。有効なテーマファイルを一覧するには,⁠dpkg -L task | grep .theme」を実行してください。

図1 ⁠include /usr/share/task/dark-green-256.theme」を.taskrcに記述した状態の「task list」出力。

図1 「include /usr/share/task/dark-green-256.theme」を.taskrcに記述した状態の「task list」出力。

図2 ⁠include /usr/share/task/dark-blue-256.theme」を記述した状態での「task list」⁠配色が変更されていることが分かる。

図2 「include /usr/share/task/dark-blue-256.theme」を記述した状態での「task list」。配色が変更されていることが分かる。

なお,テーマファイルはテキストベースで列挙した変数に値をセットする形式です。準備されたファイルが気に入らない場合,⁠man 5 task-color」を参照してカスタマイズしてみてください。

タスクを整理する

タスクの分量が増えてくると,徐々に「そのままでは管理しきれない」状態に近づいていきます。Taskwarriorの機能を利用することで,タスクを様々な形で整理できます。

プライオリティを指定する

あらゆるタスクには,優先順位があります。たとえば「牛乳が切れているので買ってくる」「ペットフードが切れているので買ってくる」であれば,たいていの場合は後者の方が重要でしょう。牛乳がなくてもそれなりに対処する方法はありますが,ペットの食事がないのは非常にかわいそうです(冷凍庫にある適当なものを刻んで出す,という対策はあるかもしれませんが……)⁠

Taskwarriorでは,H/M/L(High/Middle/Low)の三段階でタスクに優先順位(Priority)をつけることができます。優先順位は,Hが高,Mが中,Lが低です。

操作は,すでに登録されているタスクの属性を変更するために「task 1 pri:H」⁠ID:1のタスクにプライオリティHをセット)とするか,タスクの登録時点から「task add pri:M ⁠登録したいタスク)⁠とする,というものです。

複数のタスクを一度に操作する場合は,⁠task 1-3 pri:M」などとすることができます。この操作により,ID:1~3までの全タスクに,⁠M」の優先順位がセットされます。

$ task 1-3 pri:M

Task 1 "買い物に出かける"
  - priority will be set to 'M'.
Proceed with change? (Yes/no/All/quit) A

Modified 3 tasks.

優先度を設定しておけば,task listなどの表示時は,優先度が高いものほど上に表示されるようになり,また,デフォルトの配色テーマではより目立つ色が割り当てられるようになっています。また,⁠task list pri:H」などといった操作で,優先度ごとに一覧することもできます。

これにより,⁠start」「done」などの操作を行った場合に,⁠You have higher priority tasks.」などといったメッセージが出力されるようになります。このメッセージは,~/.taskrcファイル上で,⁠nag=それより大事なタスクがあるんじゃない?」などとすることで任意に設定できます注3)⁠

なお,この機能を利用する場合は,⁠プライオリティ未指定のタスクを放置しない」ということを心がけるとよいでしょう。優先順位が指定されていないタスクの中に高プライオリティにすべきものが含まれていると,作業計画が無意味になってしまいます。⁠task list pri:」を実行することで,プライオリティ未指定のタスクを一覧できます。⁠task add "タスクに優先順位をつける(task list pri:)"」という形でタスクを登録しておき,常に目に入るようにしておくのもよいでしょう。

注3
.taskrcを直接設定するかわりに,⁠task config nag "それより大事なタスクがあるんじゃない?"」と,⁠task config」インターフェースから設定することもできます。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入