DayOne.appを使いこなすために作ったもの、やっていること

ゆーすけべー日記の記事あたりから周りでDayOneを使うヒトが増えて、自分も気になって使ってみた。

基本的には「独りTwitter」なので、適当に短文を放りこんで蓄積していくもの。自分が感じた特徴としては、

  • イケてる点
    • 自分用なのでヒトに見られたくないものまで気軽に何でも書ける
    • Dropboxでデータ同期できる
  • イケてない点
    • 「書き込もう」という気になることはそうそうない
    • 記録として蓄積していても見返すことは殆どない

ということで「もっと簡単に記録を残せる環境、定期的にある程度読み返す仕組み」を作ればもっと活用することが出来るのでは、と思い色々と整えてみた。

作ったもの

ということで、それをするためのPerlモジュール、そしてそれを使ったコマンドラインツール。

使い方は後述。

Reminder機能をガンガン使う

自分でDay One.appを起動して新規投稿画面を開いて文章を書く、というのは相当な出来事/モチベーションが無いとまず実行しない。半強制的に書く仕組みを使った方が良い。
設定で"Reminder"を有効にし、メニューバーに常駐させておくだけにする。これによって定期的に投稿用ウィンドウが現れるので、そのときに「今何してる」「どんなこと考えてる」などを書く。


特に書くことがなければ無視しても構わない。30分毎でも出てくるたびにとりあえず今やっていることを書いていくと「何かやってる感」は出てくる。

Linuxのサーバと同期する

DayOne.appはMac用アプリだけど、文書は分かりやすい形でファイル保存されているので、Dropboxで同期させておけばLinux環境からも扱える。

さくらVPSで借りているサーバでdropboxをinstallしてみた。UDPパケットをバラまくという問題があるようなのでそこは注意。

で、DayOneの設定でDropboxと同期するようにしておくと、各投稿記事が$HOME/Dropbox/Journal.dayone/entries/.doentryというファイルにXML形式のplistで保存されるので、このディレクトリにファイルを作成すれば記事を投稿できる。

MacではDayOne.appに/Applications/Day One.app/Contents/MacOS/dayoneというコマンドが同梱されているけど、Linuxでも上記のようにファイルを扱えば投稿できる。

というわけでこの記事を参考にオプションなどもMac版に近いかたちで扱えるようにdayoneコマンドが使えるように作ったのがApp::dayonetools。これをインストールするとdayoneコマンドが使えるようになる。

sakura-vps $ cpanm -v https://github.com/sugyan/App-dayonetools/tarball/github
sakura-vps $ echo 'Hello, world!' | dayone --star --date=2012-01-01T00:00:00

過去の書き込みをまとめて自分にメール送信

過去の投稿を見返す機会は自分で作るしかない、と思い自分自身にメールで投稿するように下記のようなスクリプトを書いた。

Journalが格納されているディレクトリを舐めて日付ごとに整理、今現在から見て

  • 1日前の投稿から最大20件
  • 1週間前の投稿から最大10件
  • 1ヶ月前(曜日を揃えるため4週間前)の投稿から最大5件

を適当に取り出して、簡単な形に書きだしてConfig::Pitで設定してあるメールアドレスに送信。

2012-03-21:
10:00:07: 出社してる
...
14:05:20: 交流ランチ。あんまり喋らなかった
14:30:29: Kobitoのupdate版を使ってフィードバック
...
21:00:07: 帰ります

とかこんなカンジに見やすく。cronで毎朝9時に自分宛に送り、過去に何をしていたか何を考えていたか、放置している事項はないか、振り返る。あまりに量が多いと読む気なくすけど、これくらいの量に絞っておけば読むと思う。

Gitのコミットログを記録

Reminderで出てきたとき以外にも、自動的に投稿させる仕組みとして、gitのcommitを記録するようにする。

これもApp::dayonetoolsに同梱しているのでインストールしてあれば

$ git dayone-setup

というかたちで使える。中身としては

#!/bin/sh
if which dayone > /dev/null; then
    DIRNAME=$(basename "$(git rev-parse --show-toplevel)")
    BRANCH=$(git branch | grep '^*' | sed -e 's/* //')
    echo git commit to "$DIRNAME/$BRANCH": $(grep -v ^# $1) | dayone
fi

というシェルスクリプト.git/hooks/commit-msgに書き込むだけ(既にhookが登録されあると上書きしてしまうので注意)。リポジトリディレクトリ名、作業ブランチ名、コミットログの内容をdayoneコマンドを使って投稿する。
一度これを実行しておけば、それ以降そのリポジトリでのcommitはすべてDayOne.appに記録されていく。

Twitterの自分の発言を同期

Twitterでの自分の呟きも保存しておく。

Twitter Streaming APIを使って、自分が投稿、RTしたものを即座にDayOne.appに記録する。別にリアルタイムである必要はなくて定期的にREST APIから取得してきて登録しても良いかもしれない。

結論

まだまだ試行錯誤中。「もっとこうしたら良い」「自分はこんな使い方してる」とかあれば教えていただきたいです。