Org-modeで、ライフログを録ろう

今回は、Org-modeが提供する数多の機能の中から、ライフログの録り方を紹介します。<br/>Org-modeのライフログは、「あ、これメモしておこう」とか、「あれ、このサイトのパスワードは何だったけ？」といったシーンで簡単に使用できるで、一度使いだすと手放せなくなります。

# Org-modeとは #

Emacsのメジャーモードの1つ。[Org-modeのホームページ](http://orgmode.org/ja/)では、以下のように紹介しています。

**「Org-mode は、ノートの保存、TODOリストの管理、プロジェクト計画のためのモードです。高速で効率的なプレーンテキストのシステムを使ってファイルを編集します。」**

# 準備 #

ここからは、Ubuntu 14.10のEmacsをベースに説明します。<br/>Emacsが動く環境であれば、Org-modeは、OSを問わず動作すると思います。

## Org-modeのインストール ##

Ubuntu 14.10のEmacsパッケージをインストールと、Org-modeはインストールは完了です。<br/>ただし、使用するには、Org-modeのActivationが必要です。

### 1. Org-modeのActivation ###

\$HOME/.emacsに、以下のlispを追加します。
	
	(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
	(global-set-key "\C-cl" 'org-store-link)
	(global-set-key "\C-cc" 'org-capture)
	(global-set-key "\C-ca" 'org-agenda)
	(global-set-key "\C-cb" 'org-iswitchb)
	(setq org-capture-templates
	      '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
		 "* TODO %?\n  %i\n  %a")
	        ("j" "Journal" entry (file+datetree "~/org/journal.org")
		 "* %?\nEntered on %U\n  %i\n  %a")))

### 2. \$HOME/.emacsファイルのリロード ###

上記の設定を有効にするために、\$HOME/.emacsの再読込みを行ないます。<br/>\$HOME/.emacsの再読込みには、以下のどちらかの操作を実行してくさい。

1. Emacsを再起動する。または、
2. Emacsで、load-file関数をコール(**M-x file-load**)して、\$HOME/.emacsの再読込みを行う。

### 3. journal.orgの準備 ###

ライフログの格納先となるjournal.orgファイルを用意します。

1. \$HOME/orgディレクトリの作成

	`$ mkdir $HOME/org`

2. ライフログで使用するタグの定義

	`$ emacs $HOME/org/journal.org`
	
	ライフログでのタグ入力時に補完機能が動作するよう、journal.orgの先頭には、今回の例で使用する@home、@workの2つのタグを定義します。
		
		#+TAGS: @home @work

	![setTags.png](https://qiita-image-store.s3.amazonaws.com/0/59920/6b8b9438-16a7-e86e-79e0-39821bb3b838.png)

3. 検索の設定

	録り貯めたログを、簡単に検索できるといいですよね。そこで、OrgのAgendaの検索対象となるように、journal.orgをカレントバッファにした状態で、**C-[**キーを押下します[^1]。

# ライフログの入力 #

それでは早速、ライフログを入力してみましょう。

もし、誤ったキー操作でライフログの記事が折り畳まれたら、**Shift+Tab**キーを複数回、押下してみてください。記事が元通りに展開された状態に戻ります。

## 1. Org-modeへの遷移 ##

Org-modeのCaptureをコールし、Journalのテンプレートを選択します。

1. Org-modeのCaptureをコール

	Org-modeのCaptureは、**C-c c**キーを押下することで、Emacsのどのバッファからでもコールすることができます。

	![selectTemplate.png](https://qiita-image-store.s3.amazonaws.com/0/59920/1ada57dc-e2c2-0a04-f451-0b2e4624122b.png)

2. Captureのテンプレートを選択

	ミニバッファに**Template key:**と表示されるので、**j**キーを押下して、journalを選択します(指定可能なCaptureのテンプレートは、**Org Selects**バッファに表示されます)。

	![startCapture.png](https://qiita-image-store.s3.amazonaws.com/0/59920/11387150-e3b5-3b8d-822d-71aae547128c.png)

ライフログの入力を取り止めたい時には、**C-c C-k**キーを押下してください。そうすると、元のバッファに戻ります。

## 2. ライフログを入力 ##

1. タイトルの入力

	4つの\*(Org-modeでの第4階層のヘッドライン[^2]を意味する)の後に空白を1つ置いて、ライフログのタイトルを入力します。

	![insertTitle.png](https://qiita-image-store.s3.amazonaws.com/0/59920/9f43d5ca-c985-fd5a-112d-b549b3207961.png)

2. タグの入力

	次にタグを入力します。
	ヘッドラインにカーソルを置いたたま、**C-c C-q**キーを押下します。すると、ミニバッファに**Tags:**と表示されます。タグの入力は、**Tab**キー押下による補完機能を使用することができます[^3]。なお、タグを複数指定する場合は、それぞれを**:**で区切ります。

	![setArticleTag.png](https://qiita-image-store.s3.amazonaws.com/0/59920/ba199d18-6953-b59d-79e0-3cac4a22342e.png)

3. 記事の入力

	そして、記事を作成します。記事の作成が終了したら、**C-c C-c**キーを押下して、ライフログの記録を終了します。

	![writeArticle.png](https://qiita-image-store.s3.amazonaws.com/0/59920/8e7ab6a5-866c-b5e6-6f5c-c7b0594dbe1f.png)

# ライフログの検索 #

複数のライフログの入力が終了したら、検索機能を使ってみましょう。
検索するには、Org-modeのAgendaをコールします。そして、検索キーを指定して、該当ライフログのリストを表示させます。

1. Org-modeのAgendaをコール

	Org-modeのAgendaは、**C-c a m**キーを押下することで、Org-modeのCaptureと同じように、Emacsのどのバッファからでもコールすることができます。

	![selectSearchPattern.png](https://qiita-image-store.s3.amazonaws.com/0/59920/e7b34f3a-1ade-03e4-f127-526a3c880a58.png)

2. 検索キーの指定

	ミニバッファに**Match:**と表示されるので、検索したいタグを入力します。検索時のタグの入力にも、**Tab**キー押下による補完機能を使用することできます。<br/>検索キーを決めて、リターンキーを押下すると、**Org Agenda**バッファに該当するライフログの一覧が表示されます。

	![seachTag.png](https://qiita-image-store.s3.amazonaws.com/0/59920/f4c6b4a0-4db4-3952-e87c-0aff13d59c95.png)

3. ライフログの選択

	**Org Agenda**バッファに該当するライフログの一覧から、表示させたいライフログにカーソルを移動させて、リターンキーを押下します。

	![listLifeLog.png](https://qiita-image-store.s3.amazonaws.com/0/59920/ba29d986-54b0-43f9-59ac-911eb00f2f0d.png)

4. ライフログの参照

	ライフログの参照先に移動しますが、記事は折り畳まれた状態のままです。記事の詳細を見たい時には、**Tab**キーを押下してください。

	![lookArticle.png](https://qiita-image-store.s3.amazonaws.com/0/59920/9eeb1857-5b82-4197-eefe-dc619214a215.png)

- - -
[^1]: 実際には、\$HOME/.emacsに、org-agenda-filesの設定が自動的に挿入されます。

[^2]: Journalのテンプレートは、narrowモードで表示されています。ライフログを記録した後、実際の記録ファイルをfind-fileで開くと、第1階層以降のヘッドラインの存在を確認することができます。<br/>- 第1階層 → 年<br/>- 第2階層 → 月<br/>- 第3階層 → 日<br/>- 第4階層 → 個々のライフログ

[^3]: タグには、#+TAGSで指定する以外にも、ミニバッファで新規のタグを指定することができます。