_debris tsv埋め込みについて

context

  • 脱NotionするためにジェネリックNotionDBをローカル環境で実現した
  • 元々はNotionで外部公開していたものだったので、自分のサイト上で公開したい
  • 現在はobsidianでドキュメントを管理しているのでobsidianのBases1を使うか?
    • 検討したが自分が期待していたものとは違った
      • あくまで資産であるmdをDB(あるいはlist)化するアプローチとしてのBasesという理解
    • baseという独自拡張子がひっかかった
      • 内部的にはyamlらしいがそれでも・・・・・・うーん
  • やっぱりtsvをそのまま活用するアプローチにした
    • tsv形式自体が長期的にみても手堅いファイル形式だと判断
    • 構造も至ってシンプル
    • tsv編集はobsidianでは出来ないのでエディタを使って編集する
  • ドキュメント(md)にどう埋め込むか?
    • Markdownのtable構文は地獄味あるし使いたくない
      • 最初はtsv->table構文変換を考えた

specifications

obsidian上での運用

  • vault内にディレクトリを掘って、そこにtsvを格納・管理を行う
  • 各ドキュメント(md)への埋め込みはlink構文で記述する
  • tsvの編集方法は以下の2つを採用する
    • 専用アプリケーション2を用いた編集
    • iPhoneからのレコード追加3

tsv埋め込みロジック

  • linkされたtsvをパースしtableに変換したうえでhtmlに埋め込む
  • link構文のalt属性部分にパラメータを記述することでtable変換時の見た目や機能をコントロールできるようにする
    • mdをプレビューする際には非表示となるのでノイズにもならない
  • dateがtsvヘッダーに存在している場合、かつソート状態未設定の場合はdateを降順で採用する

記述例

[movie-log|publish=*?filter=Review&Platform](996_data/cinema_log.tsv)
  • パラメータを複数指定する場合?で区切って指定する
  • 1つのパラメータ内で複数値を指定する場合&で区切って指定する

パラメータ一覧

  • publish: 表示する列を指定(* で全列)
  • filter: フィルタUIに出す列を指定(* で全列)
  • wide: 指定列の幅を拡張(Col:14ch など)
  • sort: 初期ソート対象列
  • dir: 初期ソート方向(asc / desc
  • disable: UI機能の無効化(filter / search

demo1

[testTable](996_data/test.tsv)
NameCategoryColorCreated
applefruitred2026-02-03
bananafruityellow2026-02-01
orangefruitorange2026-02-02
bearanimalbrown2006-10-10

demo2

[testTable|disable=search?sort=name?filter=category?publish=name&category&color](996_data/test.tsv)
NameCategoryColor
applefruitred
bananafruityellow
orangefruitorange
bearanimalbrown

notes

  • 現在はlogカテゴリがtsv埋め込み機能を使って投稿されたものとなっている
  • TOPページも内部的にはtsvをパースしてtable変換したもの
  • 同じフォーマットで情報が蓄積されていく様を眺めるのはやっぱり最高
    • 読み物とは違う楽しさがある
    • UL登山界隈だとパッキングリストをgoogleスプシで公開してたりする
  1. Introduction to Bases - Obsidian Help
  2. smoothcsv
  3. iOSショートカットを使ってiCloud上に置いたtsvにレコードを追加する
trackback* created updated category
related* created updated category
latest* created updated category