Ink

Contents related to tech, hobby, etc

org roam使い始めた

|

org roam使い始めた

この記事は、Org-roamのinfoページを読んで内容を纏めています。 詳しくは原文をあたってください。

Org-roamとは

Org-roamは、 Roam Resarch からいくつかのアイデアを実装したものです。

Org modeで、階層構造でないノートを取るのをサポートします。 wikiのように書く事ができます。

Slip-box (Zettelkasten) メゾッドとは

(infoにあったものを軽く纏め、翻訳は雑なので原文を読むのを推奨)

ドイツの社会学者 Niklas Luhmann によって作成されました。 Luhmannの Slip-boxは、小さいカードの入った箱でした。 一つのコンセプトを書くので一杯になるくらいの小さいカードです。

サイズの制限が、大きなアイデアを小さいコンセプトへ分割するのに役立ちます。 小さいコンセプトが、元のアイデアに少しだけ関連する別のアイデアを探すのに 役立ち、思考の幅を広げてくれます。

Luhmann はカードの関連付けのために順序付きのIDを用いましたが、 Org-roamではハイパーリンクを使っています。

Fleeting notes/permanent notes

slip-boxでは、素早くアイデアをメモするための仕組みが必要です。 それが Fleeting notes と呼ばれているものです。

Org-roamでは、org-Capture若しくは Org-roamの日記機能を使うことで実現します。

それと対照的なのが Permanent notes です。 これは名前の通り長く取っておくためのノートで、 literature notesと concept notesに分類されます。

literature notes

本やウェブサイト、論文等への簡素な注釈付きのメモで、 後に参照するために取っておくものです。

concept notes

コンセプトを書くためのもので、自己説明的であり詳細にかかれている必要 があります。

何故org-roamを(私は)取り入れたか

私は(今は併用していますが)元々完全なるvimmerで、 メモ等には vimwikiqfix-howm を使っていました。

Org-modeに惹かれてEmacsに来たのですが、 デフォルトのOrg modeでは wiki形式のファイル管理ができません。

vimwikiqfix-howm と同じようにwiki形式でメモが取りたかったので 探した所、

  • Howm (本家)

  • Org-roam

の二つが目につきました。 正直どちらにするかとても悩んでいたのですが、とりあえず Howm系は触った ことがあったので新しい Org-roamを試してみることにしました。

インストール

私は Emacs-jpの Emacs-in-2020 を参考にしてEmacsの環境を作ったので、 インストールには conao3/leaf.el を使います。

1. leaf-convert-insert-templateでテンプレ挿入

leaf-convert も入れているので、 M-x leaf-convert-insert-templace を 用いてテンプレートを作成します。

(leaf org-roam
  :doc "Roam Research replica with Org-mode"
  :req "emacs-26.1" "dash-2.13" "f-0.17.2" "s-1.12.0" "org-9.3" "emacsql-3.0.0" "emacsql-sqlite3-1.0.2"
  :tag "convenience" "roam" "org-mode" "emacs>=26.1"
  :added "2021-05-18"
  :url "https://github.com/org-roam/org-roam"
  :emacs>= 26.1
  :ensure t
  :custom
  (org-roam-directory . (file-truename "~/Dropbox/roam")))

2. org-roam-directoryを設定する

まず org-roam-directory でファイルを保存する場所を決めます。

Org-roamでは、全てのファイルを一つのディレクトリに保存することを推奨して はいますが、いくつかのディレクトリに分けて保存しても問題はないです。 org-roam-directory 内のディレクトリは再帰的に検索されます。

(ファイルの階層構造で関係性を作るのではなく、リンクによって関係性を作る ことが推奨されています。)

3. org-roam-modeをセットする

org-roam-mode マイナーモードを起動します。 これにより、キャッシュの作成などのいくつかのhookを設定します。

スタートアップ時( after-init-hook )に起動することが推奨されています

(add-hook 'after-init-hook 'org-roam-mode)

が、leaf.el使っているので

     (leaf org-roam
:doc "Roam Research replica with Org-mode"
:req "emacs-26.1" "dash-2.13" "f-0.17.2" "s-1.12.0" "org-9.3" "emacsql-3.0.0" "emacsql-sqlite3-1.0.2"
:tag "convenience" "roam" "org-mode" "emacs>=26.1"
:added "2021-05-18"
:url "https://github.com/org-roam/org-roam"
:emacs>= 26.1
:ensure t
:custom
(org-roam-directory . (file-truename "~/Dropbox/roam"))
    +  :hook (after-init-hook . org-roam-mode)
)

こうします。(参考: leaf.el#hook-keyword) ---

何故かよくわからないんですが、Emacsプロセスを切ってもうまく Melpaへの問合せをしてくれないんですよね...なんでなん...

使い方

ノートの検索・作成: org-roam-find-file

org-roam-find-file はroamのファイルを検索するコマンドですが、 存在しないタイトルを入力するとそのファイルを作成します。

ノートを作成する際には org-captureのテンプレートが使用されます

ここでファイルを作成した後、2秒間何もしないとキャッシュをアップデート します。これはカスタマイズ可能です。

リンクを作成する: org-roam-insert

org-roam-insert を実行すると、既存のノートのタイトルの一覧が表示 されます。そこからタイトルを選ぶと、そのファイルへのリンクが現在編集中の ファイルへと挿入されます。

現在存在しないタイトルを指定した場合、そのタイトルで新しいファイルが作成 されます。

バックリンクを表示する: org-roam

org-roam を実行すると、バックリンクを表示するバッファの表示・非表示を 切り換えることができます。

Org-roam特有の記法等

まだまだ色々あるけど最初の方だけ

タイトルの作成

ノートのタイトルは、 org-roamで検索する対象になります。 一つのファイルに対して複数のタイトルを付けることができ、 これは例えば略称等があるときに便利ですね。

タイトルの指定には幾つかの方法があり org-roam-title-sources で 変更することができます。

タイトル対象
'title#+title プロパティの値
'headline一番最初のヘッドライン
'alias#+roam_alias プロパティの値。スペース区切りで、ダブルクォートで括れば複数単語使えます。

タイトルがなかった場合にはファイル名を使用します。

タグの作成(#+roam_tags)

デフォルトでは #+roam_tags プロパティの値を使用します。

リファレンス(File Refs)

#+roam_key を使用することで、特定のリンク等にノートを関連付けることができます。 例えば私のブログへのノートを書くとすると、

#+title: My blog articles
#+roam_key: https://cj-bc.github.io/blog

のようになります。

この状態で https://cj-bc.github.io/blog が別の場所に書かれると、 それもこのノートへのバックリンクとして表示されるようになります。

カスタマイズ

キャッシュのアップデート間隔の調整

org-roam-db-update-idle-seconds を調節すると、何秒後にアップデート されるかを調節することができます。 又、 org-roam-db-update-method'immediate にするとバッファが 保存された直後にアップデートするようになります。

ファイルを作成した後、 C-c C-c で元のバッファに戻る

org-captureのシステムを使っているものの、org-roamでは C-c C-c した後はその作成したファイルのバッファを開くようになっています。

これが気に入らない場合、 org-roam-find-file の代わりに org-roam-capture を使うことができます。