cheat sheet for org-journal
Table of Contents
Last modified: 20250112T1411+0900
業務日誌、研究日誌は、org-journalで付けよう。(後半の「比較」も参照のこと)
いつでもどこでも、 C-c j
で日誌を起動してメモを取ることができる。
1. org-journal-mode
org-journalを起動して日誌を書いている状態で、以下のキーが有効。
C-c C-f |
次の日誌へ |
C-c C-b |
前の日誌へ |
C-c C-j |
現在のファイルに新しいエントリーを挿入 |
C-c C-s |
検索 |
2. calendar-mode
org-journalの強みは、 M-x calendar
で起動するemacsのcalendarと連携していること。calendarを起動してそのバッファに移動した状態で、以下のキーが有効。
j m |
カレンダーの中でカーソル位置の日誌をマークする |
j r |
カーソルがある日付の日誌を新しいバッファで開き、そこにカーソルを移動する |
j d |
上と同じだがカーソルは移動しない |
j n |
カーソルがある日付のファイル(なければ作成)に新しいエントリーを追加 |
j s w |
今週を検索 |
j s m |
今月を検索 |
j s y |
今年を検索 |
j s f |
すべての日誌を検索 |
j s F |
未来の日誌を検索 |
[ |
前の日誌へ |
] |
後の日誌へ |
3. 運用
3.1. 2024年1月
デフォルトでは、
(setq org-journal-time-format "%R") (setq org-journal-time-prefix "** ")
となっていて、
** 13:20 秘密会議
会議の内容
のように、新しいエントリーが、第2レベルのヘッダーとして、時刻と共に作成される。しかし、業務日誌や研究日誌は、その日の終わりや、一段落したときに、振り返ってまとめて付けるものだから、この時刻は不要。また、必ずしもヘッダーは必要ないので、この二つの変数は両方とも空にする。
(setq org-journal-time-format "") (setq org-journal-time-prefix "")
その上で、日誌ファイルを、日常生活の記録、業務記録、研究記録の三つの部分に分け、それぞれについて記録する。やり方は、まず、次のような内容のテキストファイルを用意して、 org-journal-dir
に置く。
** life ** work ** research
そして、このファイルを読み込む関数を次のように作成して、
(defun org-journal-date-format-func () "Custom function to journal date header" (insert-file-contents "./template_for_daily") )
ヘッダーが作られたときにこの関数が実行されるようにフックを設定する。
(add-hook 'org-journal-after-header-create-hook 'org-journal-date-format-func)
こうすると、毎日、最初にエントリーを作成したときに、 template_for_daily
が読み込まれた状態で、新しいファイルが作成される。(ただし、 org-journal-file-type
は 'daily
。)
そうすると毎日のファイルは以下のような形式で蓄積されていく。
* 202401 ** life - オムレツを焼く - 出勤。サミットで白身魚フライ海苔弁当を買う。 - Xに電話 ** work - 会議 - 書類提出 - 面談 ** research - あの本のどこそこ - あの論文を第2章まで
時間があれば、 M-x calendar
( [F2]にバインドしている)でカレンダーを起動して、 [
と ]
で日付を行ったり来たりしながら過去の日誌を見直す。calendar-modeを参照
3.2. 2024年6月下旬
業務日誌はcalendar / diaryにしたので、通常の日誌はデフォルトに戻す。ただし、新しいエントリーに時刻が付くのは煩わしいので、 C-c j
で日誌ファイルを開くごとに時刻を挿入し、その後は通常の -
によるリストにする。これは、転記先でhtmlに変換するため。
(setq org-journal-time-format "%R") (setq org-journal-time-prefix "** ") (defun org-journal-entry-format-func () "Custom function to journal entry" (insert "\n- ") ) (add-hook 'org-journal-after-entry-create-hook 'org-journal-entry-format-func)
毎日のファイルの見た目は以下のようになる。
* 20240621 ** 10:04 - 出汁巻き玉子。 - 雨が降っていて、ときおり土砂降りになる。 - 某講演会の報告書を提出。 ** 21:09 - ジムは中止。雨がしっかり降っているし、体調的にも、無理して行くことはないと感じる。 - standard-theme.elを試してみる。 - 夕食は豚肩ロースのタマネギとキノコ炒め。
4. 比較
org-journal以外にも、emacsには日誌をつけるための手段がいくつかある。以下にその比較と考察を行い、今後の方針を考えてみる。
4.1. calendarのdiary
emacs標準。手軽さ、柔軟性、安定感。シンプル極まりないのが長所であり短所でもある。
標準では、 /.emacs.d/diary
に記録されるが、変数 diary-file
にファイルを指定すると、そこに記録される。たとえば、
(setq diary-file "~/Dropbox/calendar/my_diary.txt")
などと指定することができる。
入力コマンドは、まず i
を叩いて、次に d
で日誌の入力画面になる。
i d | diary-insert-entry | その日の日誌を入力 |
i w | diary-insert-weekly-entry | 毎週繰り返す予定を入力 |
i m | diary-insert-monthly-entry | 毎月繰り返す予定を入力 |
i y | diary-insert-yearly-entry | 記念日の入力 |
また、calendarバッファで s
を叩けば、 diary-file
自体が開く。 また、 i d
を使う場合には、後述の org-agendaとの関係に注意する必要がある。
cf. 32.10.4 Commands to Add to the Diary
calendar / diaryでは、とくに、定期的な予定の入力が簡単。
5/11 太郎の誕生日 Thursday 16:00 木曜会
などと書ける。これをorg-modeで書くと、
* 太郎の誕生日 <2000-05-11 +1y> * 木曜会 <2024-05-02 Thursday 16:00 +1w>
などとなる。
4.1.1. org-modeとの併用
このようなcalendarのdiaryは、 org-agenda-include-diary
を t
にすることで、org-agenda viewで表示される。
(setq org-agenda-include-diary t)
ただし、org-agendaと併用する場合は、 org-agenda-diary-file
の値に注意すること。これに、以下のように具体的なorgファイル名を指定すると、calendarやorg-agenda viewで i
を叩いたときに org-agenda-diary-entry
が起動し、そのorgファイルに書き込まれる。
(setq org-agenda-diary-file "~/Dropbox/org/agenda24.org")
他方、以下のように、その値を diary-file
に指定すると、calendarとorg-agenda viewで diary-insert-entry
が起動して diary-file
に書き込まれる。(現在の運用)
(setq org-agenda-diary-file 'diary-file)
つまり、calendarから i d
で diary-file
に日誌を書き込みたければ、 org-agenda-diary-file
の値を後者のように設定する必要がある。前者の設定にしておいて、なおかつ、 diary-file
に書き込みたい場合には、calendarバッファから s
で diary-file
全体を表示させて、それを編集する。
4.2. org-capture
org-captureは柔軟なので、日誌用のテンプレートを作ることもできる。
(setq org-capture-templates '( ("j" "Journal" entry (file+datetree "~/Dropbox/org/journal.org") "* %?" :empty-lines 1) ) )
たとえば、このように設定すると、ターゲットのファイルの中に、以下のようなツリー状の構造でテキストが蓄積される。
* 2024 ** 2024-05 May *** 2024-05-11 Saturday **** 1st entry of diary bra bra bra **** 2nd entry of diary bro bro bro
4.3. denote
denoteでは、denote-journal-extrasを使って日誌が書ける。というよりも、 _journal
というキーワードを各ファイルに付加するだけで、denoteのシンプルなファイル管理システムの中に日誌も取り込んでしまう。calendarやorg-journalにはない独自の発想で、これはこれでアリなのかもしれない。
4.4. org-roam
emacsのノート整理分野で一世を風靡した(現在もおそらくトップ)org-roamだが、日誌を書くためのコマンドも用意されている。新しいエントリーは、org-captureを使って入力し、終了コマンドで、本体の日誌ファイルに追記される。この点、日誌ファイルそれ自体を編集するorg-journalやdenoteとは操作性が異なる。
作業のログを取ると言うよりは、その時々の随想のようなものを、特にタイトルやテーマを決めずに書きためていくのに向いている。
読み直すためには、denoteと同じように、特別なコマンドで前日とか次の日とかに移動しながら読むことになるが、ここはorg-journalのように、calendarと連携させて欲しいところ。
4.5. 比較のまとめ
シンプルで軽いcalendar/diary、本格的な日誌システムのorg-journalの二つのキャラが際立っている。それ以外の、org-capture、denote-journal-extras、org-roam-dailiesはコンセプトが似ていて、日誌を通常のorgメモに統合しようというもの。
簡易メモ | calendar / diary |
本格日誌システム | org-journal |
日誌は特殊なorgメモ | org-capture, denote-journal-extras, org-roam-dailies |
4.6. 考察と変遷の記録
- 予定の管理は一元化することが鉄則であり、分散させると忘れるリスクが高まる。その意味で、予定は日誌とは別に管理することが望ましい。org-journalは、予定管理としても使えるが、これは極力避ける方針にする。
- 予定は、これまで通り
agendaYY.org
というファイルにまとめる。YYの部分は、西暦下二桁。入力は、org-captureまたはcalendarから行う。 - 日誌は、上記三つの選択肢があるので、それぞれ使い分けたい。ちょうど、現在、「生活上の記録」「業務上の記録」「研究日誌」という三つの分類で日誌をつけているので、この三つに対応させられないか。
4.6.1. 2024年5月初旬の案
- calendar / diary
- 研究日誌。基本的に研究日誌はメタノートであって、ノートの実体は別のところにある。いつ何を読んだか、何を書いたか、などを記録するものなので、簡易的なメモで十分。
- org-journal
- 生活上の記録。こちらは定番なので変更なし。
- denote-journal-extras
- calendar/diaryで作成する研究日誌がメタノートならば、denoteやorg-roamは、ノート本体を書くためにある。denote-journal-extraを使って、あえてdenoteで日誌を付ける意味や場面は、まだ思い浮かばない。(後記: この点は2025年1月に変化した)
4.6.2. 2024年5月下旬、ほぼ1ヶ月使ってみた。
- calendar / diary は研究日誌として確かに優れている。
C-c a a
でorg-agenda view
を開いたときに、i
ですぐにメモできる。そして、その内容が、org-agenda view
の一番下に表示されるので、確認しやすく、記憶にも残りやすい。 diary-file
は、通常のdenoteファイルを一つ作り、それにmetanote
index
research
journal
diary
といったキーワードを付けて、そのファイル名を変数diary-file
に格納する。デフォルトは/.emacs.d/diary
だが、このように分離させると、denoteなどで扱いにくい。研究日誌をdenoteのファイルにしておけば、本体となるメモやノートとのハイパーリンクなどが自由に使える。
(setq diary-file "~/Dropbox/org/20240524T103226--research-journal__diary_index_journal_metanote_research.org")
4.6.3. 2024年8月
- org-roam-dailiesが意外といい感じではないかと思っている。テーマや主題を決めずに、随想のようなものを書き溜めるのに向いている。denote-journal-extrasも同じ。
4.6.4. 2025年1月
- このところ、denote-journal-extrasを使っていて、今後は、org-journalからこちらに移行しようと思っている。
- 使ってみてわかったのだが、むしろ日誌だけを別のシステムにする方が効率が悪い。いろいろとパッケージを使ってみたいというのなら別の話だが、日誌を含めて書いたものをすべて一つのシステムで管理するのは快適。
- denote-journal-extrasはcalendarとは連動していないが、dired-previewを使用することで、快適に日誌をブラウズできる。