トップ «前の日記(2012-01-04) 最新 次の日記(2012-01-07)» 編集

2012-01-06 [長年日記]

_ gyunyuというRTMアプリを作りました

これは何か

wtnabe/gyunyu - GitHub

  • Ruby で書かれた
  • コマンドライン向け RTM アプリ

です。

出ました、またコマンドラインツールです。

gyunyu という名前は、

なんか日本語名の方がRubyっぽい

というのと、RTMなんとか、RTなんとか、でどう考えてもかっこいいのが浮かばなかったからです。

使い方

$ gem install gyunyu
$ gyunyu
(ヘルプ)
$ gyunyu -c today_yet -l 仕事 -d name,estimate
(今日まだ終わっていない仕事を見積もり時間とともに出力)

こんな感じです。

できること

  • 登録済みのタスクを検索して出力します
  • 出力フォーマットは CSV, YAML, JSON です(デフォルトは CSV)
  • 「期日」だけですが、日本時間でも正確に今日とか昨日とかを検索できるフィルタを用意しました。面倒な検索条件を自分で書く必要がありません。

今のところ ( 0.2.0 現在 )

  • CRuby 1.9.2 でしかテストしてません
  • いろいろ考えたんですが、まだ export コマンドしか作ってません

なんでこんなもの作ったか

個人的に以前から作業時間の記録などをもとに作業効率の自己評価とかやってるわけです。えぇまぁ積極的にやりたいわけじゃないですけど。で、そのためにすでに入力済みの RTM の情報が記録としても使えるじゃーんと思って完了済みタスクを開いてみてたんですが、

結局手作業で転記するしかない

というおよそプログラムの書ける人間としてはやってはいけない単純作業をくり返していたんです。半年くらい。でもまぁそれまではおおよそ分かればいいしと思っていたのと、転記の際に RTM には書き漏れていた情報を追記したりして回していたのです。

が、いよいよ時間の記録の方を重視することになったので、あーこれはやっとれんということで RTM API Key を取得してちょっとずつ動かしてみていたのでした。

苦労したところ

  • モダンな認証方法がよく分かってなかった
  • RTMの「見積もり時間」が「入力したまま」の状態で入っていて、数字としての意味を解釈するのに一手間必要だった。
  • API で返ってくるタスクは task を包む taskseries という謎の構造を持っていた
  • RTM API では日時の表記に UTC の ISO8601 フォーマットを要求するんだけど、どうも指定した期間の情報がちゃんと取れないと思ったら フォーマットとしては UTC の ISO8601 を要求するけど、実際の時間について timezone の変換は不要 という変な仕様になっているようだった。
    • たぶんアカウント情報の timezone の設定をいい具合に使ってくれてる。
    • ただし返ってくるデータは正しく UTC の timezone になってくるので変換が必要

Special Thanks to

@mootoh and mootoh/rtmilk - GitHub !

今後は

rails console みたいな gyunyu console が作れたら task の作成や更新も楽にできそうだなと思うんだけど、今のところそんなもんできそうな気がしないです。

余談

これを作った時点での RTM の時間関係の filter の動作をメモしておきます。

  • due:today は JST だと today か yesterday のタスクが取れる
    • 単に9時間ずれたタスクのリストが取れるのではない
    • search 発行時点での UTC の today の日付を localtime に当てはめて 00:00:00 から 23:59:59 までのタスクが取れる
    • たまたま夜に実行すると今日の分が取得できる
  • dueAfter に正確な時刻を入れる場合は1秒前を基準にする。 >= ではなく > 相当。たぶん due 以外でも一緒。
Tags: GTD Ruby RTM