Obsidianでデータベースが使えるぞ!

Obsidianでデータベースが使えるぞ!
トンボが、ぽつんと。

Obsidianを開いたらRelease Noteが出てきて、内容を読んでびっくり!

Obsidian 1.9.10 Desktop (Public)
Introducing [Bases](https://help.obsidian.md/bases), a new core plugin that lets you turn any set of notes into a powerful database. With Bases you can organize…

Baseというコアプラグインが追加されて、YAML形式で記述されるプロパティとして扱えるらしい。

Introduction to Bases - Obsidian Help
Introduction to Bases - Obsidian Help

わお!

いちおう今までもコミュニティプラグインのDataviewを使えばそれっぽくできたんだけれど、コアプラグインじゃなかったから使ったことがないんだよねぇ。

GitHub - blacksmithgu/obsidian-dataview: A data index and query language over Markdown files, for https://obsidian.md/.
A data index and query language over Markdown files, for https://obsidian.md/. - blacksmithgu/obsidian-dataview

画像の埋め込みとか制限はあるそうだけれども、数式とかを書けるのだからすっごく便利そう。

というのも、従来のObsidianでは、ノートを整理するためには

  • 手動でタグをつけて分類する
  • フォルダで分ける
  • 検索機能に頼る

といった方法しかなかったんだよね。

これらの方法もやっていることが明確で、目的が手段化しないみたいに「いいことだ!」と思い込むことはできるのだけれど、やっぱりNotionのようなデータベースはちょっとうらやましいんだよね。「特定の条件に合うノート一覧を表形式で見たい」ときはあると思うんだよ。

Basesプラグインを使うと、ノートのプロパティ(YAMLフロントマターに記述される情報)を基にして、Excelのようなテーブルでノートを管理できるようになるっぽい。一言でいえば、ObsidianにExcel機能が来たって感じ?

これまでもちょびちょびYAMLフロントマターのアップデートがあったのだけれど、正直あんまり使い道がなかったんだよね。そもそもYAMLフロントマターが機械が読み取るようの補助的なメタデータという扱いだから、書かなくてもいいかなって感じだったの。でもこれでYAMLフロントマターに積極的にいろいろ書きこむ理由ができていいね。今まで書いてきた人も簡単に活用ができるようになってよさそう。

具体的にどんなことができるの?

説明なしにいろいろ話してきたけれど、Basesプラグインの機能を見ていこう。

Introduction to Bases - Obsidian Help
Introduction to Bases - Obsidian Help

フィルタリング機能

基本となるのが、ノートのフィルタリング機能。

  • 特定のタグがついたノートのみ表示
  • 特定のフォルダ内のノートのみ表示
  • 作成日が今日のノートのみ表示
  • 特定のプロパティ値を持つノートのみ表示

こんな感じで条件を組み合わせて、複雑な絞り込みをする機能。

カスタムビュー機能

同一のベースに対して複数のビューを切り替えられます。

例えば読書管理であれば

  • 「読書中」タグのついた本の一覧ビュー
  • 「読了」タグのついた本の一覧ビュー
  • 評価4以上の本のみのビュー

といった具合に、用途に応じて表示を切り替えられます。

Views - Obsidian Help
Views - Obsidian Help

動的プロパティ(フォーミュラ)

おそらく激アツなのがフォーミュラ機能。

既存のプロパティを組み合わせて、新しい計算結果を表示する機能です。

例えば

  • 作成日時から「◯日前に作成」といった相対的な情報を表示
  • 複数の数値プロパティを組み合わせた計算結果を表示
  • 条件分岐を使った動的な表示内容の変更

まあ、Excelの関数というか計算機能ですよ。目玉だよね!

Functions - Obsidian Help
Functions - Obsidian Help

はて、.baseファイルってなんだ?

当初は「YAMLで記述されるのかな?」と思っていたのですが、調べてみると全然違いました。Basesプラグインは独自の.base ファイル形式を使用しています。

Bases syntax - Obsidian Help
Bases syntax - Obsidian Help

実際の.baseファイルの構造

.baseファイルは以下のような構造になっています。

公式ヘルプのコードをClaudeに開設してもらいました。

# === 1. フィルター条件の定義 ===
# どのノートを対象にするかの基本条件を設定
filters:
  or:  # 以下のいずれかの条件に合致するノートを表示
    - file.hasTag("tag")  # 「tag」というタグを持つファイル
    - and:  # 以下の両方の条件を満たすファイル
        - file.hasTag("book")  # 「book」タグを持ち、かつ
        - file.hasLink("Textbook")  # 「Textbook」へのリンクを含む
    - not:  # 以下の条件を満たさないファイル
        - file.hasTag("book")  # 「book」タグを持たない、または
        - file.inFolder("Required Reading")  # 「Required Reading」フォルダにない

# === 2. カスタム計算式(フォーミュラ)の定義 ===
# 既存のプロパティを組み合わせて新しい値を計算
formulas:
  # 価格を「○○ dollars」形式で表示(priceプロパティが存在する場合のみ)
  formatted_price: 'if(price, price.toFixed(2) + " dollars")'
  # 1歳あたりの価格を計算(price ÷ age)、小数点以下2桁まで表示
  ppu: "(price / age).toFixed(2)"

# === 3. 表示するプロパティの設定 ===
# テーブルに表示する列とその表示名を定義
properties:
  status:  # statusプロパティを表示
    displayName: Status  # 列見出しは「Status」
  formula.formatted_price:  # 上で定義したフォーミュラを表示
    displayName: "Price"  # 列見出しは「Price」
  file.ext:  # ファイル拡張子を表示
    displayName: Extension  # 列見出しは「Extension」

# === 4. ビュー(表示方法)の定義 ===
# 実際にどのように表示するかの設定
views:
  - type: table  # テーブル形式で表示
    name: "My table"  # このビューの名前
    limit: 10  # 最大10件まで表示
    filters:  # このビュー専用の追加フィルター
      and:  # 以下の両方の条件を満たすもののみ表示
        - 'status != "done"'  # statusが「done」でない
        - or:  # かつ、以下のいずれかを満たす
            - "formula.ppu > 5"  # 1歳あたり価格が5より大きい
            - "price > 2.1"  # または価格が2.1より大きい
    order:  # 表示する列の順序
      - file.name      # ファイル名
      - file.ext       # ファイル拡張子
      - note.age       # ノートの経過時間
      - formula.ppu    # 計算された1歳あたり価格
      - formula.formatted_price  # フォーマットされた価格

この構文を見ると、YAMLに似ていますが、formulas部分では独自の関数(concathourminutedateBeforeなど)が使用されており、いちおう独自の言語という感じですね。

データの保存場所は従来通り

重要ポイントは、Basesプラグインを使っても実際のデータはMarkdownファイルとYAMLフロントマターに保存されるという点でしょう。つまり、

  • ノートの中身は従来通りMarkdown形式
  • メタデータ(プロパティ)は従来通りYAMLフロントマター
  • .baseファイルは「どのように表示するか」の設定のみ

これにより、Basesプラグインを無効にしても、これまで通りノートにアクセスできるというか、Baseはあくまで見た目側というか表で表示するための計算などを担当していて、データの大本であるMarkdownのメモは触らない仕組みっぽい。

現時点での制限について

Basesプラグインはまだベータ版のため、いくつかの制限があります:

表示形式の制限

現在サポートされているのはテーブル表示とカード表示のみです。将来的にはリスト表示なども追加される予定ですが、今のところはこの二択です。

Obsidian Roadmap
We’re chipping away at improvements to Obsidian. Learn about what’s coming next.

画像表示の制限

画像プロパティがあっても、現在のBasesプラグインでは画像を表示できません。例えば読書管理で本の表紙画像を表示したい場合などに不便ですねぇ。

学習コスト

GUIでの設定はかなり直感的ですが、高度な機能(フォーミュラなど)などはお勉強しないとね。

DataviewプラグインとBasesプラグインの棲み分け

既存のDataviewプラグインユーザーとしては、「Basesプラグインに乗り換えるべき?」なんでしょうかね?

Dataviewプラグインの利点

  • より柔軟なクエリが書ける
  • 画像表示が可能
  • リスト表示、テーブル表示など多様な表示形式
  • JavaScriptによる高度なカスタマイズが可能

Basesプラグインの利点

  • 公式プラグインなので安定性が高い
  • GUIでの設定が直感的
  • プログラミング知識がなくても基本機能は使える
  • 将来的な機能拡張が期待できる

現時点では、シンプルな用途ならBases、高度な機能が必要ならDataviewという棲み分けになりそう。

脚注機能も地味に嬉しい

今回のアップデートでは、Basesプラグインの影に隠れがちですが、Footnotes view プラグインも追加されました。

直訳すれば脚注表示ということだから、Markdownでたまに思う「脚注書けたらなあ」が改善されたってことかな?

というのも、これまでMarkdownでは、本文中に[^1]と書いて、ノートの最後に[^1]: 脚注の内容と書くことで脚注になりました。長いノートになると、脚注を確認するためにスクロールするのが面倒!

新しいFootnotes viewプラグインでは、サイドバーに脚注一覧が表示されるため、スクロールせずに脚注の確認・編集ができるようになりました。地味ですが、論文やレポートを書く際にとても便利な機能ですねぇ。

結論

新しく導入された.baseファイルはどうなんだろうね。

ObsidianをMarkdownメモ帳アプリとして使っているから、余計なファイル形式は便利であっても使いづらいなあ。

実際、便利だろうなあとは思っていてもCanvas機能とは使っていないし。

でも、さすがにデータベースとして使えるのはゲームチェンジャーな気もするけれどどうなんだろうね。

それにアイコンや余白なんかのデザイン的な改善もあったようで、なんか見た目が可愛くなったね。

Read more

怪物の口に幸福が吸い込まれる

幸福の総量を最大化する。それが正しいと言われてきた。しかし1974年、ロバート・ノージックはたった一つの問いでその前提を破壊した。もしある存在が、他の全員よりも圧倒的に多くの快楽を得られるなら、功利主義は全員の取り分をその「怪物」に差し出すことを要求する。 あなたの幸福は計算の端数だった。切り捨てられた。 幸福を貪る口 1974年、ロバート・ノージックは『アナーキー・国家・ユートピア』のなかで一つの思考実験を置いた。 功利主義は、効用の怪物の可能性によって困惑させられる。怪物は、他の人々の犠牲から、その人々が失う以上に圧倒的に大きな効用の増加を得る。 仕組みは単純だ。功利主義の原則に従えば、社会全体の幸福を最大化する資源配分が「正しい」。ここに一人、あらゆる資源からとてつもない快楽を引き出す存在が現れたとする。りんご一個で他の百人分の快楽を得る。映画を一本見れば千人分の歓喜を感じる。 功利主義はこの怪物にすべてを差し出すことを要求する。他の全員が飢えても、怪物の快楽が総量を上回る限り、それが「最善」だと計算は告げる。 ノージックが示したかったのは、功利主義が論理的に正し

By Sakashita Yasunobu

綱を引く手が一本ずつ消えていく

あなたは集団のなかで、少しずつ消えている。 それは比喩ではない。測定可能な事実だ。19世紀末、フランスの農学者マクシミリアン・リンゲルマンは、人が集団で綱を引くとき、一人あたりの力が確実に減少することを発見した。人数が増えるほど、個人は薄まる。誰のせいでもなく、誰も怠けているわけではなく、ただ構造がそうさせる。 もしあなたがいま、何かのチームに属しているなら、あなたはすでに全力を出していない。そしてそのことに、おそらく気づいてもいない。 綱を引く手が教えたこと リンゲルマンの実験は素朴だった。 1880年代から1900年代初頭にかけて、彼は農業機械の効率を研究する過程で、人間が集団で水平方向に荷を押したり引いたりする際のパフォーマンスを測定した。その結果は1913年に報告されている。一人で綱を引くとき、その人間は持てる力をすべて発揮する。二人になると、一人あたりの出力は約93%に落ちる。三人で85%。八人になると、49%。半分以下だ。 この数字の意味を考えてみてほしい。八人で綱を引いているとき、あなたは一人のときの半分も力を出していない。しかもそのことに自覚がない。全員が

By Sakashita Yasunobu

嘘が真実を食い尽くす朝

「この文は嘘である」 この一文を前にして、あなたは立ち往生する。もし真だとすれば、文の内容に従って偽になる。もし偽だとすれば、「嘘である」という主張が間違っていることになり、真になる。真だと仮定しても偽だと仮定しても、反対の結論にたどり着く。出口がない。 これは言葉遊びではない。2300年以上にわたってこの問いに取り組んできた哲学者と論理学者たちは、いまだに合意に至っていない。解決策はいくつも提案されてきた。どれも、別の問題を抱えている。 あなたが自分自身について何かを語ろうとするとき、同じ構造がそこにある。 循環の入口 試しにやってみてほしい。「この文は嘘である」が真か偽か、判定する。 真だと仮定する。この文は「嘘である」と主張しているのだから、偽になる。仮定と矛盾する。 では偽だと仮定する。「嘘である」という主張が偽ということは、嘘ではない。つまり真になる。やはり仮定と矛盾する。 どちらに転んでも矛盾する。そしてこの矛盾は、推論のどこかでミスを犯したから生じたのではない。前提そのものに埋め込まれている。 エピメニデスの不発弾 よく混同されるが、古代ギリシアの

By Sakashita Yasunobu

何でも飾れる額縁だけが残った

1917年、マルセル・デュシャンは既製品の男性用小便器に「R. Mutt」と署名し、「泉(Fountain)」と名づけてニューヨーク独立芸術家協会の展覧会に出品した。拒否された。それだけの話だ。だが「それだけ」のはずの出来事が、それ以降のすべての芸術を汚染した。美しさも技巧も素材の選択も関係ない。署名ひとつ、提示の身振りひとつで、便器が「芸術」を名乗れる。そしてその瞬間から、「芸術とは何か」という問いは回答不能になった。回答不能のまま、100年以上が過ぎている。 目で見えないものが芸術を決める 1964年、アンディ・ウォーホルはスーパーマーケットに並ぶブリロの箱と見た目がまったく同じ「ブリロ・ボックス」をギャラリーに置いた。哲学者アーサー・ダントーは、この事態に根本的な問いを見出した。視覚的に区別できない二つの対象のうち、片方だけが芸術である。では芸術を芸術にしているのは何なのか。 ダントーの答えは「アートワールド」だった。芸術作品を芸術たらしめるのは知覚可能な性質ではなく、理論と批評と歴史が編み上げた解釈の共同体、その「理論的雰囲気」なのだと。あなたには何も見えていない。文字

By Sakashita Yasunobu