Emacs org-agenda他を運用して1年経ったのでまとめる

Table of Contents

  1. はじめに
  2. 設定内容 (init.el)
    1. agenda files 構成
    2. org-capture 構成
    3. その他
  3. 運用方法
    1. TODO items: タスクの登録
    2. org-agenda: アジェンダの表示
    3. org-capture: リマインドの登録
    4. org-clock: 工数計測
    5. org-clocktable: 工数表示
  4. 1年間運用した感想

はじめに

org-agenda や org-capture, org-clock などの自分なりの運用をまとめます。

org-agenda … (簡単に言うと) ファイル毎に散らばったTODOタスクを集約して、
管理してくれるorg-mode のタスク管理機能

org-capture … (簡単に言うと) org-mode のメモ取り機能。さっとメモを書ける。

org-clock … org-mode の計時機能


参考サイト

設定内容 (init.el)

agenda files 構成

↓ init.el (抜粋)

;; アジェンダ表示の対象ファイル
(setq org-agenda-files '(
             "c:/Users/AAA/org/aaa.org"
             "c:/Users/AAA/org/anken"
             "c:/Users/AAA/org/remind.org"
                         ))

org ディレクトリ構成は下記の通り

org/
 │  aaa.org
 │  remind.org
 │  knowledge.org
 │
 ├─anken
 │     AAA.org
 │     BBB.org
 │     CCC.org
 │     :
 │
 └─tech
       powershell.org
       lpic.org
       ccna.org
       :
ファイル名 用途
aaa.org 社内業務関係をここに書く。 **アジェンダ対象**
remind.org さっとメモを取る ( **org-capture** する)とき用。 **アジェンダ対象**
knowledge.org ちょっとした知見をメモする ( **org-capture** する)とき用。
anken フォルダ 案件ごとにorgファイルを管理。 **アジェンダ対象**
tech フォルダ 技術情報用。

org-capture 構成

↓ init.el (抜粋)

(setq org-capture-templates
      '(("t" "Todo" entry (file+headline "c:/Users/AAA/org/remind.org" "■Capture")
     "* REMIND %? (wrote on %U)")
    ("k" "Knowledge" entry (file+headline "c:/Users/AAA/org/knowledge.org" "TOP")
     "* %?\n  # Wrote on %U")

remind.org には REMIND item が溜まっていく。

knowledge.org には (ちょっとした)知識 が溜まっていく。

その他

その他雑多な設定。読み飛ばしてOK。

