Emacs org-roam を使って Zettelkasten (ノート術)に入門する

2024.01.18

私は普段から Emacs org-mode を愛用しています。 案件対応やブログ執筆、タスク管理など だいたいのことを org-mode で実施しています。

そんな org-modeを拡張するパッケージとして org-roam があることを知りました。 非構造的にノートを管理する「 Zettelkasten メソッド」を実践できるツールとのこと。

気になったので、今回 Zettelkasten および org-roam に入門してみました。 入門して得られたことや思ったことを書いていきます。

前提条件

目次、対象読者について

目次は以下のとおりです。

  1. Zettelkasten(ツェッテルカステン)について
  2. org-roam とは
  3. org-roam の導入
  4. 今後運用を固めていきたいトピック

1つ目の章では Emacs 関係なく、 Zettelkastenについて簡単に紹介します。

それ以降は Emacs org-roam についての話です。ここからは、ある程度 Emacs および org-mode を使われている方を 読者として想定しています。

実施環境、バージョン

入門した際の環境やバージョンは以下のとおりです。

  • MacBook Pro (Apple M1 Max)
  • macOS Sonoma 14.2.1
  • GNU Emacs 28.1
  • Org-mode 9.5.2
  • Org-roam 2.2.2

Zettelkasten(ツェッテルカステン)について

Zettelkastenとは

Zettelkasten(ツェッテルカステン) は ノート術 です。 ドイツの社会学者であるニクラス・ルーマンが実践していました。

Zettelkastenのオリジナルは、 紙(zettel)とペン、そして紙を収納する箱(kasten)で構成されています。 今ではデジタルの恩恵を享受して、 ITツール(本記事ではorg-roam)を活用した Zettelkasten実践ができるようになっています。

以降で簡単に Zettelkasten の概念、構成要素を説明します。

Zettelkastenの概念、構成要素

Zettelkasten の概念、構成要素について 簡単なサンプルを交えながら要点のみ紹介します。

※ 私が調べて理解できた範囲での Zettelkasten 紹介(サンプル)です。 本来のZettelkastenと思想が違う可能性がある点に注意ください。

📒 Permanent notes (永久ノート)

Zettelkastenで最も重要なノートが Permanent note (永久ノート) です。

Permanent note に情報やノウハウを書いていきます。 Permanent note 1つで、内容が完結するように意識します。

img

🔗 Permanent notes 同士のリンク

Permanent note から 他の Permanent note と リンク させ、関係性を持たせます。 どのようなコンテキストでリンクを作ったのかを記載することを意識します。

img

構造化することを "意識せず" に、 Permanent note およびリンクを生み出していきます。

img

📒 Permanent notes を生み出すための notes

Zettelkasten では Permanent note を生み出すための、 日常的なメモ環境を運用します。

日常的なメモ環境として、以下 2種類のノートがあります。

  • Fleeting notes(一時ノート): 思いついたことを とりあえずメモしておくための一時的なノート
  • Literature notes(文献ノート): 文献(書籍, ウェブサイト等)に関する情報をメモするためのノート

img

📒 Permanent notes をまとめた notes

Permanent notes を体系的にまとめたり、 すぐにアクセスできるような索引を作成したりします。

具体的には以下 2種類のノートです。

  • Structure notes: 特定のカテゴリで Permanent notes へのリンクを体系的にまとめたノート
  • Index notes: 各種ノートへのアクセスを効率化するためのノート

img

Zettelkastenをデジタルツールで実践

以上が Zettelkasten の簡単な紹介でした。

オリジナル(=ルーマン自身)では物理的な紙とペン、木箱を使っていましたが、 今はデジタルツールが役に立ちます。 既に各種アウトライナー(NotionやObsidian、もちろんEmacs)で実践する記事がたくさんあります。

org-roam とは

ここから Emacs および org-roam の話をしていきます。

org-roam は Emacs org-mode 上で動作するナレッジ管理システムです。

img

– 画像: Org-roam – A plain-text personal knowledge management system.

Zettelkasten を実践できるツールとして Roam Research があります。 org-roamはこのツールのいくつか主要な機能を実装しています。

org-roamでは ノード(node) と呼ばれる単位で情報を管理します。 ノードはファイル単位、もしくは見出し単位で作成可能です。

ノードからノードへのリンク、ノードの検索など Zettelkastenを実践するのに役立つ機能が揃えられています。

org-roam の導入

基本的にはユーザーマニュアル(Org-roam User Manual)どおりに導入したので、 簡潔に紹介します。

インストール

Org-roam User Manual #Install に沿って実施します。

パッケージの設定をした上で M-x package-install RET org-roam RET を実行し、 インストールします。

初期設定

