EnigmoDay 13

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


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

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

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


org-modeとは何か?

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

アウトライナーは有名なところでいうとMacアプリではOmnioutliner

webアプリでもworkflowyなどがあります。

workflowy.png

workflowlyについてはこちらの紹介記事がわかりやすいです(丸投げ)

http://goryugo.com/20180412/dynalist-workflowy/

課題やタスクのブレークダウンなど考えをまとめたりするのに

org-modeではこのようなツリー構造をプレーンテキストで書いておけば

鞍上いい感じに表示してくれます。

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

また、スケジュール機能やTODOやタグやクロック機能もあるのでこれだけで

見積もりや振り返りがプレーンテキストで完結します。


org-modeのここがいい

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


テーブル表記の入力が楽

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

table.gif

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


画像や数式が差し込める

プレーンテキストでありながら画像も入れれるので、gitなどで履歴管理しつつ最低限わかりやすい

ビジュアルをキープできるので、プログラマのメモとしてはいいバランスだと思います。

emacs.png

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

math.png


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

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

image.png

※ob-ipythonというjupyterに繋ぐ拡張が必要ですが

ob-ipython

org-babel integration with Jupyter for evaluation of (Python by default) code blocks


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

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

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

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

名称未設定2.png

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


クロック機能が便利

各ノードにTODOステータスやスケジュールを設定するだけでなく、実際に作業をする時にクロックインすると

時間を記録してくれます。また、任意の期間でレポートを作成できます。

clock.png


活用法

何も考えずに単体のorgファイルをそのまま使っててもいいのですが、自分の場合は下記のように

Dropbox配下のディレクトリを分けてメモと予定/振り返りを管理しています。

structure.png

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

link.png

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

org-mode tutorials


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

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

また、テキストなのですべてgitで管理できるので、週次ごとにプルリクエストを作るようにすると

diffを見れば振り返るのが一目瞭然です。

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


参考