Geek-Side

<< < 1 > >>

org-modeとToodledoを連携してどこでもタスク管理


これまでorg-modeで編集するファイルをDropBoxで連携して、いろんなPCでorg-modeでタスク管理をやっていました。
OSなんてWindows,Linux,Macとてんでバラバラの環境でもEmacsとDropboxが入れば連携できる素晴らしい環境でした。
これまではこれで満足な環境だったのですが、以下のような機能が欲しくなりました。

  • リマインダーメール機能が欲しい
  • ipadでもタスク管理をやりたい

リマインダーメールはともかく、org-modeと連携してipadでタスク管理をやりたいならMobileorgなのかもしれないけど、同期の手順が煩雑なので敬遠していました。
そこで目をつけたのがToodledoです。Toodledoはリマインダーメールの機能も備えていますし、org-modeとToodledoの連携を行うorg-toodledoがあります。
Toodledoに連携さえ出来れば、ipad専用のToodledoアプリでタスク管理できます。

インストール


環境はEmacs-24、Emacsの24系から正式導入されたパッケージ管理システムを用いて導入しました。MELPAからインストールするため、下記の設定を~/.emacs.d/init.elに追加して有ります。

 (require 'package)
 (add-to-list 'package-archives
              '("melpa" . "http://melpa.milkbox.net/packages/") t)
 (package-initialize)

M-x package-list-package を実行して、一覧に表示されるorg-toodledoをインストールします。

org-toodledoの設定

下記の設定を~/.emacs.d/init.elに追加します。

 (require 'org-toodledo)
 (setq org-toodledo-userid "Account Setting画面のUnique ID")
 (setq org-toodledo-password "パスワード")
 ;; 保存時に常に同期する。確認を行うときは "ask"を指定する
 (setq org-toodledo-sync-on-save "yes")
 ;; フォルダーを第一階層の名称に使う
 (setq org-toodledo-folder-support-mode 'heading)
 
 ;; Useful key bindings for org-mode
 (add-hook 'org-mode-hook
           (lambda ()
             (local-unset-key "C-o")
             (local-set-key "C-od" 'org-toodledo-mark-task-deleted)
             (local-set-key "C-os" 'org-toodledo-sync)
             )
           )
 (add-hook 'org-agenda-mode-hook
           (lambda ()
             (local-unset-key "C-o")
             (local-set-key "C-od" 'org-toodledo-agenda-mark-task-deleted)
             )
           )
 

初期連携

さて、下の画像のようなorg-modeのファイルを作りました。


このファイル上で M-x org-toodledo-initializeを実行すると、「Default heading for Toodledo tasks:」と聞かれるので「Test」を指定すると、下記のようにToodledoに連携されます。



TODOが付いているものだけ連携され、第3階層のTODOは階層を無視されてはいますが、ちゃんと取り込まれています。
また、リピート設定もうまく連携できています。

日々の連携

Toodledoで追加したタスクはEmacs上で Cntrl-o s で同期されます。
org-modeからToodledoへの連携は、上記のようにorg-toodledo-sync-on-saveを設定していればファイル保存時に自動的に行われます。

Org-ModeがSpeedBarに対応

Org-Modeが5.16からSpeedBarに対応したそうで。
どういうことかというと、Org-Modeでは アスタリスクの数で階層を深くすることが出きるけど、
この階層のうち、第一、第二階層までのインデックスがSpeedBarで表示出きるようになるってこと。

使い方はOrg-Modeでファイルを編集中に M-x speedbarとすると、ファイル一覧が表示される。
さらにファイルをえらんで '+' を押すと Org-Modeで言う第一階層が展開される。
さらに '+' を押すと第二階層が。
Enterでその場所にジャンプしてくれる。

Org-Modeで編集しているファイルが肥大化してくると非常に重宝する機能。
ついでに今まであまり使っていなかった Speedbarの便利さにも触れることが出来た。

org-modeとappt.elでアポイントメントを管理

仕事中に約束の時間をうっかり過ぎないように、携帯電話でアラームを鳴らすようにしたり、
PC上だと、ポップアップでアラームを表示してくれるようなソフトを使ってたけど、
org-modeの機能で実現できる事を知った。
これでついつい作業に没頭して、会議等の出席に遅れるようなミスを防ぐことが出来る。

org-modeとappt.elを連携させて実現している機能で、org-modeで書いたスケジュールと連動して指定時間前になると、
アラームがmode-lineやwindowに表示され非常に便利。

準備としてはorg-modeでファイルを開いて(大抵は拡張子が.orgならorg-modeになる)、
agendaファイルとして登録する(キーバインドはC-[)。
次に.emacsの設定は以下のとおりにしておけば、起動時にagendaファイルからアラームを登録してくれる。
; apptをwindow表示
(setq appt-display-format 'window)
; appt message 表示秒数
(setq appt-display-duration 30)
; beep音をならす
(setq appt-audible t)
; appt message 何分前にアラームを上げるか
(setq appt-message-warning-time 14)
; mode line に apptまでの分を表示
(setq appt-display-mode-line t)
(appt-activate 1)
(org-agenda-to-appt)


; 保存時にorg-agenda-to-apptを実行
(add-hook 'org-mode-hook
	  (lambda() (add-hook 'before-save-hook
			      'org-agenda-to-appt t)))

上記の設定で、例えば下記のような内容がある場合
** 定時ダッシュ
   SCHEDULED: <2007-11-19 月 18:00>
17時46分から、mode-lineとwindowでアラームを表示してくれる。

スケジュールを追加後には手動で M-x org-agenda-to-appt とすれば、
随時agendaファイルからアラームを登録できるし、
上記のようにhookを登録しておけば、ファイル保存時にアラームを登録してくれる。

Emacs ediffでファイルの一部分を相互比較

ファイル全部じゃなくて選択した部分だけ比較したいって時に、
Emacsに標準でついてるediffが便利なのに気づいた。
用途としては、あるクラスの、あるメソッドだけを相互に比較したいとか。
その名も
  • ediff-regions-wordwise
  • ediff-regions-linewise
ediff-regions-wordwiseはword単位、
ediff-regions-linewiseは行単位で比較結果を表示してくれる。

使い方は簡単。
まず M-x ediff-regions-wordwise とした後、比較対象のバッファを2つ指定する。
(事前に比較するファイルを開いておく必要あり)
その後、それぞれのバッファが開くので、コピーするときと同じ要領で C-SPACE と M-w で比較対象となる部分を選択。
選択後は C-M-c を押す。

欲しかったけど意外となかった機能じゃないかな。
地味な機能かもしれないけど、これでorg-mode以外にEmacsから離れられない理由ができてしまった。