最近は資格の勉強に多くの時間を割いており、なかなか自分のやりたいことをできていないのですが、勉強のため+今後のためにセカンドブレインとしてのZettelkastenというメモ術でアウトプットを残してみようと思い立ちました。
Zettelkasten については下記が参考になるかと。
効率的なノートを作成できるドイツの社会学者が生み出した方法「Zettelkasten」とは? - GIGAZINE
今回自分はObsidian
を使って note taking しましたが、他にもいろいろな note taking tool があるのでそれはまた別の機会に。
前提としてガチで Zettelkasten を頑張ろうというわけではなく、お試しで触ってみるかというところなのでマイルドなユーザーを対象としている感じです。
目次
- 先に結論
- Obsidian について
- Foam について
- ObsidianとFoam両方でZettelkastenを実践するための設定とか
- Zettelkasten を実践してみる
- Zettelkasten を実践してみて思ったこと
- 最後に
先に結論
Zettelkasten をそのまま実践するのは難しく、LYT みたいな考えの整理を取り入れたほうが理解しやすいと思いました。
また、Obsidian であれ VS Code であれやろうと思えばどっちでも管理はできそうだなと思いましたが、メモ管理に対するプラグインの多さで Obsidian を今後も使い続けようと思いました。
Obsidian について
Obsidian
自体は結構有名な note taking ツールなので、簡単な特徴とかいいなと思うところを書いておきます。
- 生のテキストファイルを使用して情報を管理する、シンプルで使いやすい markdown エディタ
- リンクやバックリンクを作成して、情報間のつながりを整理・可視化できる
- 構造がないのでどういうふうに整理するかいちいち考えなくてよい
- 様々なコミュニティプラグインによって機能拡張ができる
- CSS とかテーマで見た目が見やすく・かっこよくできる
Foam について
VS Code で Obsidian のように markdown を管理して、情報間のネットワークをいい感じに実現するにはFoam
という拡張機能使います。元々 Roam Research にインスパイアされているみたいで、Zettelkasten でキモとなるユニーク ID でのノート管理とかもできるのでほぼ互換で使えるイメージです。
ObsidianとFoam両方でZettelkastenを実践するための設定とか
Zettelkasten については深く言及しませんが、自分の使い方としては FleetingNotes
にとにかくメモ書きをためて、ちゃんと作ったら PermanentNotes
に移動して永久の知識として残しておき、参考文献などは LiteratureNotes
に保存する。くらいの感覚でやっています。
自分のZettelkastenルール
異なるツールを同時に使っていくというところで、多少ルールを設けないとどちらかのツールの制約に引っかかるところもでてくるため、今回は自己流の管理ルールとして下記のものを設定しました。
ひとまず新規作成のノートはすべて
FleetingNotes
に保存する- とりあえずメモ書きをガーッと書いて後で整理すればいいやの心です
ふと思ったことは
DailyNotes
にメモする- なんでもいいのでその時の自分の思いは日記的に使えばいいかな
FleetingNotes
やPermanentNotes
以下のディレクトリで階層的なノートの分類はしない- 分類とかを考えると面倒だし、ファイルの移動とかも大変なので、思想に則ってディレクトリで階層的には分類しません
markdown ノートの名前は
yyyymmddHHMMSS.md
とする- 思想に則って UUID で管理してみる
frontmatter をちゃんと定義する
- UUID として日時を使用しているので、タイトルやノートの別名をエイリアスとして利用したい
- 例えば下記のような frontmatter
title: ObsidianとVS Code両方でZettelkastenする aliases: [ObsidianとVS Code両方でZettelkastenする] tags: [zettelkasten,vscode,obsidian] id: 20231230232844 date: 2023-12-30 description: Zettelkastenのメモ術をObsidianとVS Code両方で扱えるように設定した categories: [daily]
ノート類は 100 番台、図とかファイルのリソースは 200 番台みたいに目的別の大分類だけで運用する
- これは自分の中で目的がすぐにわかるようにしておきたいだけです
tag の階層構造は積極的に活用する
- Obsidian の tag 階層構造による検索の恩恵を受けたいです
Obsidian の設定
Obsidian はエディターとして非常に細かく設定ができるので、どのようにすれば VS Code(Foam)と共存して使えるかというところに絞って下記の設定をしています。
設定
- Editor
- Files & Links
- Appearance
プラグイン
Obsidian には基本的な core plugin と便利な community plugin が数多く存在します。core plugin は何を有効にしているかと簡単な設定を紹介します。また、Zettelkasten ルールを実現するのに必要な community plugin は大体下記になります。
- Core plugins (On にして使っているものと簡単な設定内容)
- Backlinks
- Bookmarks
- Canvas
- Command palette
- Daily notes
- File recovery
- Files
- Graph view
- Note composer
- Outgoing Links
- Outline
- Page preview
- Properties view
- Quick switcher
- Search
- Slash commands
- Tags view
- Word count
- Community plugins
- Templater
- これって何?
- テンプレートファイルを定義してノート作成時にテンプレートを挿入したり、なにか処理を実行させたりができる
- できるどう使っているの?
- 新しいノートが作成されたときに、定義した frontmatter を挿入したり、タイトル部分に自動的にカーソルしたりする
- 何がいいの?
- ノート作成時に作成時の日付とか自動で設定できる
- ノートのタイトルとかエイリアスとか H1 にカーソルして、UUID とは別に自分でつけたいタイトルをすぐに付けられる
- これって何?
- QuickAdd
- これって何?
- ノートをどうやって作るか定義したり、予め設定したノートに事前のアクションをどんどん実行したりできる
- どう使っているの?
- 新しいノートが作成されたときにファイル名を UUID にリネームして、Templater で frontmatter を挿入したりしてる
- 何がいいの?
- ノート(ファイル)の新規作成 -> ファイルを UUID にリネーム -> Templater で frontmatter を挿入 -> タイトルとかエイリアスとか H1 を編集できるようにマルチカーソルしておく みたいな流れを自動化できる
- これって何?
- Front Matter Title
- これって何?
- frontmatter に設定されている title 属性をタイトルとして表示できるようにしたもの
- どう使っているの?
- インストールしてデフォルトの設定のまま使っている
- 何がいいの?
- 自分のルールでは日時がファイル名に使用されるため、エクスプローラーとかの UI 上は一見すると数字でみにくくなるが、これを入れると Obsidian 上では frontmatter に定義した title で表示される
- これって何?
- Templater
Templater で使用する テンプレート
下記のようなテンプレートを用意すれば、新規作成時にカーソルが自動的に title, aliases, header 1 に移動して、すぐに自分で好きなタイトルを付けられるようになります。
Templater で使用するこのようなテンプレートファイルは、TemplaterNotes
の中に入れています。
---
title: <% tp.file.cursor(1) %>
aliases: [<% tp.file.cursor(1) %>]
tags: []
id: <% tp.file.creation_date("YYYYMMDDHHmmss") %>
date: <% tp.file.creation_date("YYYY-MM-DD") %>
publish: false
description:
categories: []
---
# <% tp.file.cursor(1) %>
Foam の設定
深く設定しなくてもデフォルトで Obsidian ライクに使える気がします。
Foam で使用するテンプレート
また、foam のテンプレートの設定も Obsidian と同様の frontmatter の設定を使用します。
少し改良して foam で使用できるように修正します。
foam の設定は、.foam/templates
の中にテンプレート md を用意することで使えるようになります。
普通のノートのテンプレート
--- title: $FOAM_TITLE aliases: [$FOAM_TITLE] tags: [] id: $CURRENT_YEAR$CURRENT_MONTH$CURRENT_DATE$CURRENT_HOUR$CURRENT_MINUTE$CURRENT_SECOND date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE publish: false description: categories: [] foam_template: filepath: 'FleetingNotes/$FOAM_DATE_YEAR$FOAM_DATE_MONTH$FOAM_DATE_DATE$FOAM_DATE_HOUR$FOAM_DATE_MINUTE$FOAM_DATE_SECOND.md' --- # $FOAM_TITLE
デイリーノートのテンプレート
--- title: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE aliases: [] tags: [daily/$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE] id: $CURRENT_YEAR$CURRENT_MONTH$CURRENT_DATE$CURRENT_HOUR$CURRENT_MINUTE$CURRENT_SECOND date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE publish: false description: categories: [] foam_template: filepath: 'FleetingNotes/$FOAM_DATE_YEAR$FOAM_DATE_MONTH$FOAM_DATE_DATE$FOAM_DATE_HOUR$FOAM_DATE_MINUTE$FOAM_DATE_SECOND.md' --- # $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE
Zettelkasten を実践してみる
Obsidian での Zettelkasten と Foam での Zettelkasten、両方でどうやって連携しながら実践するのか、それぞれの場合について説明します。
Obsidian での Zettelkasten のフロー
普通のメモ
- Obsidian を開く
- 新規ノート作成
- 各プラグインにより
FleetingNotes
にファイル名が日時のノートが作成 - タイトルが記入された状態で frontmatter のテンプレートが開く
- 各プラグインにより
- 適当にメモ書きを記載して保存
- ある程度まとまった時間ができたら
FleetingNotes
に残っているメモ書きをしっかり知識として記入 PermanentNotes
に移動
デイリーノート
- Obsidian を開く
- Command palette で Daily Notes を実行
- プラグインにより
DailyNotes
に日付のファイル名が作成 - タイトルが記入された状態で frontmatter のテンプレートが開く
- プラグインにより
- 適当にその日に起こったことを書いて保存
wikilink
- 新しい wikilink を作成する(
例: [[new link]]
) - 新しい wikilink を開く
- 開くと
FleetingNotes
にファイル名が日時のノートが作成 - wikilink で指定した名前がタイトルに記入された状態で frontmatter のテンプレートが開く
- 開くと
- 適当に書く
- wikilink を作った方のノートでは wikilink がファイル名になっているのでそれを修正する
[[20231201120000]]
みたいになっているので[[20231201120000|new link]]
みたいな感じにする
Foam での Zettelkasten のフロー
普通のメモ
- VS Code で Obsidian の Vault を workspace として開く
- Command palette から
Foam: Create New Note From Template
を実行- Foam の機能で新規ノート作成時にタイトルを入力する
FleetingNotes
にファイル名が日時のノートが作成- タイトルが記入された状態で frontmatter のテンプレートが開く
- あとは Obsidian のフローと同じ
デイリーノート
- VS Code で Obsidian の Vault を workspace として開く
- Command palette から
Foam: Open Daily Note
を実行DailyNotes
にファイル名が日時のノートが作成- タイトルが記入された状態で frontmatter のテンプレートが開く
- 適当にその日に起こったことを書いて保存
wikilink
- 新しい wikilink を作成する(
例: [[new link]]
) - 新しい wikilink を mouse hover で
Create note from template for "new link"
から wikilink のノートを作る- 開くと
FleetingNotes
にファイル名が日時のノートが作成 - wikilink で指定した名前がタイトルに記入された状態で frontmatter のテンプレートが開く
- 開くと
- wikilink を作った方のノートでは wikilink が入力したタイトルになっているのでそれを修正する
[[new link]]
みたいになっているので[[20231201120000|new link]]
みたいな感じにする
Obsidian と Foam どのように使い分けているか
Obsidian は note taking tool、VS Code はエディターとそもそも役割が異なるので、自分はそこが使い分けのポイントだと感じています。
- Obsidian
- ささっとメモ取ったりとりあえず考えをアウトプットしたいとき
- VS Code よりもドキュメントに集中して書くことができるから
- とにかく文章に集中したいとき
- VS Code だとターミナルを開いていたり別の workspace とか開いたりしてしまうのでそれを抑制できるのは良い
- Graph ベースで自分の知識を確認したいとき
- Foam と比較してやっぱり Obsidian の Graph のほうが自分の知識を確認しやすい
- ささっとメモ取ったりとりあえず考えをアウトプットしたいとき
- VS Code
- 所持しているドキュメントを整理するとき
- タグの整理というよりも Frontmatter とかを変更したいときは正規表現で置換したりする
- Obsidian がインストールできない環境のとき
- これはお仕事の環境なのですが Foam でなんとかやり過ごす、みたいな
- 所持しているドキュメントを整理するとき
Zettelkasten を実践してみて思ったこと
ということで、Obsidian と VS Code それぞれを使い分けながら Zettelkasten の知識構築を実践してみた感想です。
- 自分が怠惰なだけな気がしますが、
FleetingNotes
からPermanentNotes
に移すタイミングが良くわかっていないところがある- このノートは書きかけ途中なのか、整理途中なのか自分の中でルールを決めておかないと一生
FleetingNotes
から脱出できないノートが出てくる
- このノートは書きかけ途中なのか、整理途中なのか自分の中でルールを決めておかないと一生
DailyNotes
が活用できていない- すぐにメモしておきたいことは
FleetingNotes
に一旦メモ書きを残しておくという使い方 - つまりメモしたい内容は基本的に
FleetingNotes
にどんどん溜め込まれていく DailyNotes
の目的をもう一度考えたほうが良い
- すぐにメモしておきたいことは
LiteratureNotes
の存在意義、使われ方がイマイチわからない- これは自分がちゃんと Zettelkasten を理解していないだけなのですが、Literature として保存しておくべきノートの基準とかないので活用できていない
- 参考になった URL とかを保存するのだろうけど、ノートの中に参考情報を埋め込みがちになっている
- 結局 Graph を使って俯瞰的に知識を探すことがない
- ノート同士のリンキングは、対象のノートにフォーカスしている状態でどんどん幅を広げていくことに価値があると感じる
- Graph を見て「あ、あれとも関わりがあるんだった!」ではなく、ノートを見て「お、この関連する情報はなんだっけ?」で情報を見ていく
- VS Code での書き込みはやるはやるんだけど、なんだかんだ Obsidian がクロスプラットフォームに使えて便利
- VS Code で Note taking は VS Code が使える環境だったら textlint だけどモバイルでも見たり少し編集したりするなら Obsidian かなぁ
最後に
Zettelkasten 慣れるまでが大変だなと思いましたが、VS Code よりも今は Obsidian のほうが気軽にメモが取れます。その内やはりエディターということで VS Code のプラグインをゴリゴリ使うために乗り換える可能性はありますが、今は Obsidian で満足しています。