org-modeをGTDに使う方法 #3 iPhoneと同期する
iPhoneからアクセスする方法を紹介する。Org-modeにはMobileOrgというiPhoneアプリがあるのでそれを利用する。基本的な設定や使用方法は、ここに書いてある通りに行えばよい。
使用のイメージはこの動画(QuickTIme)を見るとよくわかる。
このエントリーでは、iPhoneとの連携をシームレスに行うために、自分が行ったことを紹介する。
概要
概要を下図に示す。図では、前回エントリーで紹介したものに、今回のテーマであるiPhoneとの連携を追加している。
iPhoneアプリであるMobileOrgはwebdavを経由して母艦と同期を行う。今回使用するwebdavにはidiskを使用した。すなわち、idiskをファイルの一時置き場にして、webdavでiPhoneと母艦を同期する。
davfs等と用いてidiskを常時マウントすることも検討したが、iPhoneと同期するだけの用途に常時マウントはコストが高すぎる。そこで、webdavクライアントを用いて必要なときにファイルを転送することにした。webdavクライアントにはcadaverを用いた。cadaverはコマンドラインから操作できるのでバッチ処理を行うのに便利である。
Emacs-Lisp
(setq org-mobile-directory "~/org/mobile/") (defun org-push-daily-my () (interactive) (org-export-icalendar-combine-agenda-files) (call-process "org2googleCalendar.pl" nil nil nil (expand-file-name org-combined-agenda-icalendar-file)) (org-mobile-push) (call-process "org-mobilePush.sh")) (defun org-pull-daily-my () (interactive) (call-process "org-mobilePull.sh") (gtd) (org-mobile-pull) ;; (save-buffer) ;; (find-file "~/org/from-mobile.org") ) (define-key global-map [f11] 'org-pull-daily-my) (define-key global-map [f12] 'org-push-daily-my)
また、モバイル用のディレクトリも作っておく。
mkdir ~/org/mobile
F12でつぎの動作が行われる:
- icalendar 形式のファイルをエクスポート(前回エントリーで紹介)
- Googleカレンダー形式に変換(前回エントリーで紹介)
- iPhone用のファイルをエクスポート(本エントリーで追加)
- iPhone用のファイルをidiskに転送(本エントリーで追加)
F11でつぎの動作が行われる:
idiskにアクセス
上記 Emacs-Lispコードでは、idiskにファイルを送信、idiskからファイルを受信するために、それぞれorg-mobilePush.shとorg-mobilePull.shを呼んでいる。この2つのシェルスクリプトからwebdavクライアントcadaverを呼んでいる。それぞれのシェルスクリプトは次の通りである。
org-mobilePush.sh(idiskに送信)
#! /bin/sh # usage : org-mobilePush.sh URL=https://idisk.me.com/username/org/ DIR=$HOME/org/mobile cd $DIR cadaver $URL << EOF rm * mput * EOF
org-mobilePull.sh(idiskから受信)
#! /bin/sh # usage : org-mobilePull.sh URL=https://idisk.me.com/username/org/ DIR=$HOME/org/mobile cd $DIR /bin/rm -f * cadaver $URL << EOF mget * EOF
.netrc
パスワードなしでアクセスするために、~/.netrc にマシン名、ユーザ名、パスワードを登録する。
% cat ~/.netrc machine idisk.me.com login username password hogehoge
~/.netrc のパーミッションを設定する。
% chmod 600 ~/.netrc