;; ##### org-agenda
;; C-ca で org-agenda
(define-key global-map "\C-ca" 'org-agenda)

;; アジェンダ表示で下線を用いる
(add-hook 'org-agenda-mode-hook '(lambda () (hl-line-mode 1)))
(setq hl-line-face 'underline)

;; 標準の祝日を利用しない
(setq calendar-holidays nil)

;; TODO状態
(setq org-todo-keywords
      '((sequence "TODO(t)" "WAIT(w)" "REMIND(r)" "|" "DONE(d)" "SOMEDAY(s)")))

;; DONEの時刻を記録
(setq org-log-done 'time)

;; タグリスト
(setq org-tag-alist '(("meeting" . ?m) ("office" . ?o) ("document" . ?d) ("kitting" . ?k) ("study" . ?s) ("travel" . ?t) ))


;; ###### org-capture
;; C-cc で org-capture
(global-set-key "\C-cc" 'org-capture)


;; ##### org-clock
;; clockログを隠す
(setq org-clock-into-drawer t)

;; clocktable の体裁を整える
(defun my-org-clocktable-indent-string (level)
  (if (= level 1) ""
    (let ((str " "))
      (while (> level 2)
        (setq level (1- level)
              str (concat str "--")))
      (concat str "-> "))))

(advice-add 'org-clocktable-indent-string :override #'my-org-clocktable-indent-string)

運用方法

TODO items: タスクの登録

アジェンダ対象の org の、各見出し(タスク) にTODO ステータスを付ける。
(見出し内で C-c C-t でステータス登録)

筆者は下記ステータス を init.elで登録。

ステータス 説明
TODO 未完了タスク。そのままの意味
WAIT 未完了タスク。待ち状態
REMIND 未完了タスク。リマインド (org-capture 用)
DONE 完了タスク。そのままの意味
SOMEDAY 完了タスク。いつか手を付ける

また、見出し上で C-c C-c を実行することでタスクにタグを付けられる。

筆者は下記タグを init.el で登録。後述の工数表示でタグ毎に掛けた時間をまとめて報告書にした。

タグ 用途
meeting 会議
document 設計書などの資料作成
kitting 機器構築
study 学習、調査
travel 出張
office 事務作業

org-agenda: アジェンダの表示

出社して Emacs を起動後に、 C-c a n で Agenda 表示 (TODO リストと1週間の予定)。
アジェンダ対象ファイルからTODO キーワードのタスクを抽出してリストアップしてくれる。

Agenda上で主に使用するキーは下記の通り。

キー 説明
n,p 項目の上下移動
Enter 選択タスクへバッファ移動
t 選択タスクのTODO ステータス変更
I 選択タスクの計時開始
O 選択タスクの計時終了
C-c C-s 選択タスクの予定日登録
C-c C-d 選択タスクの締切日登録
q Agenda を閉じる

定期的に org-agenda を開いて TODO 状況を把握する。

org-capture: リマインドの登録

「ちょっとこれやっといて」的なことを言われたときに使う。
案件の本筋でない支援や、社内業務など細々した(忘れそうな)タスクを org-capture でメモしていく。

C-c c で org-capture 起動。下記画面が表示されるので "t" を選択。

タスク内容を書いて C-c C-c で登録完了。
org-agenda を開くと 登録されていることが確認できる。

org-clock: 工数計測

タスク消化に掛けた時間を計測する。

▼タスクの計測開始

  • Agenda 上でタスクを選択して I
  • or タスクの見出し内で C-c C-x C-i

LOGBOOK 内に計測開始時刻が記録される。

▼タスクの計測終了

  • Agenda 上で O
  • or 任意の orgバッファで C-c C-x C-o
  • or タスクの TODO ステータスを DONE にする

LOGBOOK 内に終了時刻、経過時間が記録される。

org-clocktable: 工数表示

任意の orgファイルに下記のような内容を書く。

#+BEGIN: clocktable :maxlevel 2 :scope agenda :tstart "2018-01-01" :tend "2018-01-31"
#+END:

記述した #+BEGIN: ... 上で C-c C-c を実行すると対象期間の計測結果が表示される。

↑は 2018年1月分の計測結果を表示している。

他にも下記のようなパラメータがある。組合せて所望の計測結果を表示させる。
(詳細: https://orgmode.org/manual/The-clock-table.html#The-clock-table )

パラメータ 説明
:block thisyear 今年の計測分
:block lastweek 先週の計測分
:tags "meeting" meeting タグが付いたタスクの計測分

1年間運用した感想

★やっぱり org-mode、org-agenda は最高

複数案件を同時にこなすには org-agenda が欠かせなくなりました。
これからも org-agenda にはお世話になると思います。


org-capture も便利

これを使う前は とっさのメモを、とりあえず scratch バッファに書いて ・・・
といった対応を取っていました。

org-capture を使うことで、無駄なくリマインド登録・知識メモができるようになりました。


org-clock は下のような報告書を作成するときには役に立ちましたが、
半年ほどしか続きませんでした。

業務報告のためだけではリターンが少なかったです。

もう少し有益な分析ができるようにタグを見直したほうが良いかもしれません。
(例えばプロジェクトのフェーズ毎にタグ分けする、など)


統計

案件フォルダの orgファイル数 28個
案件フォルダの orgファイルサイズ合計 393KB
DONE(完了) にしたタスク数 700個
SOMEDAY(いつかやる) にしたタスク数 43個
org-capture でREMIND を取った数 345個
org-clock で測った時間 26日と20時間59分