先月末のこと、ふと思い立ってorg-modeに手を出してみました。環境構築が面倒そうで手を出せていなかったのですが、いざ使い始めてみるとこれが非常に便利な代物だったので少しばかり紹介します。
1. org-modeとは何か
org-modeとは、Emacsの拡張機能の一つで、多機能(すぎて全貌がよくわからない)アウトラインプロセッサです。出来ることが多すぎて、私もorg-modeが何なのかまだ良く分かっていません。公式のドキュメントはこちらにあります。
org-modeでは、Org syntaxという固有の記法を用いてメモ・TODO管理・その他諸々を行うことが出来ます。実際のところ、orgファイル(.org)を用意して、そのファイルにOrg syntaxでバシバシと情報を書き込むだけです。Org syntaxは現在広く使われているMarkdownとよく似た記法となっているため、入門にあたって特に難しいことはないかと思われます。下表は記法の例です。
* | 見出し |
** | 子見出し |
*** | 孫見出し |
– | 項目 |
[/] | 親チェックリスト |
[] | チェックリスト |

このように、構造的な記述でメモ等を取ることが出来ます。ここでは説明しませんが、Org syntaxで記述した内容は、HTML・Markdown・LaTeX等の形式に変換することが出来ます。嬉しいですね。
また、org-modeにはタイムスタンプ機能が用意されており、時刻を記録することが可能です。

他にも、表作成機能などがあります。表作成機能はとても使い勝手がよく、カラムの幅を自動で調節してくれたりします。

表計算を行うことも出来るそうですが、私はまだそこまで使いこなせていません。
そして、現時点で私が一番お世話になっている機能がTODO管理機能です。
org-modeでは、TODO管理機能を含むタイムスタンプの集約機能(?)を“agenda”と呼びます。

TODOにはSCHEDULEDとDEADLINEの日時を設定することが出来ます(上の例ではSCHEDULEDのみ記述しています)。このように記述したTODOは、適切な設定を行った上で“M-x org-agenda a”等のコマンドを実行すると時系列順に一覧表示することが出来ます。

当日はイベントと共に2時間おきのガイドラインが表示され、当日以外はイベントのみが表示されます。
“Org Agenda”バッファの7行目に注目して欲しいのですが、ここにイベントとして、“test: 0:01…… huga [2/2]”が表示されています。これは先程のタイムスタンプの例で記述したものです。
このように、agendaにはタイムスタンプが反映されるので、何かしらの作業ログとしても利用することが出来ます(ただし、タイムスタンプは“<>”で括られたもののみが反映されます)。
また、calfw-org.elというパッケージを利用すると、agendaをカレンダー風に表示することも出来ます。

他にも様々な機能がありますが、一旦この程度にしておきます(キリがないので)。
とりあえず、org-modeがどのような機能を持っているかは以上の説明で十分かと思います。これを上手く活用すればかなり便利そうですよね。
やっていきましょう。
2. 設定・使用例
今日は疲れたのでまた来週書きます…。