🗒️

Obsidianで最適なPKM環境を考える

2023/12/20に公開

はじめに

私は情報の整理が下手です。メモを取る行為そのものがまず苦手だし、書いたら書いたで煩雑だし、それを整理するのも億劫だし、その日の気分や体調によってたくさん書く日、全然書かない日、丁寧に書く日、雑に書く日などがあったりします。結果、どこに何を書いたか分からなくなったり、挙句の果てに内容を理解できず、書いたこと自体の意味を失うなんて経験を何度もしてきました。

しかし、仕事の上では言うに及ばず、情報過多な昨今ではプライベートであっても PKM (Personal Knowledge Management) の重要性は高まっていると常々感じます。そこで、自分の負担を減らしつつ必要な情報を管理・整理していく方法を改めて再考し、実践することにしましたので、その経緯について記載していきます。

環境と使用ツール

特筆すべき点はありませんが、この記事の内容を実践した環境は以下です。

  • OS
    • macOS
  • 使用ツール

Obsidianを使用する理由

今回の話のメインはObsidianですが、そもそもなぜこのツールを選んだかをもう少し深掘りします。

今はメモ1つとってもたくさんの優良なアプリやサービスがあり、登録すればすぐ使い始められるという場合も多いです。それらと比べると、Obsidianはどちらかといえば環境の構築や初期設定などに手間がかかると言えます。それでもObsidianを選んだ理由は、主に以下の理由によります。

ローカルで完結すること

ログインさえすればどんな環境でも使えるWebサービスは大変便利なものですが、あくまで自分のメモを自分のためだけに整理するという用途においては不要と判断しています。

Webサービスの場合、自身のネットワーク環境のほか、サービス側の障害によってもアクセスできなくなる可能性が付き纏います。最悪の場合、サービスが終了することも考えられます。メジャーなサービスであればそういった心配も限りなくゼロに近い話にはなると思いますが、いずれにせよ外的要因で書けなくなった、なんてことが発生するのは避けたい。

「今この瞬間で頭に思ったことを書き留める」という要件を満たせない場面があると、思考が別のことに移ったり薄れていったりで後から取り戻すことができないことが経験上多いです。そしてその喪失経験は、書き留めるという行為自体へのモチベーションにも直結します。

よって、自分の責任において全てを完結できるローカルでの作業環境を求めました。

プレーンテキストで書けること

アプリやサービスによっては図形を書いたり文字装飾をしたり自由な配置ができたりと、リッチでキレイな文書を作れるものは多々あります。確かに図形を描きたいというシーンもあるし、文字装飾をしてキレイで見やすいメモを取れるのであればそれに越したことはないでしょう。

しかし私の性格と経験上、本質とは異なる思考が加わるのはノイズにしかならないと感じています。「とりあえずメモを立ち上げて情報を書き留める」という行動を1秒で起こしたいとき、文字の大きさなどを考える必要はないのです。書き出した1文字目が意図せずデカい文字になってた日には、「あーデカくなくていいのに…」みたいな不要な思考が入って脳のリソースが消費されることになり、結果集中力が削がれる形になります。

Markdownで書けること

上とほぼ同じになりますが、最低限の情報量で文書を作成できるMarkdownはノイズが少なく、書く行為に集中できます。もともとエンジニアとしては馴染みの深い記法なので、予備知識が不要なのも大きいです。

Markdownは多くの場所で利用できるポピュラーな記法ですので、仮に将来Obsidianが使えなくなったりより良いツールに乗り換えたとしても、別の環境に移植するのは比較的容易と考えられます。整理した情報は資産ですので、持続性がそれだけ保証されているということは重要です。もちろん、書くモチベーションにも影響するでしょう。

独立した作業環境

例えばWebサービスであれば、ブラウザ上で文書を書けたりします。サービスによっては、ローカルのエディタで書いてアップロードできたりする仕組みもあったりします。

しかしエンジニアという仕事をしていると、ブラウザで行なっている作業が非常に多いです。Webミーティングに参加したり、社内システムで資料を確認したり、PR上げたり確認したり、もちろん調べ物などをしたり。書ききれないくらい色々あります。

私の場合、社用PCでは用途ごとにChromeのウィンドウ3〜4つぐらい開いて、トータルでタブを30や40開くなんてことはよくあります。これはこれで私の整理の仕方に問題があるといえばそうなのですが、いずれにせよそんなブラウザの中でメモをしようものなら、まずメモを開くという行為そのものにコストが生まれるのは容易に想像できます。

プレーンテキストという部分だけで言えばVSCodeのような開発用エディタも利用できますが、やはり同様の理由でNGです。VSCodeはコーディングやそれに関連する作業に集中する場にしたい。

物理的にアプリを分離することで、思考をメモを書くことだけに集中させる環境が必要でした。

