目次
他の人がどういう風にorg-modeを使っているのかorg-modeを使い初めたときは気になりました。なにせ機能が多いので、ひとまず誰かの使い方を真似てみようと思い、org-modeによるGTDの実践方法などを読みました。海外の方が書かれたものの翻訳が以前あったのですが、探してみたところ、残念ながら見つけられませんでした。
今回はこれからorg-modeを始める人の為に私のやっている方法を紹介してみようと思います。ただし、全体を俯瞰できるよう、細かな説明は省いています。詳しくはマニュアルなどを参照して下さい。
init.el
ここで説明する内容に関係する設定は以下のようになります。
;; org-modeの設定
; カレンダーの日付を英語表記にする
(setq system-time-locale "C")
; アジェンダ
(define-key global-map "\C-ca" 'org-agenda)
(setq org-agenda-files
'("~/notes.org" "~/calendar.org" ))
; refile( C-c C-w )
(setq org-refile-targets
'( ("~/notes.org" :level . 2 )
("~/calendar.org" :level . 2 )))
;; 下で設定した状態は、
;; C-S-<right>/<left> or C-u C-u C-c C-t でキーワードグループ変更
;; S-<right>/<left> で全てのキーワードを順送り
(setq org-todo-keywords
'( (sequence "TODO" "NEXT" "REPEAT" "REMEMBER" "|" "DONE")
(sequence "WAITING" "|" "CANCELED" "DEFFERED")))
ファイルの種類
ファイルの種類は以下のようなものになります。
- notes.org 基本的にこれになんでも書き込みます
- calendar.org カレンダー上に表示させるアイテムを登録する
(setq org-agenda-files
‘(“~/notes.org” “~/calendar.org”))
とすれば、アジェンダモードで表示できます。
「タスク」から「予定」を分離してカレンダー表示,Org-mode仕立てで – Qiita
でも説明されていますが、カレンダーを分けておくと他のカレンダーアプリに使えます。
org-fileのなかの構成
notes.orgの中は以下のような感じです。
* Inbox
#+CATEGORY: Inbox
** TODO あれ更新
DEADLINE: <2018-05-25 Fri -3d>
added: [2018-05-16 Wed 14:52]
* [PJ]HOGE プロジェクト
#+CATEGORY: [PJ]HOGEプロジェクト
** TODO ミーティング
CLOCK: [2018-05-23 Wed 14:00]--[2018-05-23 Wed 15:00] => 1:00
<2018-05-21 Mon>
* [PJ]FUGA プロジェクト
#+CATEGORY: [PJ]FUGAプロジェクト
** TODO 連絡する
<2018-05-21 Mon>
カテゴリーを使ってアジェンダモード(週毎、月毎、アイテム検索のモード)でアイテム(TODOやメモ)が何のプロジェクトに属しているかを見えるようにしています。タグでも良いと思います。タグも上位のタグは継承されるはずです。
アイテムの登録について
アイテムの登録についてはremember-modeを使ったり、アウトラインに直接書き込んだりしています。
ひとまず、Inboxに登録してorg-refile-targets を設定した上でorg-refile(C-c C-w)しても良いと思います(init.elに設定例あります)。
ステータスの登録
アジェンダモードでは t 、編集モードでは C-c C-tとするとアイテムのステータスがTODO、DONEと変わります。シフトキーと左右キーでも変わります。これを増やすには、org-todo-keywordsを設定します。ファイル単位で異なる複数のキーワードを設定することもできます。
日時の登録
org-modeでは、日時に予定や締め切り、ただの日付など、異なる意味を持たせることができます。C-c C-s でスケジュール日付を挿入します。挿入した日付はアジェンダモードで表示されます。
(※ 画像キャプチャはC-c . でアイテムの日付を入力したときのものです。まだ C-c C-s を知らなかったのか何か理由があったのかわ覚えていませんが、C-c C-sでスケジュールとして入力したほうが良いでしょう)
また、締め切りがあるものは C-c C-d で入力します。これに 「-3d 」と付け加えると、3日前から当日のアジェンダに表示されるようになります。
DEADLINE: <2018-05-16 Wed -3d>
すぐに着手しないものについては、以下のように C-c ! で登録日を記録するようにしています。また、remember-modeを使うと自動で挿入されます。
added:
また、「繰り返しタスク」というものも設定できます。以下のように +1d を付け加えると、DONE状態ににならずに、日付が翌日に更新されます。また、DONE時の履歴は見出しの下に記録されます。一ヶ月後であれば +1m です。これは登録されている日付からの期間を指定することになり、DONE時を起点としたい場合には .+1m というふうにドットをつけます。ほかに ++1w という書き方もあります。+1wだと設定日からそれが過去であっても単純に1週間後に日付が変わりますが、++1wだと未来の同じ曜日に日付が変更されます。
<2018-05-16 Wed +1d>
忘れないようにする工夫
先程説明したようにデッドラインを使って数日前から表示されるようにしたり、日付を以下のように範囲指定することで目立たせたりもします。
−−<
全体の流れ
まず週の最初に確認して取捨選択
週の始めに先週の分の日付がついているTODOアイテム(日付がついていて終わっていないもの)をアジェンダモードで S-<left>/<right> (シフトキーと矢印キー)を使って月曜に移動します。さほど急ぎではないアイテムは来週など、先の日付に変更します。これも S-<right> で。さきほどの画像を再度貼っておきます。
GTDの週一レビューのような感じですかね。先送りできるようなものは、さらに日付をとればGTDでいうところのSomeday扱いということになります。
以前は毎日アイテムの日付を変更していましたが、今は火曜日以降はとくに変更しません。
calendar.orgのほうに登録しているアイテムについては、C-c C-e i で ics形式にしたも のをLAN内のウェブサーバーに転送してMacのカレンダーで表示させています。FTPを使って 転送するシェルスクリプトを使っています。
また、これを書いているときに初めて気が付きましたが、着手(予定)日から作業 が終るまで表示させたいアイテムはC-c C-s (スケジュール)えば良いようです。毎週、アイテムの日付を変更するより楽ですね。
作業時間の計測
アジェンダモードでアイテムの所にカーソルを持ってきて I とすると計測が始まります。計測を終えるには O です。org-modeの編集バッファでは、C-c C-x C-i と C-c C-x C-o になります。
時間の調整はシフトキーを押しながら変更したい単位のところで、上下キーを使って行い すます。
アジェンダモードで l (エル)キーを押すと以下のように当日の詳細が確認できます。今の時間や、計測した時間、あるいは計測中の時間が表示されます。また、以下ではデッドラインから3日過ぎているアイテムが -3d と表示されています。
集計
org-clock-reportを使って、作業時間が集計できます。これについては以前紹介しました。 といっても詳しくは書いていないので、マニュアルなどを参照して下さい。
デッドライン入力のショートカットキーが間違っていたので修正。またタイムラインを表示したアジェンダモードの画像を追加