ここだけの話なのですが、
目標管理? タスク管理? スケジュール管理?
読者の皆さんはどのように人生の目標をたて、
たとえばこの記事を書いている人の場合、
忘れないためには
そもそも目標管理とは、
Ubuntuでのタスク管理と言えば第78回で小林さんがTasqueを紹介していますし、
それ以外にもPython-Gtkで作られたGetting Things GNOMEやタスク管理というよりはプロジェクト管理に近いGNOME Plannerなんてのもあります。プロプライエタリではあるもの、
ただどれも一長一短というか、
そこで今回は、
コマンドライン向けタスク管理ツール:Taskwarrior
「コマンドライン向け」
「Taskwarrior」
さて、
そこで出てくるのがTaskwarrior専用のサーバーであるTaskserverです。Taskwarriorのシンプルなデータ構造はそのままに、
Taskwarriorをインストールする
実は今回の目的のためにTaskwarriorをインストールしなくてもかまいません。ただTaskserverのテストにはクライアントがあったほうが便利なので、
さて、
Taskserverの現行バージョンである1.
$ mkdir task && cd $_ $ curl -LO http://taskwarrior.org/download/task-2.4.0.tar.gz $ tar xvf task-2.4.0.tar.gz $ cd task-2.4.0 $ sudo apt install build-essential cmake uuid-dev libgnutls-dev $ cmake -DCMAKE_BUILD_TYPE=release . $ make $ sudo make install
これだけです。インストールできたらtask addやtask listが正しく動いているかどうか確認しましょう。とりあえず動作確認のために、
$ task add スクフェスをはじめる project:目標 $ task add スクフェス用のスマホを用意する $ task add スクフェスをインストールする $ task add 今年中にランクを100まであげる $ task 1 modify depends:2-4 due:eoy $ task 2-4 modify project:目標 $ task add Recipeをコンスタントに執筆する project:目標 $ task add 毎月Recipeを執筆する due:eom recur:monthly until:eoy $ task add RecipeでSnappyネタを執筆する $ task add RecipeでMakeネタを執筆する $ task add RecipeでClickネタを執筆する $ task 5 modify depends:6-9 due:eoy $ task 6-9 modify project:目標 $ task add 挨拶はチキン亭 +標語 until:eoy $ task add なるべく妖怪のせいにしない +標語 until:eoy $ task add よく寝て、よく眠る +標語 until:eoy $ task add 悩んだら牛乳に相談! +標語 until:eoy $ task add なせば大抵なんとかならないかもしれない +標語 until:eoy
何をどう設定しているかはなんとなくわかってもらえるのではないでしょうか。ちなみに今年の目標は
ちなみにTaskwarrior 2.
$ task add 健康診断@部室 scheduled:2015-04-10T11:00 due:scheduled+1hour
Taskserverをインストールする
次に適当なUbuntuサーバーにTaskserverをビルドしてインストールします。このあとスマートフォンからもアクセスするので、
$ mkdir taskd && cd $_ $ curl -LO http://taskwarrior.org/download/taskd-1.0.0.tar.gz $ tar xvf taskd-1.0.0.tar.gz $ cd taskd-1.0.0 $ sudo apt install build-essential cmake uuid-dev libgnutls-dev gnutls-bin $ cmake -DCMAKE_BUILD_TYPE=release . $ make $ sudo make install
既定の通信ポートとして53589を利用します。ファイヤーウォールなどでこのポートを許可しておいてください。
Taskserver用にtaskdユーザーを作成し、
$ sudo adduser --system --no-create-home --disabled-login taskd
さらにTaskserver用のディレクトリを作成し、
$ sudo mkdir /var/taskd $ sudo chown taskd /var/taskd $ sudo -u taskd taskd init --data /var/taskd
次にTaskserverの証明書と鍵を作成します。taskdのソースコードの中には、
$ cd pki $ editor generate.server organization = (組織名) cn = (一般名) dns_name = "(サーバーのドメイン名)" ip_address = "(サーバーのIPアドレス)" $ ./generate $ sudo install -o taskd -m 600 *.pem /var/taskd/ $ sudo -u taskd taskd config --data /var/taskd --force client.cert /var/taskd/client.cert.pem $ sudo -u taskd taskd config --data /var/taskd --force client.key /var/taskd/client.key.pem $ sudo -u taskd taskd config --data /var/taskd --force server.cert /var/taskd/server.cert.pem $ sudo -u taskd taskd config --data /var/taskd --force server.key /var/taskd/server.key.pem $ sudo -u taskd taskd config --data /var/taskd --force server.crl /var/taskd/server.crl.pem $ sudo -u taskd taskd config --data /var/taskd --force ca.cert /var/taskd/ca.cert.pem $ sudo -u taskd taskd config --data /var/taskd --force server 0.0.0.0:53589 $ sudo -u taskd taskd config --data /var/taskd --force client.allow '^task [2-9],Mirakel [2-9]'
最後の2つはサーバーのlistenアドレスとポート、
Taskserverには最初からtaskdctlという起動スクリプトが同梱されています。環境変数$TASKDDATAを設定のうえで、
description "Taskserver"
author "Author Name <author@example.com>"
start on runlevel [2345]
stop on runlevel [!2345]
setuid taskd
respawn
exec taskd server --data /var/taskd
あとは実際にTaskserverを起動するだけです。
$ sudo start taskd $ ps -fe | grep taskd taskd 11130 1 60 18:33 ? 00:00:06 taskd server --data /var/taskd ubuntu 11145 916 0 18:33 pts/0 00:00:00 grep --color=auto taskd $ ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 10 *:53589 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::*
最初はpsコマンドやssコマンドで、
Taskserverにアカウントを作成する
Taskserverが無事に起動するようになりました。次にクライアントから接続できるようアカウントとその他もろもろを作成します。具体的には以下の作業を行います。
- Taskserverへの組織とユーザーの追加
- クライアント用の証明書と鍵を作成
- クライアント側の接続先設定
まずはTaskserverに組織
$ sudo -u taskd taskd add --data /var/taskd org Public Created organization 'Public' $ sudo -u taskd taskd add --data /var/taskd user 'Public' 'Mitsuya Shibata' New user key: 3971315c-36ee-471f-b1d6-c0396fdcf635 Created user 'Mitsuya Shibata' for organization 'Public' $ sudo restart taskd
次にサーバーの証明書と同様にTaskserverのソースコードのpkiディレクトリで、
$ ./generate.client shibata
「shibata」
あとはこの証明書とTaskserverのアドレスをTaskwarriorに設定するだけです。taskd.
$ chown 400 ~/.task/*.pem $ echo >> ~/.taskrc <<EOF taskd.certificate=/home/ubuntu/.task/shibata.cert.pem taskd.key=/home/ubuntu/.task/shibata.key.pem taskd.ca=/home/ubuntu/.task/ca.cert.pem taskd.server=(Taskserverのアドレス):53589 taskd.credentials=Public/Mitsuya Shibata/3971315c-36ee-471f-b1d6-c0396fdcf635 EOF
ここまででクライアント側の設定は完了です。Taskserverと同期してみましょう。初回同期時は一度すべてのデータをサーバーに送信する必要があるため、
$ task sync init Please confirm that you wish to upload all your pending tasks to the Taskserver (yes/no) yes Syncing with (Taskserverのアドレス):53589 Sync successful. 16 changes uploaded.
これで同期完了です。もし認証に失敗する場合は、
$ sudo cat /var/taskd/orgs/Public/users/3971315c-36ee-471f-b1d6-c0396fdcf635/tx.data
今後はクライアント側でタスクを変更したあとにタスクを確認すると、
$ task add 客先打ち合わせ@大赦 due:28th recur:monthly until:eoy $ task list (中略) There are local changes. Sync required. $ task sync
Android向けタスク管理ツール:Mirakel
「Mirakel」
Taskwarriorと同様にクライアント証明書を作成します。アカウントは同じなので、
まず以下のようなファイルを作成してください。名前はmirakel.
username: Mitsuya Shibata
org: Public
user key: 3971315c-36ee-471f-b1d6-c0396fdcf635
server: (Taskserverのアドレス):53589
次に証明書類をこのファイルに追記していきます。
$ echo "client.cert:" >> mirakel.conf $ cat shibata.cert.pem >> mirakel.conf $ echo "Client.key:" >> mirakel.conf $ cat shibata.key.pem >> mirakel.conf $ echo "ca.cert:" >> mirakel.conf $ cat ca.cert.pem >> mirakel.conf
この設定ファイルをスマートフォンに移動しておいてください。Mirakelをインストールしたら起動して、
![図1 MirakelのTaskwarrior設定画面 図1 MirakelのTaskwarrior設定画面](/assets/images/admin/serial/01/ubuntu-recipe/0357/thumb/TH400_001.jpg)
上記画面で
![図2 Androidのバージョンによってこのメニューの表示方法は異なる 図2 Androidのバージョンによってこのメニューの表示方法は異なる](/assets/images/admin/serial/01/ubuntu-recipe/0357/thumb/TH400_002.jpg)
![図3 同期が完了したら、タスクが表示される 図3 同期が完了したら、タスクが表示される](/assets/images/admin/serial/01/ubuntu-recipe/0357/thumb/TH400_003.jpg)
同期はすぐに完了するはずです。もしうまく同期できない場合はエラーメッセージやTaskserever側のログを確認してください。特にTaskserverのclient.
あとはMirakelでタスクを追加して同期したり、
天は自らタスクる者を助く
今回は、
このようにできるだけタスク管理部分を簡単にしておけば、
さらに大きな問題は、
$ task delete project:目標 $ task add 2016年の元旦に目標をたてる project:目標 scheduled:soy due:soy $ task sync