カスタマイズ性の高さ

せっかくプレーンテキストで書くので、変更管理などという煩わしいことは全てGitに任せたいです。書いたメモの履歴を手動で保存するなんて最初から論外ですが、いちいち手動でコマンド打ってコミットすることにだって思考を割きたくない。

後述しますが、Obsidianではプラグインを導入することで、自動的にコミットを作りリモートリポジトリにpushすることができます。これで変更管理だけでなく、他の環境でも同じメモが利用できるというメリットも同時に享受できます。

それ以外でも、自分で満足いく日々のPKMを実現しようとすると色々な細かな要求が出てきます。これまで書いてきた通り、私の性格上ちょっとでも面倒だなと思うことがあるとPKMそのものの継続性にダイレクトに影響するため、自分がラクに快適に気持ちよく集中して書くことができるようにするためには、どんなに細かくても要求を満たせる必要があります。

そういった点でも、どれだけ自分好みにカスタマイズできるかということは重要な要素でした。

メモの管理機能が豊富

特にObsidianの特徴としてよく挙げられる、メモ間のリンクの貼りやすさとそれを俯瞰的に見ることのできるGraph View、階層型のタグなどの機能が充実していることです。メモの量にもよるとは思いますが、検索も軽快です。

また、デイリーでノートを作成する機能でフロー情報とストック情報を不要な思考なく区別できるのもポイントで、それを補助するプラグインも魅力的でした。

その他

他にも、動作が軽快でストレスがないこととか、PKMを目的として開発されたツールなので細かな使用感が合ってるとか、OSSなので持続性もありそうとか、そんな理由も含めたトータルでObsidianを選んだという感じです。

重要なことは道具ではなくストレス無く継続して書けることです。MarkdownやGit管理によって移植性を実現できているということそのものが、他に合うものがありそうなら乗り換えられるよねという気軽さにも通じ、結果的に継続する意識にも繋がるのではないかと思っています。

Obsidianの設定

人それぞれ好みはあると思いますが、いかに不要な思考を排除してメモを管理していけるかという点にフォーカスして設定していきます。快適に書くための便利機能も色々あったりするのですが、それは後から必要に応じて追加していけば良いので、スモールスタートで最低限必要なものだけに絞って考えていきます。

本体やプラグインのインストール作業、アプリ自体の細かな説明は省略しています。また、設定の名称は全て日本語メニューでの表記にしています。メニューバーの Obsidian > Preferences... で設定を開き、About > Language で日本語を選択し、Refreshします。

保管庫の作成

メモの置き場です。どこでもいいですが、後から変えるのはちょっと面倒なので保管庫自体の名前とともに一応ちゃんと考えましょう。

私は書類フォルダ配下にメモを集約する用のフォルダを作り、その中に保管庫を作りました。保管庫は1つを想定しているので別に書類フォルダ直下でも良いのですが、やっていくうちに保管庫を複数作るとかの要求は出てくるかもしれないし、階層を1つ深くすることに大きなデメリットもないので。

cd ~/Documents
mkdir notes/g8note  # ゲームエイトの業務で使用する保管庫として用意

あとはObsidianで「保管庫としてフォルダを開く」から g8noteを選べばOK。今回は事前に作っていますが、Obsidianを起動してGUIから保管庫を作っても問題ありません。

フォルダ構成

フォルダ構成を考えます。

フォルダというのは後から構造を変えたりするのに手間がかかったり、メモが複数のフォルダに対応する意味を持つ場合はどっちに置くのか、とかの問題があったりします。よって、メモを書く際に障壁となり得る複雑な階層は不要です。

Obsidianは階層型のタグ #foo/bar/baz とか #foo/bar/qux みたいなのが使えるので、タグでの管理をメインに考えてフォルダは最低限にします。こういうのはだいたい先人の知恵もあるので、こちらの記事を参考にしつつ自分なりに少し変えてみます。

https://pouhon.net/obsidian-folders/7244/

この記事では Inbox/Extra/Daily/Templatesの4つをフラットに並べています。このうち添付ファイルを配置するExtraと、Markdownのテンプレートを配置するTemplatesはメモとしては使わない、かつ設定さえすれば基本的に触らないフォルダという意味で _Configs に放り込むことにしました。

他は触らず、こんな感じに。

_Configs
┣ Extra
┗ Templates
Daily
Inbox

これでフォルダ構成は完成。続いてこのフォルダ構成に合わせて以下のように設定をいじります。

  • ファイルとリンク
    • 新規ノートを作成するフォルダ → Inbox
    • 添付ファイルフォルダのパス → _Configs/Extra
  • コアプラグイン
    • デイリーノート → ON
    • テンプレート → ON
  • コアプラグイン: デイリーノート
    • 新規ファイルの場所 → Daily
  • コアプラグイン: テンプレート
    • テンプレートフォルダの場所 → _Configs/Templates

