おこじょめもらんど
3623 文字
18 分
ObsidianとVS Code両方でZettelkastenする

最近は資格の勉強に多くの時間を割いており、なかなか自分のやりたいことをできていないのですが、勉強のため+今後のためにセカンドブレインとしてのZettelkastenというメモ術でアウトプットを残してみようと思い立ちました。

Zettelkasten については下記が参考になるかと。

効率的なノートを作成できるドイツの社会学者が生み出した方法「Zettelkasten」とは? - GIGAZINE

今回自分はObsidianを使って note taking しましたが、他にもいろいろな note taking tool があるのでそれはまた別の機会に。

前提としてガチで 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 にメモする

    • なんでもいいのでその時の自分の思いは日記的に使えばいいかな
  • FleetingNotesPermanentNotes 以下のディレクトリで階層的なノートの分類はしない

    • 分類とかを考えると面倒だし、ファイルの移動とかも大変なので、思想に則ってディレクトリで階層的には分類しません
  • 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
    • Editorの設定1
    • Editorの設定2
  • Files & Links
    • FilesLinksの設定
  • Appearance
    • Appearanceの設定1
    • Appearanceの設定1

プラグイン#

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 で使用する テンプレート#

下記のようなテンプレートを用意すれば、新規作成時にカーソルが自動的に 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の設定1 Foamの設定2

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 のフロー#

普通のメモ#

  1. Obsidian を開く
  2. 新規ノート作成
    • 各プラグインにより FleetingNotes にファイル名が日時のノートが作成
    • タイトルが記入された状態で frontmatter のテンプレートが開く
  3. 適当にメモ書きを記載して保存
  4. ある程度まとまった時間ができたら FleetingNotes に残っているメモ書きをしっかり知識として記入
  5. PermanentNotes に移動

デイリーノート#

  1. Obsidian を開く
  2. Command palette で Daily Notes を実行
    • プラグインにより DailyNotes に日付のファイル名が作成
    • タイトルが記入された状態で frontmatter のテンプレートが開く
  3. 適当にその日に起こったことを書いて保存
  1. 新しい wikilink を作成する(例: [[new link]])
  2. 新しい wikilink を開く
    • 開くと FleetingNotes にファイル名が日時のノートが作成
    • wikilink で指定した名前がタイトルに記入された状態で frontmatter のテンプレートが開く
  3. 適当に書く
  4. wikilink を作った方のノートでは wikilink がファイル名になっているのでそれを修正する
    • [[20231201120000]] みたいになっているので [[20231201120000|new link]] みたいな感じにする

Foam での Zettelkasten のフロー#

普通のメモ#

  1. VS Code で Obsidian の Vault を workspace として開く
  2. Command palette から Foam: Create New Note From Template を実行
    • Foam の機能で新規ノート作成時にタイトルを入力する
    • FleetingNotes にファイル名が日時のノートが作成
    • タイトルが記入された状態で frontmatter のテンプレートが開く
  3. あとは Obsidian のフローと同じ

デイリーノート#

  1. VS Code で Obsidian の Vault を workspace として開く
  2. Command palette から Foam: Open Daily Note を実行
    • DailyNotes にファイル名が日時のノートが作成
    • タイトルが記入された状態で frontmatter のテンプレートが開く
  3. 適当にその日に起こったことを書いて保存
  1. 新しい wikilink を作成する(例: [[new link]])
  2. 新しい wikilink を mouse hover で Create note from template for "new link" から wikilink のノートを作る
    • 開くと FleetingNotes にファイル名が日時のノートが作成
    • wikilink で指定した名前がタイトルに記入された状態で frontmatter のテンプレートが開く
  3. 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 で満足しています。

ObsidianとVS Code両方でZettelkastenする
https://okojomemorandum.com/blog/zettelkasten-vscode-obsidian/
作者
Okojomoeko
公開日
2023-12-30
ライセンス
CC BY-NC-SA 4.0