Bases機能でさらにファイルエクスプローラーから距離をおく
ほとんど意地になっています
新しい機能が登場すると試さないではいられない倉下です。
で、ObsidianのBases機能なんですが、本来的にはこれまで以上にフォルダに頼らなくてもよくなる機能だと感じています。プロパティでノートに属性を与え、それをbaseによって抽出して表示すれば、それはもうファイルリストなわけです。
実際、何もフィルターを設定しないbaseはすべてのファイルの一覧になっています。なのでこれをうまく使えば、ファイルエクスプローラーなんて一生表示しなくても大丈夫じゃん、という気がします。
にもかかわらず、以前たまたまファイルエクスプローラーを表示させたときに、うっかりフォルダで整頓してしまったので、逆に心に火がつきました。脱ファイルエクスプローラー(エグゾダス)です。
基本方針
基本的な方針は以下の通り
すべてのノートに type というプロパティを与える
書籍情報のノートならtype:book、原稿ならばtype:draftなど
typeによるフィルターのbaseを作る
それをノート一覧として扱う
これで「フォルダ」を作らなくても、フォルダのような機能が実現できます。で、実際のファイルは一つのフォルダにだら〜〜〜と並んでいてもOKなのです。整頓しない整理。一つの夢の到達点です。
現実的には
とは言え、現状はすべてのノートにtypeは割り当てられていません。当てているものもあれば、当てていないものもあります。
でもまあ、本当に必要なものはファイル名=ノートタイトルから探して見つけるので当面一覧は不十分でよいとしましょう。本格的に運用するならば、ノートのタイトルや今入っているフォルダからtype名を判定し、自動的に付与するPythonのコードなどを書くと思います(いや、書くのはChatGPTですが)。
というわけで、すでに当ててあるtypeでノート抽出するbaseと、typeを持っていないノートを抽出するbaseを作りました。後者はtype が emptyなものでフィルターすればOKです。
これで原理的にすべてのノートが何かしらのフィルターでひっかかることになります。
ベースのベース
当然のように、typeごとにbeseファイルを作っていくとその数は増えていきます。数が少ないうちは、command + o で base と打てばすぐに見つけられますが、数が増えてくと少々厄介です。
だからといって、baseフォルダを開く、みたいなことはしなくないわけです。なぜなら、今やっていることはフォルダを開かないで済むようにするための方策なわけですから。
というわけで、baseのbaseを作りました。
_base.baseというファイル名になっています(自身を抽出しないようにフィルターしています)。command + oで、_ を入れたら即座にこのファイルが見つかります。ブックマークする手もあるのですが、基本的にすべての移動をcommand + oに統一しておきたいので、見つけやすい名前にする方策を採用しております。
これでどれだけbaseファイルが増えても、簡単に一覧ができます。ファイルエクスプローラーを表示することなしに。
で、_base.baseから各baseに移動し、そこからさらに個別ノートに移動するという動線が無事確立された次第です。
教訓
これは非常によい感じなのですが、一つだけ不満があります。
それは_base.base ではフィルターとソートは使えるけどもプロパティが使えない点です。そりゃそうですよね。baseファイルはbases機能専用のファイルなので通常のmdファイルのようにフロントマターは書き込めません。
もし、.baseにプロパティを設定できるならそれぞれのファイルにindexを割り当てておき、その順番でソートすれば任意の順に並べることができたのですが、その夢はかないませんでした。
しかし、base機能はbaseファイルだけに適用されるものではありません。mdファイルを作って、その中にコードブロックで書き込むこともできます。
ということは、baseにプロパティを付与したければbaseファイルではなく、mdファイルにbase記法を書き込む、というのが良さそうです。そうすれば、baseへの説明などもファイルそのものに記述することもできるようになります。
でももうbaseファイルで作っちゃったしな〜という場合でもご安心。baseファイルをテキストファイルなどで開けば、base記法だけが記録されているのがわかります。
これをそのままコードブロックにコピペすれば移行は簡単です。
以下はレシピノートを移してみたところ。
ノートの横幅が通常のノートと同じになるので、この辺は工夫が必要かもしれません(CSSを当てるのがよいでしょう max-width: var(--file-line-width)でページ全体の横幅の最大値が設定されています)。
こういうbase用のmdノートをたくさんつくり、そのbase用ノートをまとめるための_baseは.baseにしておく、という組み合わせならばいい感じになるかもしれません。
とまあ、具体的な運用の細部はもう少し詰めていく必要がありそうです。なかなかいじるのが楽しい新機能なのは間違いありません。





