Org-modeを半年くらい使ってみた

# Org-modeを半年くらい使ってみた

Enigmo Advent Calendar 2018の12日目の記事です。

こんにちは、エンジニアの@t4kuです。半年ほどorg-modeを使ってメモや、日々のタスク管理を行ってきたのでやってみた感想を共有しようと思います。

## org-modeとは何か?

org-modeとはemacs上で動作するアウトライナーです。

アウトライナーは有名なところでいうとMacアプリでは[Omnioutliner](https://www.omnigroup.com/omnioutliner/) や
webアプリでも[workflowy](https://workflowy.com)などがあります。

![workflowy.png](https://qiita-image-store.s3.amazonaws.com/0/6076/08591fff-982e-ae1e-78ba-e9720ffb643b.png)


workflowlyについてはこちらの紹介記事がわかりやすいです(丸投げ)
http://goryugo.com/20180412/dynalist-workflowy/

課題やタスクのブレークダウンなど考えをまとめたりするのに
org-modeではこのようなツリー構造をプレーンテキストで書いておけば
鞍上いい感じに表示してくれます。

markdownでも同じようなことができますが、ノードを移動したりインデントを変えたりするのが面倒なのでそういう用途でmarkdownを使う人はいないと思います。

また、スケジュール機能やTODOやタグやクロック機能もあるのでこれだけで
見積もりや振り返りがプレーンテキストで完結します。

## org-modeのここがいい

自分が使っていて特によいと思った機能です。


### テーブル表記の入力が楽

勝手にフィールドの幅を調整してくれたりなかなか便利だなと思いました。

![table.gif](https://qiita-image-store.s3.amazonaws.com/0/6076/b37b7bb4-83dd-d548-c2e4-87d5a0937a27.gif)

体験すると、qiitaのmarkdownでtableを書くことが苦行というかほとんど罰ゲームに感じるようになってきました。


### 画像や数式が差し込める

プレーンテキストでありながら画像も入れれるので、gitなどで履歴管理しつつ最低限わかりやすい
ビジュアルをキープできるので、プログラマのメモとしてはいいバランスだと思います。

<img width="951" alt="emacs.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/28b94e47-26d9-f6bb-dc5d-61ce492ce2ab.png">


Latex記法で書いたものは数式が表示されます。

<img width="951" alt="math.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/5e9d71d8-821e-4133-72b3-fa689ba3a9c4.png">



### ソースコードが実行できる

org-babelという拡張があるのでソースコードブロックで書いたものを評価して、結果を表示できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/6076/1034e45d-e925-3129-5e0f-dbded0c221e2.png)

※ob-ipythonというjupyterに繋ぐ拡張が必要ですが
[ob-ipython](https://github.com/gregsexton/ob-ipython)
org-babel integration with Jupyter for evaluation of (Python by default) code blocks

### スケジュール機能(アジェンダ)

ノードにスケジュールを設定しておくと、アジェンダコマンドを利用してその日にスケジュールされたタスク一覧(アジェンダビュー)を表示することができます。

<img src='https://media.giphy.com/media/dSemdOjA2xA6k9c06A/giphy.gif'/>

※実際のファイルが出せないのでテキトーなタスクなのでわかりにくくてすいません

アジェンダビューはスケジュール日別に出したり、deadlineごとに出したり、タグごとに出したりいろいろカスタマイズできますが、自分の場合は、オペレーション系のタスクとプロジェクトごとのタスクごとに一覧化するようにして、一日毎の作業を管理する別のorgファイルにコピーします。

<img width="332" alt="名称未設定2.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/342cc888-83d0-4929-f4fd-d7b6af62a71c.png">

一日のタスクを直列に並べると、あんまり余計なことを考えずにただこなしていけるような気がします。

### クロック機能が便利

各ノードにTODOステータスやスケジュールを設定するだけでなく、実際に作業をする時にクロックインすると
時間を記録してくれます。また、任意の期間でレポートを作成できます。

<img width="487" alt="clock.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/90a0efcf-7b9a-91e7-cbac-a67d66806364.png">


## 活用法

何も考えずに単体のorgファイルをそのまま使っててもいいのですが、自分の場合は下記のように
Dropbox配下のディレクトリを分けてメモと予定/振り返りを管理しています。

<img width="615" alt="structure.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/0c05ca4b-ac06-835e-3c17-585789b26392.png">

orgファイル間は簡単にリンクを貼って辿れるので、アジェンダファイル(Agenda/work.org)内のトピックから必要なファイルにリンクを張っておけば、だいたい事足ります。

<img width="426" alt="link.png" src="https://qiita-image-store.s3.amazonaws.com/0/6076/4490bc17-7173-c295-553e-c926e853175d.png">

どのようにファイルをオーガナイズするかやどういう単位で分割するかということについては深遠なテーマで、半年くらい使った素人ではまだキャッチアップできない(というか一生できる気がしない)のですが、下記のyoutubeシリーズはすごく勉強になりました。

[org-mode tutorials](https://www.youtube.com/playlist?list=PLVtKhBrRV_ZkPnBtt_TD1Cs9PJlU0IIdE)

## 半年くらい使ってみた感想

何をどこに書くべきかが決まってきてキーバインドにも馴染んでくると、フローを壊さずに開発してるときもも打ち合わせしてるときも、アイデアをためておけるので、何かのインタラプションがあっても、安心して忘れられる他、ググる回数やブラウザで遷移する回数が減ったきがします。

また、テキストなのですべてgitで管理できるので、週次ごとにプルリクエストを作るようにすると
diffを見れば振り返るのが一目瞭然です。

あと副産物ですが、普段プログラミングをする際はvimを使っているのですが、org-modeのためだけにemacsを使うようになり少しemacsの良さがわかってきました。そして両方の宗教を理解することで、世界平和に少し貢献できるような気がしてきました。

## 参考

* [org-mode tutorials](https://www.youtube.com/playlist?list=PLVtKhBrRV_ZkPnBtt_TD1Cs9PJlU0IIdE)
* [How I use Emacs and Org-mode to implement GTD
](http://members.optusnet.com.au/~charles57/GTD/gtd_workflow.html)