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

京都一日ぶらり旅

京都一日ぶらり旅

大阪に向かう用事があったので、前日を利用して京都を一日観光します! 京都には新幹線で! 観光案内所が開くまでは、京都駅をぶらぶら。 観光案内所ではパンフレットや地図、一日券を手に入れて、いざ京都を遊ぶぞ! 清水寺 長ーい坂を上って、ようやく清水寺へ。 八坂神社 哲学の道 銀閣寺 貴船神社行くぞ~! 天下一品総本店 岡崎神社 帰路につく お疲れ様でした

By Sakashita Yasunobu
北海道登别温泉游记:在"地狱"中寻找人间仙境

北海道登别温泉游记:在"地狱"中寻找人间仙境

"山中何所有?岭上多白云。"初到登别,我便想起了陶弘景的这句诗。只是这里的白云,不是飘在岭上,而是从地底升腾而起,氤氲缭绕,如梦如幻。 这座被誉为"温泉百货公司"的小镇,藏着日本11种温泉泉质中的9种——这样的天赐恩泽,即便放眼全球也是凤毛麟角。 初识登别 从新千岁机场出发,我选择了最便捷的直达巴士。窗外的北海道风光如画卷般展开,大约一个多小时,登别温泉的牌坊便出现在眼前。若是从札幌出发,JR北海道的特快列车也是不错的选择,在登别站下车后转乘巴士,很快就能抵达温泉街。 温泉旅宿 百年老店第一滝本馆 在第一滝本馆的大厅里,放置着一根高九米、重达十吨的镀金大金棒,赫然入目气势非凡。这家创立于1858年的老字号温泉旅馆,背后有着一段动人的故事。 创始人滝本金藏的妻子曾患皮肤病,在登别温泉很快痊愈。这神奇的疗效让滝本先生当即决定在此建造温泉旅馆,让更多人享受温泉的恩泽。166年过去了,这份初心依然在每一滴温泉水中流淌。 在大浴场里,5种不同泉质的温泉水各有其妙。这里采用"放流式"——温泉水直接从源头流入,

By Sakashita Yasunobu
曾经的"北方华尔街"小樽深度游记

曾经的"北方华尔街"小樽深度游记

从JR札幌站出发前往小樽,短短32分钟的车程。窗外的风景从现代都市逐渐过渡到怀旧小镇,我的心情也渐渐从都市的喧嚣中沉静下来。电车沿着海岸线驶向小樽,这座曾经被称之为"北方华尔街"的小城。 列车在小樽站停靠,随着人群我走出月台。 如果你像我一样是个喜欢深度体验的旅行者,不妨考虑在KITARINN租一辆电动脚踏车。小樽的坡道不少,电动车会让你的探索之旅轻松很多。我来到站前叫KITARINN自行车租赁(这里还提供行李寄存服务),我们租到一辆电动自行车。老板娘是个热情的人,她用简单的中文跟我们打招呼。 如果您带着孩子或者长辈同行,可以步行两分钟直接前往旁的中央巴士总站。这里的巴士线路四通八达,不仅可以到达市内各个景点,还能前往积丹、札幌、余市等地。对于行程紧凑的游客来说,这无疑是最省力的选择。 华尔街的金色记忆 大约骑行五分钟左右,我便来到了色内街。这里曾经是小樽金融业的心脏,虽然昔日的荣华繁华不再,但那些石制建筑如同这座城市历史的守望者依然威严挺拔。 首先似鸟美术馆映入眼帘时,我被那典雅的建筑风格深深震撼。这座原北海道拓殖银行小樽支店的建筑,见证了《蟹工船》作者小林多喜二的青春

By Sakashita Yasunobu
指宿沙蒸温泉游记

指宿沙蒸温泉游记

玉手箱列车开启指宿之旅 前往沙蒸温泉胜地指宿是我两个月前就开始酝酿的计划,特意选择了乘坐传说中的特急玉手箱号观光列车。说到"玉手箱"的由来,就不能不提及那个在日本家喻户晓、记载在《日本书纪》和《丹后国风土记》中的古老传说。 善良的渔夫浦岛太郎救了一只海龟,被邀请到龙宫做客。在那里,他与美丽的乙姬公主一见钟情,在如梦似幻的海底世界度过了三年时光。当思母之情涌上心头,决定返回人间时,乙姬公主送给他一个精美的玉手箱,千叮咛万嘱咐切不可打开。然而,当浦岛太郎回到故乡,却发现人间已过三百年,熟悉的一切都已不复存在。无比悲痛的他违背了诺言,打开了那个神秘的玉手箱,瞬间从青壮少年变成了白发苍苍的老翁。 据说设计师水户冈锐治正是从浦岛太郎打开玉手箱的瞬间中汲取了灵感。当我亲眼看到指宿玉手箱列车那黑白相间的车身设计,看到停靠时从车顶喷出后飘散而去的白色水雾,不禁为设计师如此传神地将神话传说与现代列车设计融合的妙想而深深折服。 JR KYUSHU D&S TRAINS D&S列車の旅 特急指宿のたまて箱JR KYUSHU D&S TRAINS D&

By Sakashita Yasunobu