テンプレートの設定

全てのメモに一律で付加する情報を考えます。別に無ければ無いでいいんですが、後から追加しようとすると既存のファイルはどうするとかが面倒なので、最初にある程度ルールを決めます。

Frontmatterを決める

結論から言えば、全てのメモに共通で以下のFrontmatterを用意することにしました。

id:
aliases:
tags:
created:
updated:

createdupdatedはファイルの作成日と更新日。情報というのは鮮度が命ですので、いつ書いたメモかというのは時間が経てば経つほど意識する必要があります。かといって、メモを書くときにいちいち「今日の日付は〜」とか、見返したときに「このメモはいつ作ったっけな〜」とか考えるのは嫌なので、メモの中で完結して確認できるようFrontmatterに定義します。なお、createdは作成と同時に自動入力、updatedは後述のプラグインで自動更新するようにします。

aliasestagsはメモへの付加情報。メモを書く瞬間ではなく、その後の整理のしやすさを考慮しての枠です。さぁ今日は整理を頑張るぞという気持ちになった時に、「あれ?tagだっけ?tagsだっけ?」などとこれまた不要な思考が発生するのはテンションが下がるだけなので、枠だけは用意するようにします。でも別に何も入力しなくても構わないし、必要だったら書けるよ、という程度の温度感です。

idは迷ったのですが、メモの固有情報として一意な値が入る枠を用意しました。Obsidian上で使うというよりは管理上の汎用性や移植性を意識したもので、当面の用途は考えていませんが、一応という感じです。なくてもいいと思います。

このFrontmatterをもとにテンプレートを作ります。

デイリーノート

以下を作り、デイリーノートの設定からテンプレートファイルの場所に _Configs/Templates/Daily を設定します。

_Configs/Templates/Daily.md
---
id: {{date:YYYYMMDDTHHmmssSS}}
aliases: [{{date:YYYY/MM/DD}}, {{date:YYYY年M月D日}}]
tags: [daily/{{date:YYYY/MM/DD}}]
created: {{date:YYYY-MM-DDTHH:mm:ss}}
updated: {{date:YYYY-MM-DDTHH:mm:ss}}
---

# Memo

通常のノート

プラグインTemplaterをインストールし、ストックするメモにも簡単にFrontmatterを追加できるようにします。

_Configs/Templates/_frontmatter.md
---
id: <% tp.file.creation_date("YYYYMMDDTHHmmssSS") %>
aliases: []
tags: []
created: <% tp.file.creation_date("YYYY-MM-DDTHH:mm:ss") %>
updated: <% tp.file.creation_date("YYYY-MM-DDTHH:mm:ss") %>
---

# 

上記ファイルを作成し、Templaterの設定を以下のようにしました。

Templater設定

これで、最初に設定した新規ノートをInboxに作成する設定と併せて、新規ノートを作成するとFrontmatterテンプレートが自動的に挿入され、かつ作成時の日付が自動入力されるようになります。

更新日を自動で更新

プラグインUpdate time on edit pluginをインストールし、Frontmatterのupdate(メモの更新時間)を勝手に更新するようにします。テンプレートを変えるときやその他設定を編集する場合に更新日が勝手に入力されると困るので、_Config配下を無視します。時間の更新間隔も決められますが、分単位秒単位で厳密である必要性はあまり感じられないので、5分にしました。

Update time on edit plugin設定

Gitで変更管理

面倒な変更管理をGitに任せます。プラグインObsidian Gitをインストールします。

リポジトリも作っておきます。

cd ~/Documents/notes/g8note
git init
git commit --allow-empty -m "initial commit"

続いてGitHubでもリポジトリを作ります。今回は業務上のことなどのクローズドなメモを書くことを想定するので、Privateにします。

GitHubリポジトリ作成

あとはリポジトリ作成後の画面に従ってリモートリポジトリを設定。

git remote add origin https://github.com/xxx/g8name.git

これでObsidian Gitを有効にすれば勝手にバックアップされます。設定は色々あるのでお好みでという感じですが、バックアップ間隔を10分にして、コミットメッセージを少し変更しました。

Obsidian Git設定

これで自動的にcommit&pushされると思います。任意のタイミングで手動でバックアップを取ることもできますが、ちゃんと動いてればそのうち意識しなくなるかと思います。

「とりあえず書く」環境の実現

そのとき思いついたことをとりあえず書き留めるというラフな動作においては、いちいちファイルを作るのすら億劫です。Obsidianを開いたその瞬間に書いておきたい。そこで、Obsidian Memosを入れます。

Obsidian Memosを入れると、X (旧Twitter) のような感じで書けるUIが追加されます。

Obsidian Memos設定

