毎日のメモを一箇所にまとめたいのでオススメされていた Day One をつかいます

背景

毎日のメモをひとところにまとめたい。

要件

  • 複数の端末でメモを書けること
    • ケータイ端末から入力できること(とりあえず iPhone)
    • キーボードのついた端末から入力できること(とりあえず Mac)
  • 入力内容を複数の端末で参照できること
    • 非同期でかまわない
    • 再編集の可否を問わない

希望

  • コンソールからの入力が可能であること
  • オフラインで編集可能であること
  • 人間が読める形式で保存されること
    • エクスポート処理など特別な処理をしないでデータにアクセスできること
    • 特殊なファイル形式でないこと(テキストファイルを希望)

その他

  • お金を払ってもよい

結果

今回採用したもの
  • Day One
今回見送られた候補

Day One

オススメされていた。完璧な感じではないけど、いい感じな気はする。

気に入った:
気に入らない(または問題点):
  • データが XML (plist)

その他:

  • 有料(とりあえずアプリケーションの分だけ)
  • 同期は iCloudDropbox を選べる
  • 1エントリ1ファイル というのが、良いかどうか判断しかねる(アプリをとおしてみれば、日毎にまとめてくれる)

howm

テキストエディタプラグインする自分用 wiki っぽいメモ機能。

気に入った:
  • エディタと相性がよい
  • けっこう機能が充実している
  • テキストフォーマット
気に入らない(または問題点):
  • モバイル端末からの入力が困難
    • エディタのプラグインで実現していることが裏目にでている気がする
    • タッチデバイスにエディタ導入して howm つかうとかはナシ (可能かどうかの話ではない)
その他:

データの同期については Dropbox などのサービスが存在しているため、テキストデータを扱うならさほど困難でないと考える(データを扱う単位によってはマージの難しさがある)。

howm と似たような位置にあって、もっとシンプルな方式の ChangeLog メモという選択肢もみてみたが、これもモバイル端末との相性があまりよくない(MHODiA というアプリがある: https://itunes.apple.com/jp/app/id431691790)

Evernote とそのクライアントたち

今 PostEver という iPhone アプリをつかっている(https://itunes.apple.com/jp/app/id422023962)。1日の入力を1つのノートにどんどん追記していく(日毎に1つのノートになる)。
PostEver のノートに Mac からの入力があいのりできるならそれでよかった(現状簡単にきれいにできない)。

気に入った:
  • PostEver は入力に徹していてよい(テキストを入力するためのフィールドしかないため、過去の入力は他のクライアントで参照することになる)
  • Evernote の機能を利用できる
  • Evernote は関連のアプリケーションが充実している
気に入らない(または問題点):
  • PostEver に相当する Mac クライアントがない
  • データへのアクセスは常に Evernote を経由する必要がある
その他:
  • EvernoteREST API を持ってたら話がかわってくる可能性あるが thrift
  • 今みたら PostEver2 という iOS7 対応版の別アプリがあることに気付いてウッとなった(Tweetbot, Tweetbot2, 3... 問題)


以下は思ったことなど。

雑感

観点としては以下について重点を置いていたように思われる:

  • データをどこにどうやって置くか
    • 複数の端末で同期可能な箇所にあること(プライベートでさえあれば手段は問わない)
  • どのように見えるか
    • 日毎にまとまっているのが好ましい

Evernote の1アカウントをもって一箇所とみなす、という雑な運用でもよかったかもしれないという迷いがある。見せかたの問題だったのかもしれない。

Dropbox について

サードパーティのクライアントを認証すると $HOME/Dropbox/アプリ みたいなディレクトリを作られてつらい気持ちになるが、 落ち着いて $HOME/Dropbox/Apps にリネームすればよさそう。Day One が Dropbox で同期されているディレクトリがわからなくなってしまうので、一旦終了させてから起動して、ディレクトリを教えてあげれば認識する。
iPhone アプリのほうは、どういう仕組みになっているかわからないが、とりあえず上記手順ののちインストールして同期設定を行った。

複数端末で同期するということについて

データの扱いについて、同時更新の問題があるため以下のような対応になるのかなと思う:

  • データの単位について、
    • 1端末から1ファイル(データ)単位で更新する
    • 1更新で1ファイル(データ)を追加する
  • ロックはあまり現実的でない

Day One では、1更新で1ファイルを追加し、編集の際は衝突した事実はのこるものの基本後勝ちというルールっぽい。同時更新すると以下のようにコンフリクトしたファイルがつくられる。

ls -1 ~/Dropbox/Apps/Day\ One/Journal.dayone/entries
FF04BE2FE3304849B025ABAF87150748 (Watanabe Mayu's conflicted copy).doentry
FF04BE2FE3304849B025ABAF87150748.doentry

もしコンフリクトした場合は https://dayone.zendesk.com/hc/communities/public/questions/200028729--Conflicted-copy-on-Dropbox-sm- の、ファイル消して作りなおす、というのがオフィシャルな回答っぽい。
ファイル名が UUID (version 4) のハイフン抜きにしたもので、中身の XML(plist) が適切であればクライアントが何であってもよさそうなので、別ファイルにしてあげてもよいかもしれない。

テキストのメタデータについて

テキストデータでメモ行為をしようとすると、メモ本文とは別に管理のためのメタデータをどこに持つか問題が常につきまとう気がしていて、今自分の認識では、本文にちかいところに決まったフォーマットで入っているほうがあつかいやすそうという感じです。ChangeLog 形式とか XMLメタデータ持つのがわかりやすくて処理しやすくてよさそう。
メタデータファイルとかインデックスファイルを別に持つというのはキャッシュ用途でなければ端末間の同期とかの都合でめんどくさそうという印象。

総括

そういうわけで、メモ行為について、しばらく Day One つかって生活してみます。