【emacs】org-roam を使ってみた

org-roam を使ってみた タイトル

モーレツ! Org mode 教室 その9: org-roam でアイデアをひねり出す – mhatta’s mumbo jumboという記事を読んで、やってみたくなった。

org-roam とは

上記リンク先の記事で詳しく解説されている。
 知的生産の技術として、B6 くらいのカードに情報やらアイディアやら書きこんで溜めこみ、関連づけ、系統立て、構成していく、みたいなのがある。org-roam は emacs でそれを実現する、org-mode の新しいモードだ。リリースされたのは 2020 年、まだ最近である。
 新規カードを作成すると独自の ID を自動で振ったカードが作られる。カードとカードをリンクで繋ぐことも出来る。
 Graphviz というプログラムをインストールすると、カードとカードの関係を svg 画像で表示できるようになる。様々な使い方が出来そうだ。

なお、org-roam を利用するには SQLite が必要となる。

準備する

Graphviz と SQLite は Homebrew でインストールできる。

brew install sqlite
brew install graphviz

org-roam 本体は package.el で、Melpa からダウンロード、インストールできる。
 関連するパッケージも一緒に入れてくれる。

M-x package-install RET org-roam RET

2021 年 7 月現在、org-roam のバージョンは 2.0 となっている。

init.el

init.el の記述は以下のようにした。
 下記の記事を参考にさせていただきました。

&#x1f517 Org-roam事始め – Qiita

;; org-roam
(setq org-roam-v2-ack t)
(setq org-roam-db-location "~/.emacs.d/org-roam.db")
(setq org-roam-directory "~/pCloud Drive/org/org-roam/")
(setq org-roam-graph-executable "/opt/homebrew/bin/dot")
(global-set-key (kbd "C-c n l") 'org-roam-buffer-toggle)
(global-set-key (kbd "C-c n f") 'org-roam-node-find)
(global-set-key (kbd "C-c n g") 'org-roam-graph)
(global-set-key (kbd "C-c n i") 'org-roam-node-insert)
(require 'org-roam)
(org-roam-setup)

バージョンが上がって変数名が少し変わったらしい。
 org-roam-db-location はデータベースの保存場所を指定するものだ。
 org-roam-directory でファイルを保存するフォルダを指定する。このフォルダは手動で作成した。
 最後の 2 行、(require 'org-roam)(org-roam-setup) をつけることで、作成したカードをデータベースに同期してくれるようになる(わからないけど、多分)。
 手動での同期は、M-x org-roam-db-sync となっている。

org-roam-graph-executable はグラフの描画に必要な設定だ。dot というプログラムが必要らしく、プログラムの場所を指定している。場所は、ターミナルでwhich dotを実行すると出てくる。
 dot は Graphviz で使う言語のようだ。

使ってみる

新規カードはorg-roam-node-findで作成する。
 キー操作は init.el に記述したように、C-c n f だ。
 ミニバッファに「node:」というのが出てくるので、そこにタイトルを入力する。ここでは「魚人伝説」という、魚人情報を集めたインデックスとなるカードを作ってみる。

ミニバッファ

タイトルを入力して、ばすっとエンターを押すと、

org-roam カードが生成される

こんなふうに新規カードがあらわれる。
 ここでは、この「魚人伝説」を基点にして、情報をまとめていく。
 リンクを張るキー操作は C-c n i だ。ミニバッファに「node:」が出てくるので、ここにリンクしたいカードのタイトルを入力する。
 カードがすでに存在していれば、タイトルをタブキーで補完できる。
 カードがない場合は入力したタイトルで新しくカードが作成される。

org-roam でリンクを張る

org-mode でリンクを開くには、リンクをクリックするか、リンクにエディタのカーソルをあわせて、C-c C-o を押す。

画像も掲載できる

[[path/to/image.png]] という org-mode の書式で画像の掲載もできる。

バックリンク、グラフ

C-c n l で被リンクを表示できる。
 

バックリンクの様子

C-c n g でグラフを表示できる。
 はずなのだが、うまくいかない。やり方によっては emacs 内で表示できるのかもしれない。Safari などのブラウザで表示させようとしたのだが、今のところ筆者の環境ではうまくいっていない。
 どうであれ、実行すると以下のような xml が生成される。

xml が表示されてしまう

C-x C-w で書き出しできるので、デスクトップなどに「graph.svg」などと名付けて別名保存する。
 svg ファイルにしてしまえば、QuickLook でも閲覧できるようになる。

グラフの様子

筆者のようにインデックス・カードを決めて、そこを基点にタコ足みたいにリンクを伸ばすやり方だとあまり意味はない。が、ちゃんとカードを作りこめば意外な接点が図示されることになり、良いのではないかと思う。

いいと思った

まだ使いはじめて間もないけれど、これ、いいと思った。
 こういう感じのアプリは Mac にもけっこうあるけど、使いこなした試しがない。
 しかし、org-roam は使っていきたいと思わせるものがある。emacs と org-mode には引きこまれる魅力があり、ついつい使いたくなる。
「Build a second brain」
 という文句が Youtube の解説動画のサムネにあるけど、作りこんでいけば確かに「第二の脳」みたいになるのかもしれない。
 カードを一枚一枚、ファイルとして生成してくれるのがいい。それをタイトルで呼び出せるのもいいと思う。