書き込んだ内容はデイリーノートに書かれていき、その時間も記録されるので、フロー情報を書き留めておくには大変便利です。

ホットキーを設定

Obsidian Memosは初期では「NOTEIT」ボタンを押して入力する必要があります。しかし私はとことん怠惰な人間なので、何か書いた後にカーソルを動かすという行為がもう既にダルイ。ノイズです。というわけで ⌘Enterで投稿できるようにしてしまいます。

ホットキーの設定からObsidian Memos: Note Itのキーを⌘Enterにします。-Obsidianは初期値だとカーソル下のリンクを新規タブに開くという操作が既に⌘Enterに設定されていて競合するので、こっちはブランクにします。

ホットキー設定

これでキーボード操作だけでメモの書き留めが完結します。

設定しなかった機能

ObsidianはZettelkastenという考え方を取り入れることができ、そのためにユニークノートクリエイターという機能が用意されています。

Obsidianはメモタイトル=ファイル名になるため重複は許されていませんが、この機能はユニークなPrefixをメモタイトルにつけることができるため、タイトルを考える際に重複の心配をする必要がなくなります。

確かにZettelkastenという考え方は興味深いし、不要な思考を排除してメモを書いていきたいという要求には合うのですが、少し試してみた結果、以下の理由で採用を見送りました。

  • Prefixは日付や日時を使用するため、日時という形を可能な限り尊重するとYYYYMMDDHHmmssSSぐらいまで必要になり長すぎる
  • msecまでこだわらないとしても、YYYYMMDDHHmm辺りでもPrefixとしてはやはり長い
  • 妥協してYYYYMMDDHHmmにして1分間に連続して作った場合、mmがカウントアップされる仕様のためcreatedの時間と合わないのが気持ち悪い
  • それならばと短くしようとして開き直ってSSSSなどを試したが、なんの脈絡もない数字が先頭につくのは気持ち悪い

あくまでユニークな数字というのが目的のため、数字自体に日付や時間といった意味はないというのが作者の見解とのことです。

https://forum.obsidian.md/t/zettelkasten-plugin-wrong-date-bug/39372/8

これ自体は理屈的には正しいのですが「どうみても日付な数字列がPrefixだけど、これは日付ではないただの一意な数字だよ」という考え方は、私の性格上受け入れられませんでした。完全に好みによるところだと思いますが、逆に気になってしまって思考のノイズになるのです。かといって長すぎるのも、短いけど意味のない数字が並ぶのも同様でした。

よって、この機能は使わずOFFのままです。まぁ、フロー情報はデイリーノートでファイル名を意識せず作れるし、腰を据えてストック情報を作ろうとするテンションの時はファイル名もちゃんと考えるだろうから特に必要ない、というのが妥協も含んだ結論です。

日々の運用

最低限の設定が終わりましたので、最後に日々の運用を考えます。

MacBook起動中は常にObsidianも起動しておくことにします。Obsidianの画面上ではMemosを常に出しておき、その隣に記事編集画面とプレビュー画面を並べる3ペイン構成で使うことにします。

Obsidian画面

あとは日々のお仕事をしていく上で書き留めたいことが出てきたら、SpotlightなりAlfredなりでobとでも打てばどの画面にいてもObsidianを開くことができるので、とりあえずMemosに書いていく。

Memosに書いたフロー情報は、適当なタイミングか業務終了前に必要な情報だけを拾い、然るべきストックメモに書いていく。ここを毎日必ずやるとするとプレッシャーになって続かなくなるため、あくまで気が向いた時にまとめようねという温度感で考えておく。

Memosは放っておくと溜まり続けるので、ストックが終わった、もしくはストック不要としたMemosは完了チェックを入れるか消す。それでMemosがあまりにも溜まり続ける状況にならないよう習慣づける。

最後がいかに意識的にできるかというのがまだ未知数ですが、だいたいこんな感じで考えました。最終的には書いて整理することが当たり前に行える習慣になっていくことがゴールですが、それを意識しすぎるのは逆効果ですので、色々と試行錯誤していくうちに自然と身についていった、という形が実現できればベストかなと思っています。

ちなみに、プレビューを横に並べてわざわざ3ペインにするのは、Markdownで書いた情報が即座にアウトプットされるという感覚が心地良いからです。いらないといえばいらないのですが、そうやって自分自身のご機嫌を取ってあげて自発的に書いていきたいというテンションに持っていくことは、結果的に継続に繋がっていくと考えています。

おわりに

いかがでしたでしょうか。

ゲームエイト入社を機に改めて再考したため使用感はまだまだこれからですが、不足する部分は豊富な設定とプラグインで自分好みにカスタマイズして継続的にPKMを実践していければと考えています。

Let's PKM !

ゲームエイトテックブログ

Discussion