ごらくらいふ

プログラミングしたりゲームしたり

読書カードをObsidian Propertiesで書いてみる

Obsidian v1.4.0 にて Properties という機能が追加された。 これは、YAMLフロントマターを拡張し、ユーザーが自由にキーと値を割り当てられるようにしたものである。

これを、読書カードに用いてみようと思う。

読書カード

読書カードの目的は「本を読んだことを記録する」ことである。どんな本を、いつ買って、いつ読んだのか。読書カードを作ればあとで振り返ることができ、読書の実績が明らかになる。 さらに、Obsidianで扱う上では、リンクを貼ることで知見の引用元を示すことにも使えるのだ。

読書カードに求められる内容はたいてい決まっている。ということは、構造化データにできる。 とりあえず私が用いているのは以下のようなものだ。

  • タイトル
  • 著者
  • ページ数
  • 出版社
  • 発行日
  • 初版
  • 読了日

書き方の変遷

読書カードの内容は構造化できることはわかった。しかしちょうどいい書き方がこれまで決められなかった。以下はその変遷である。

  1. 箇条書き
    • 一行で key:value を書く書式
    • 「:」の位置が揃わず見た目が汚い
  2. 和地空白で見た目を整えた箇条書き
    • とくに key:value で言うところの key 部分
      • 著 者:発行所: とか
    • 3文字に制約されたりする
    • 見た目のためにデータを壊してはならない
  3. テーブル表現で整える
    • 拡張機能が無いとつらい
    • Markdown Viewer で見えれば良いようなガタガタのテーブル記述は嫌だ
      • 書いているのは Markdown 文書である。生のテキスト文書としての見た目も考慮されなくてはならない
  4. 見出しと本文
    • Markdown文書としては正しい形
    • 見出し1行、内容1行なのでスカスカしており、目が滑る
    • 検索性もなにもない

Obsidian Properties

読書カードの項目に Properties を使うと何が得られるか。

  • Properties なら、見た目が整う
  • Properties なら、検索性が得られる
  • Properties なら、データの構造を損ねない
  • Properties なら、入力補助が得られる
    • テキスト、テキストリスト、数値、日時などがある

Properties の制約

  • 一部予約されている項目がある(aliases, tags, cssclasses)
  • キーを定義すると、Vault全体で共通の型として扱われる
  • キーの幅は狭く、asciiで11文字くらいしかフルで表示できない
型を壊してみた
  • 型に合わない変更を行うと確認のダイアログが出るが、強行できる
  • TextDate にするなど、扱えないデータの場合は単純に無視される
  • TextList の間には特別な処理が挿入されていて、ある程度互換性がある

読書カードにPropertiesを使ってみた

  • 絵文字のプレフィックス📖を付けてみた
  • 読書カード用のテンプレートを用意し、あらかじめキーを入力しておいた
  • 検索はしやすくなった
    • ["📖/読了日": 2023] などと絞り込める

所感

  • 機能として補助が入るので、書いてEnterを押せば次の項目に遷移するため、若干入力しやすい
  • プレフィックスを付けたものの、キーが同じで型が異なるユースケース、あるだろうか
    • まぁ、まとめるのは楽だが細分化するのは大変なので、分けておく
      • アップキャスト、ダウンキャストの話みたいだな
  • もはやYAMLフロントマターが主役なので、 Markdown文書ではない
    • 本文には気になった参考文献でも書いておこうか
  • 結局、検索にI/O負荷がかかるので、特定ファイルを最速で開きたければきちんとファイル名をつけてクイックスイッチャーで開くのがよい