個人的なメモ管理ツールを「Obsidian」に乗り換えたので、その設定などを備忘録としてメモしておく。
特に記述しない限り、Obsidianバージョンは0.12.5。
- 2022年10月:まだ閲覧されているようなので、「特徴」など更新
- ※2021年6月:ライブプレビュー対応など内容更新
Obsidianとは
概要
「Obsidian」とは、PC内ローカルにあるマークダウン(Markdown記法)ファイルの管理システムである。
公式サイトは「https://obsidian.md/」
PC/Mac/Linuxにおいて、基本的にローカルで動作し、ネット接続は必要としない。ローカルで閉じた使い方ならアカウント作成なども不要。
※クラウド教徒の方は、これ以上読んでも意味がないと思われるためここでお帰りください。その点については各自の考え方や作業環境次第であって優劣の話でもありませんし、この場で議論するつもりもありませんw
Obsidianにはローカル動作するツールなりの非常に有効な機能群が備わっていますが、それを有効に活かす(せる)かどうかは、人それぞれの考え方や作業環境次第というごく当たり前の話です。
万一気に食わないなどObisidianから再移住する場合には、ローカルフォルダ内のmdファイル(maarkdown形式)をコピーもしくはそのまま読み込ませれば良い(サーバーに保管されて取り出せないなんてことはない)。※逆に有償オプションでiOS版/Android版のObsidianモバイルとの連携も可能。
なお命名は「黒曜石」の英名からで、開発陣に大人気ゲーム「Minecraft」好きがいることによるものらしい。
特徴
ローカル動作・ドキュメント以外の余計なゴミを残さない
「Obsidian」はプロプライエタリな要素を極力廃するようにできており、管理フォルダに独自の管理ファイルをいくつか持つ以外は、ドキュメントフォルダに一切ゴミを残さない。
ドキュメントフォルダ内は、拡張子「.md」のテキストファイルのみが入っている状態となっている。万が一「Obsidian」プロジェクトが頓挫したとしても、フォルダ及びファイルをごっそりと他のmarkdownエディタなどにそのまま移行可能で、書き起こしたドキュメント資産は無駄にならない。
実行ファイルもいわば専用ブラウザのようなもの(Electron)として実装されており、その表示内容はCSSにより柔軟にカスタマイズできる。
シンプルな構造故に、非常に素軽く動作する。利用に際してアカウント作成などの手続きもない。
文書間連携能力の高さ
また「Obsidian」は、Markdown記法を拡張することにより文書間の連携をより簡易に扱えるようになっている。関連ファイルへの(Wikiのような文書名を[[]]で囲っての)明示リンクのほか、(文書中の単語とファイル名との一致で自動検索する)非明示リンク、インクルード(埋め込み)リンクなど多種の文書間連携があり、「Obsidian」をMarkdownエディタとして見る場合には、この文書間の連携が主な特徴となるのではないかと思われる。
あちこちに書き散らかしても、ある程度(非明示リンクにより)自動で連携され、知識として結合していく。あるいはインクルードリンクすることで相互参照性を高めたり、明示リンクでの連携で知識をかっちりと構築していくこともできる。また文書名称と異なる別名(alias)での明示/非明示リンクもサポートするなど文書連携の幅は非常に広い。
それと同時に、関連するファイルの取り扱いにも長けており、上記した明示/非明示リンクで洗い出されたファイルの内容を(Ctrl+マウスホバー等で)簡単にホバー表示できたり文書へのリンクを埋め込める他、演算子を利用して検索した一覧からも同様にホバー表示や部分的にコピー・ペーストしたり、互いに見比べながら相互に編集したりといった、複数文書の同時編集能力に非常に長けている。
これらはいちいち文書ファイルを開いてウィンドウやタブを切り替えながら編集するといった、これまでのメモ帳/ノートアプリによくある文書切り替え操作は必要ない。さらにv1.0.0では、これまでのウィンドウやペインを切り替えての操作のほかに、同一ペイン内でのタブ切り替えもサポートしたため、複数文書での同時・相互編集能力はより一層増した。
この文書間の連携能力や相互参照・編集能力の高さ、それらをネットワークグラフビューで描画・確認できるところなどがObsidian開発元をして「第二の脳」と誇る所以ではないかと思われる。
まとめ
一言で言えば、Web時代に見事に適応したMarkdownエディタだということができる。
Web時代のいま現在、あらゆるアイデアなどのアウトプット先としては(PDFなどを含めた)Webが前提になるが、それをメモ帳のように文字情報で記述していき、必要以上の過剰な装飾については極力外部に切り離し独自実装は行わない。
これにより非常にシンプルかつ素軽いシステムが出来上がっている。さらにMarkdownを一部拡張して文書間の連携を強化することで、Web時代に対応したアイデアプロセッサーとしての領域に達している。
現在の利用スタイル
画面配置
左サイドバー
上にスター付き、下側にはファイルエクスプローラーと検索タブ
中央
おおむね数ペインを表示しながら切り替えて編集
右サイドバー
上にアウトライン、下はバックリンク(メンション)表示
保管庫
「保管庫(Vault)」は現在1つで運用している。
※保管庫とはドキュメント群のルートフォルダだと思えば良い。httpd知っている人ならDocumentRoot。複数の保管庫を切り替えできる。配下にはノートやフォルダを階層的に配置できる。
操作性などから、「保管庫(Vault)」を切り替えるメリットが現時点では浮かばなかった。何しろ、興味の持ち方が”既存の知識に結びつけて広げていく”タイプの人間なので、すべてがリンクしてくるためだ。
※私の使い方ではグラフビューはあまり意味を成さないため使っていない。
例えば今回、このブログのイメージ公開用に「サザエさん」の保管庫(Vault)を作ったが、まさにこうした「切り離した保管庫」を作るには、この管理方法は最適だと言える。
ブラウザ検索エンジンへの登録
obsidian URIを使うことでObsidianを起動して指定ノートを開いたり、検索を行うことなどができる。文法は次のページに記述されている。
Using obsidian URI – Obsidian Help – Obsidian Publish
https://publish.obsidian.md/help/Advanced+topics/Using+obsidian+URI
例えば、検索なら次のようなものとなる。
obsidian://search?vault=my%20vault&query=MOC
※この例だと「my vault」という保管庫内から「MOC」という文字列を検索する
Chromeブラウザの場合、検索エンジンに登録してパラメータを渡すには、「%s」を検索する値として登録すれば良いので、検索エンジン登録文字列は次のようになる。
obsidian://search?vault=[vault名]&query=%s
※上の例の通り、実際の登録時にはvault名前後の[]はいらない。
これでブラウザ上で文字列などを選択した上で、右クリックから「その他の検索エンジンで検索」を選んだ上でObsidianを選択すると、「Obsidianを起動するか?」と聞かれるのでOKを押すとObsidianを起動の上で指定保管庫内での検索結果が表示される。
一つだけ覚えれば良いショートカット
通常この手の新しいツールに接すると、ショートカットキー(ホットキー)の配置を覚えるか、自分の好みにカスタマイズする作業が始まる。
しかしObsidianではそれについても配慮がなされており、とりあえず覚えておくのは「Ctrl+P」これだけで良い。コマンドパレット(コマンド一覧と現在のショートカットキー設定)が一覧で表示され、選択することで機能する。
文字を入力しての絞り込みもできるので、何度か使ううちにショートカットキーも覚えることと思われる。
個人的な評価点
個人的に良いなと思った点
個人的に良いなと思った点を順不同で雑に並べてみる。
- プロプライエタリな要素が極力少ないこと ★★
・1文書をOS上の1ファイルとして取り扱うこと。OSのフォルダ構造をそのまま再現すること。元ファイルに余計な属性や情報を追加させず、余計なファイルを極力生成しないこと。プロプライエタリ部分をバッサリ切り捨てるだけで単純に文書ファイル取り出しが可能なこと。※以前使っていたメモツールだと、ツール上に表示しているメモ数と実フォルダ内のファイル数に乖離が生まれることがあった。素直にフォルダを読みに行けばこんな瑕疵など生まれない。
・大切なドキュメントをなにかのツール類に依存させることは避けたい。データベースに格納したり自分管理じゃないサーバーに保管などもってのほか。OS(Windows)のローカルフォルダにあるものを、あるがまま表示し、扱えることが最重要な評価点。
※なおWindowsエクスプローラー上での「.md」ファイルのプレビューは、Microsoft製のツール「PowerToys」を導入することで可能となる。 - 現状のテキストベースメモからの移行(逆移行)が容易なこと
今回は数千あるテキストファイルを拡張子リネーム「REN *.txt *.md」するだけでほとんど移行できた。戻すときも同様の操作をするだけで良い。※もちろん作業前にバックアップは取っておくべき。 - 文書管理が可能なこと ★
・ひとかたまりの文書群(─ Obsidianではこれを「保管庫(Vault)」と呼ぶ ─)としての別管理が可能で、例えばObsidianのヘルプ自体がこのObsidianを利用してVaultの1つとして作られている。
・保管庫はそれぞれ独立管理されるため、たとえばバックリンク(現在文書への明示的被リンク、あるいはリンクしない非明示リンク)やグラフビューには影響を及ばさないが、Obsidian独自拡張リンクにより意図的にリンク(obsidian://vault/[vault名]/[ノートタイトル])することもできる。 - 素軽いこと ★
機能の多さは求めていない。思考を妨げない素早さこそが至高。特にファイル閲覧/編集履歴への素早い移動が素晴らしい。
※ただし履歴一覧できないのが(個人的には不要な機能ではあるが)やや不思議。もっとも専用のエクスプローラー的な機能や、スター機能(お気に入り)もありまったく困らない。→これはコミュニティプラグインの「Recent Files」で代替できる」 - エディタモードとプレビューモードの早い切り替え ★
※ここについてはライブプレビュー機能搭載により完全に過去のものとなってしまった。いまやモード切り替えを意識することなく、ほとんどWYSIWYG環境Markdownエディタになりつつある。
・モード切り替えが文書単位ではなく現在のペインでのものになっており、プレビューモードで文書をカチカチと眺めていき、気になったところでエディタモードに切り替えて編集を行うといったスタイルで利用できる。※複数ペインを開いている場合には、指定した該当のペインだけがモード切り替えの対象となる。
・なおヘルプを開くとわかるように、同一文書をエディタモードとプレビューモードで開き同期スクロールしながら編集を即反映することも可能。ヘルプのように2つのモード(つまりエディタペインとプレビューペイン)で同期スクロールしたい場合には、そのペインのモード切り替えボタンをCtrl+クリックする。
・CSSを編集することによりエディタモードでもプレビューモードと遜色ない表示も可能になる。リアルタイムで評価・再描画が行われるため、エディタモードでもプレビューにほぼ近い表示も可能となる(埋め込みメディアファイルや後述外部ライブラリ利用部分は無理)。これには驚くばかりで、Wordpressエディタなど糞に思えてくる。 - 表示のカスタマイズ性・拡張性 ★★★
・(markdown記法の制限内ならば)CSSを記述することで完全にカスタマイズできる。CSSも編集するとリアルタイムに反映される。これにより、シンプルにメモ帳のように記述しながらもある程度リッチな出力が行える。独自拡張のメディアファイル埋め込みなども有用。
・なおメインのエディター部分は当然として、文書一覧部分やアウトライン部分など左右のサイドバーもHTMLで表示されており、当然CSSカスタマイズが可能となっている。HTML5+CSSの範囲内であれば、余計な要素を非表示にしたり、逆にcontent要素で独自の文字情報を追加したり、色やサイズを変更することも可能である。
・他に「Mermaid API」にも対応しており、簡単なグラフをMarkdown表記した上で表示することも出来る。簡単といっても、フローチャート、パイチャート、マインドマップ、シーケンスダイアグラム、ガントチャート、クラスダイアグラム、ER図、ジャーニーダイアグラムなどに対応している。 - 文書閲覧性 ★★★
・(見出し)でのアウトライン表示機能。これにより、1つの文書に複数の事項が記載されていても、瞬時に概要を理解し、また必要な箇所を素早く探し出し読み取ることができる。当然、見出し文字を打てば少し遅れてアウトラインも再描画される。
・アウトラインに利用される見出しや、ブロック(段落)に対して、他文書からダイレクトにディープリンクを張ることもできる。これにより、閲覧性がさらに向上する。 - 文書間の連携が容易なこと ★★★
・Obsidian独自のMarkdown拡張部分により十分な連携が行えそう。なにしろ、明示的に「[[文書名]]」と囲むことで、自動的に候補を表示する(インクリメンタルサーチ)機能まである。さらに「#」で文書内の見出しへ、「^」で文書内のブロックへと、文書内の指定箇所へのディープリンクを貼ることも出来る。
・これにより、PukiwikiやMediawiki(Wikipediaが採用)を始めとするWikiと同様の使い方が可能で、なおかつそれを数段上回る文書間連携が可能となる。この連携状態は、常時バックリンク欄に表示可能なほか、「ネットワークグラフ」表示も可能。
・バックリンクには、明示的に「[[]]」で囲ってリンク先として指定された被リンク(リンクされたメンション)に加えて、文書名で非明示的に参照されたもの(リンクされていないメンション)も表示できる。※上の画面では、すべて非明示的な”たまたま文章中に現れた文字列”が文書名に一致しているということで「リンクされていないメンション」欄に表示されている。
・さらにエイリアス(別名)という概念もあり、例えば”サザエさん本人(磯野カツオの姉)”について書いた文書を「フグ田サザエ」というノート名で作っておきエイリアスで「サザエさん」としておくと、「フグ田サザエ」と「サザエさん」のいずれの記述でも同一文書へのバックリンク(あるいは非明示的な参照)として認識する。なんなら「カツオの姉」や「磯野サザエ」とエイリアスしておいても良い。このエイリアスを含むフロントマターは、各文書の先頭に書く必要がある。※下記スクショでは黄色いメンション表示で「フグ田サザエ」と「サザエさん」の両方で引っかかっていることがわかる。
・この2種類のメンションとエイリアスによりいわゆるWiki類の機能をよりスマートに内包し、さらに参照の容易さによってそれらを遥かに凌駕する。
- 検索性 ★★★
・数千ファイルあっても十分に高速な検索速度で、「検索結果のお気に入り化(スター)」など開発者の検索に対する重視姿勢が好感できる。
・ただの検索ではなく、マウスホバーにより該当箇所を中心に文書全体を参照できるだけでなく、その状態での文章コピペも可能で、ドラッグ&ドロップで文書リンクとして挿入もできる。
・同様にメンション(リンク、非リンク)についても、検索するまでもなく常時表示が可能で、なおかつこれもまたマウスホバーでの手軽な該当記述箇所の参照や、文書リンクとしての挿入もできる。 - 文書のカテゴライズ
・文書のカテゴライズは、基本的にOSのフォルダ構造に依存する。しかしそれだけに留まらず、「タグ」、あるいは「フロントマターのkeywords」によってそれをさらに拡張できる。
・これ以外に先に紹介したメンション機能を使って「カテゴリー」項目を独立させることで、フォルダによらないカテゴライズが可能となる(これは既存のWikipediaなどでも実現可能な範囲)。例えば「女性」文書を作り、サザエさん文書などから「女性」へメンションすることで女性カテゴリへのメンション群として集約できる。同様に「人物名」、「アニメに登場する人物」なども可能。
・もっと簡単にキーワードでカテゴライズしたい場合には、検索結果にスター付けすることで簡易的にそれを実現できる。 - 外部情報(HTML/PDF)の取り込み ★★
・Webページの必要な部分をコピペすることで、単純なテキストではなく(見出し、箇条書きなどを含んだ)Markdown形式に変換した上で取り込んでくれる。Web上にある各種情報を参照しながらメモしていく上でこれはなかなか便利。
・PDFについてはインクルードリンクも可能となっている(ただし私の環境ではエラーになる)。
・現状はExcel表の取り込みは対応していないが、Excel→Markdownのオンラインサービス(https://markdown-convert.com/ja/tool/table)利用でまかなえそう。 - 外部(PDF/Web)への出力
・ページごとにPDF形式で印刷(出力)可能。また専用サイト(https://obsidian.md/publish)に公開することでWeb公開も可能。単に個人的なメモとしても利用可能だが、外部に見せることを前提とした使い方もできる。
・理想を言えば、Markdown記法に対応するルール(例えば見出し文字は”*”や”H”など)を記述することにより他の記法へのコンバート出力を行って欲しいところ。もっとも単純なツールを噛ませばいいだけだが、それをいえばエディタ類はほとんど要らないという話にもなってしまう。
こうした諸機能の実装の方向性がとても素晴らしいと感じる。
求めているがやや物足りない点など
Obsidianをさらに使いこなした場合の妄想。
- リンク先の表示
って無理なんだろうか?(当該ファイルへの)バックリンク元じゃなく、(当該ファイルから他ファイルへの)リンク先。用語でグルーピングしてマッチした文書の一覧を表示する。現状だといちいち検索ウィンドウに入れる必要があり、スマートじゃない。
→ v0.12.4で「Outgoing links」が実装されました。素晴らしい。しかし自動で探す(非明示的外部リンク)「Unlinked mentions」については、日本語ではやたらめたらとリンクされまくって役に立たない(これは致し方ないが、せめて最小自動判定文字数くらい設定させて欲しい)。 - 編集行の保存
最後の編集位置(行番号)が保存されないため、長い文書ではややめんどくさい。特に誤操作で別ファイルを現在ペインに読み込んでしまい、慌てて戻ると編集位置が先頭に戻ってしまう。せめて最近5ファイル位覚えててもらえないだろうか。もしくは再起動までとか。
→ いつからかは不明だが、ウィンドウを閉じずにファイル移動した場合にはカーソル位置が記憶されるようになっているようだ。 - 画像ファイルなどメディアファイルの取り扱い
・メディアファイルの添付についてもかなり意欲的に実装が行われているが、現時点(2021年2月)での画像ファイルの添付(指定フォルダへの再格納)についてはやや不満が残る。
・ただしドラッグ&ドロップでリンク形式が記述され、プレビューモードでは完全に埋め込みメディアとして表示されるなど、現状の使い勝手でも必要十分を満たしている。※個人的な好みで、ローカルにあるファイルはコピーを作らずその位置のままでリンクしてほしいというだけ。
・また例えばYoutubeやTwitetrなどの取り込みも、現状はiframeタグなどをそのまま貼り付ける形で、これはObsidianに似つかわしくなくスマートとは言えない。できれば主要メディアやSNSはリンクを自動判別してインクルードして欲しい。あと個人的にはWikipediaや学術サイト掲載文書(PDF)のインクルードリンクが欲しい。 - 文書編集機能の貧弱さ
・ファイルを横断した検索機能が強力なのに対して、文書内での文字列の「検索・置換」機能(Ctrl+F、Ctrl+H)がほとんど必要最小限しかついていない。正規表現などは使えないので、他のツールを通したり、コピペして処理する必要がある。※ファイル検索の方は強力だが、編集機能としての文字列を検索して置換したりといった能力はWindowsの「メモ帳」レベルでアンバランスな状態。 - Alias機能の問題点
・YAMLフロントマターでのaliases指定で文書名に別名(エイリアス)を指定できるのはとても素晴らしいのだが、前後に別のものを示す文字があったとしてもバックリンク判定されてしまう。これは(Wikiなどでも同様の問題は存在し)仕組み上致し方なく、同一文書と判別されそうな文書名を使わないか、あるいは誤判定されるリンクを明示的に区別してやる必要が出てくる。
・これはなんとかして欲しいところ(aliasesの逆になる除外指定をつける?結局はブラックリストを書くことになるが、除外記述が1ヶ所でまとまっているか、あるいは出現箇所すべてで除外記述をするのかの違い) - 文書単位でのカスタマイズの困難さ
CSSカスタマイズなどは保管庫(Vault)ごとでの統一指定となるため、このフォルダ内の文書はこう表示して欲しいなどの指定はできない。例えば文章折返しや等幅フォント指定などなど。これらは保管庫(Vault)とCSSを切り分ける必要がある。ただしこれも結局は付属情報を付加せざるを得ず、現状のシンプルな動作とは真逆の機能となってしまう。 - 発展途上
かなり速いペースで鋭意開発が続けられており、新機能実装が行われるほか、既存機能に対して修正が入ることもある。これを考慮して、あまり現時点での機能に依存しすぎることについては注意が必要だと思われる。たとえば全文書になにかのタグを苦労して埋め込むなどは無駄になる可能性がある。 - バックアップ
必ずしもObsidian自体に機能は必要ないが、やはりドキュメントを蓄積する上でバックアップを自動化しておきたい。別途OS機能などで構築予定。 - Windows10の画面キャプチャと相性が悪い?
画面キャプチャを動作させるとObsidianが非常に重くなる。CPUはスカスカなので、CPU負荷の問題ではなくなんらかの処理に引っかかって重くなってる模様。現状、Obsidian再起動が一番手っ取り早い解消策となっている。 - 独自ドメイン(サイト)での公開
・外部への公開は(https://obsidian.md/publish)で可能。
・有料オプション。16ドル/月(年額請求。現在は早期割引で8ドル/月)https://obsidian.md/pricing・カスタムドメイン、ディレクトリでの公開も可能。→ https://help.obsidian.md/Licenses+%26+add-on+services/Obsidian+Publish
要するに現状のObsidianの機能でできる範囲が広いため、イチャモンレベルに近いことしか思い浮かばない。ただしメディアの取り扱いだけはなんとかして欲しい。
設定
主な設定
一般的なエディタ同様、またMarkdownエディタであるため、自然と機能もシンプルとなっている。
別途行ったカスタマイズについては、別ページに述べる予定。
Obsidianバージョンは0.11.0。
設定内容
設定画面も説明が豊富であり、特に迷うものは少ない。なお表示のカスタマイズ(フォント指定や文字サイズ、文字カラーなど)は、全てCSSで行う。
- エディタ
- スペルチェック:オフ ※そもそも英語長文を記述することがない。
- 一度に表示される行数(の制限):オン
- (プレビューモードでの)行の折り返し:オフ
- フロントマターを表示:オン
※YAMLフロントマターは、主にプログラムの先頭部分にリリースに関する概要情報を記載する部分の記述方法をいう。その文書(プログラム)のタイトル、リリース日、バージョン情報、オーサー、カテゴリーなどを記載する。文書情報としては、出版情報などを記載すると良いと思われる。
- 括弧を自動的にペアリング:オン
- マークダウン記法を自動的にペアリング:オン
- スマートインデント:オン
- 見出しのフォールド:オン ※見出し部分の折りたたみ/展開が可能となる
- インデントのフォールド:オフ ※同様にインデント表記部分の折りたたみ/展開が可能となる
- デフォルトのビューモード:エディタ
- 行番号の表示:オフ
- タブの使用:オン
- タブの間隔:(中央程度)
- 行の折り返し:オン
- HTMLの自動変換:オン ※コピペした際に自動的にMarkdown記法に変換してくれる
- Vimのキー設定:オフ
- ファイルとリンク
- ファイル削除の確認:オフ
- 削除済ファイル:Obsidianのゴミ箱フォルダ ※とりあえず一度書いた文書は消さずに全部ここに放り込む
- 内部リンクを毎回更新する:オン
- 新規ノートの作成場所:保管庫直下 ※このあたりは個人的趣味
- 新規作成するリンクの形式:ファイルに対する相対パス
- [[ウィキリンク]]を使用:オン
- Detect all file extensions:オフ
- 新規添付ファイルの作成場所:以下で指定されたフォルダ ※この辺りが現状やや不満な実装
- 添付ファイルフォルダのパス:
- 外観
- ベーステーマ:ライト ※プログラマーではなく文章書くほうが多いので白地でないと目が疲れる
- カスタムCSSを適用する:オフ ※こちらではなく下のスニペットで行う
- 半透明ウィンドウ:オフ
- テーマ:Blue Topaz ※カスタマイズあり
- CSSスニペット ※テーマにさらにカスタマイズしたい場合に使う。別ページで説明予定
- コアプラグイン ※下記をオフ
- Markdownフォーマットインポーター ※他のMarkdownエディタから移行する際に利用。
- デイリーノート ※日記帳的なもの。個人的にはGoogleカレンダーで管理しているので不要。
- Zettelkastanプレフィクサー
- ランダムノート ※ランダムに既存ノートを表示する機能
- オーディオレコーダー
- パブリッシュ
- 同期
- サードパーティプラグイン:
- Sliding Panes
※複数のノートを開いた際に、アコーディオンのように移動表示するプラグイン。なおこれを使う際にはノートを拓く際にCtrl+でクリックする必要がある。通常クリックだと、現在開いているノートを(閉じて)切り替え、Ctrlクリックでは並列に開く。fくすう文書を参照・編集する際にはとても便利。
- Sliding Panes