org-roam-directory を指定して、 org-roam を構築するディレクトリを設定できます。 org-roam は org-roam-directory 内で再帰的にノートを検索します。

(setq org-roam-directory "~/org-roam")

またキャッシュの一貫性を維持するために ファイル変更時に関数を実行するようにします。

(org-roam-db-autosync-mode)

org-roam 最低限の追加設定

org-roamを触っていて、最低限 「ここはショートカットを用意したり、カスタマイズしたほうが良いな」 と感じた項目を紹介します。

ノードを新規作成する手順を確立する

ノードをサクッと作成できるように、 ノード作成ショートカットは作っておいたほうが良いです。

ノード作成の方法はいくつかあります。

  • org-roam-node-find : ノードが存在しない場合は 作成 し、 そのノードにアクセスする
  • org-roam-node-insert : ノードが存在しない場合はノードを 作成 し、 作成したノードへのリンクを挿入する
  • org-roam-capture : ノードが存在しない場合はノードを 作成 し、 終了時に現在のウィンドウ構成を復元する

私は org-roam-node-find を以下のようにショートカット登録しました。

(global-set-key (kbd "C-c n f") 'org-roam-node-find)

ノードを挿入する手順を確立する

他のノードへのリンクを挿入するアクションも良く使います。

org-roam-node-insert を以下のようにショートカット登録しました。

(global-set-key (kbd "C-c n i") 'org-roam-node-insert)

ノードを検索する手順を確立する

過去に作成したノードにすぐにアクセスできるようにしておきたいです。

これは「ノードを新規作成する手順」で設定した org-roam-node-find を使うことにしています。

Org-roam Buffer を見る手順を確立する

Org-roam Buffer では 他のノードからリンク/参照されているノードの情報を確認できます。 便利です。

img

このバッファーは org-roam-buffer-toggle を使って表示できます。

(global-set-key (kbd "C-c n t") 'org-roam-buffer-toggle)

ノードにエイリアスを付ける手順を確立する

:ROAM_ALIASES: プロパティを付けることでノードにエイリアスを付与できます。

img

エイリアスを付与するには org-roam-alias-add を実行します。

(global-set-key (kbd "C-c n a") 'org-roam-alias-add)

今後運用を固めていきたいトピック

Zettelkasten や org-roam に入門したばかりなので、 まだ運用が固まりきっていないトピックが結構あります。

それらを紹介していきます。

Fleeting notes をどう運用するか

再掲ですが Fleeting notes は Permanent note を生み出すための、日常的なメモ環境の1つです。 思いついたことをメモしておくための一時的なノートとなります。

どのように運用するかはユーザーに依存しそうだなと思いました。

org-roamでは org-roam-dailies 機能で日単位でメモを取れます。 もしくは単に org-modeの org-capture 機能でメモを取ってもいいと思います。

私は普段からリマインドやメモを org-capture で取っています。 ひとまずは、これらを Fleeting notes として運用しようと考えています。

Literature notes をどう運用するか

Literature notes は文献(書籍, ウェブサイト等)に関する情報をメモするためのノートですが、 現時点では、このノートは特別意識して作成・管理しないかなと感じています。

普段見る情報ソースが多数のウェブサイトなので、 それぞれ Literature notes にまとめるのに労力がかかると感じているためです。 Fleeting notes や Permanent notes あたりに リファレンスとして適当にメモしておく、ぐらいの運用になると感じています。

Structure notes をどう運用するか

現状は始めたばかりなので、 そこまでノードを充実させていないのが現状です。

今後ノードが増えてきたときに まとめ用のノード(もしくは単なる orgファイル)を作って、 それを Structure notes として運用しようと考えています。

Index notes をどう運用するか

これについては自前で Index notes を作らなくとも、 org-mode および org-roam の機能で 何とかなる気がします。

ノードを探すのは org-roam-node-find で可能です。

また、ノードにタグを付けて タグ単位で検索することもできます。 具体的には タグ付け/外しを org-roam-tag-add/remove で実行できます。 そして、タグの検索および閲覧は org-agenda 機能が使えます。

おわりに

以上、 Zettelkasten および org-roam に入門しました。

Zettelkasten では 「自分の言葉で書くこと」や「自分の考えを加えること」を重要視しています。

が、現状の org-roam を触っているモチベーションとしては 「過去のメモやノウハウに、すぐにアクセスできる仕組みを作りたい」 が一番大きいので、 そこまで Zettelkasten に忠実では無いです。

とはいえ Zettelkasten や org-roam の、 構造を気にせずにメモを取っていくスタイルは とても良い感触があります。 しばらく使ってみて、思うところや運用などにアップデートあれば 別途ブログにしたいと思っています。

参考