/ 2026.02.03 /
maniac /
_debris tsv埋め込みについて
context
- 脱NotionするためにジェネリックNotionDBをローカル環境で実現した
- 元々はNotionで外部公開していたものだったので、自分のサイト上で公開したい
- 現在はobsidianでドキュメントを管理しているのでobsidianのBases1を使うか?
- 検討したが自分が期待していたものとは違った
- あくまで資産であるmdをDB(あるいはlist)化するアプローチとしてのBasesという理解
- baseという独自拡張子がひっかかった
- 内部的にはyamlらしいがそれでも・・・・・・うーん
- 検討したが自分が期待していたものとは違った
- やっぱりtsvをそのまま活用するアプローチにした
- tsv形式自体が長期的にみても手堅いファイル形式だと判断
- 構造も至ってシンプル
- tsv編集はobsidianでは出来ないのでエディタを使って編集する
- smoothcsvが最高
- ドキュメント(md)にどう埋め込むか?
- Markdownのtable構文は地獄味あるし使いたくない
- 最初はtsv->table構文変換を考えた
- Markdownのtable構文は地獄味あるし使いたくない
specifications
obsidian上での運用
- vault内にディレクトリを掘って、そこにtsvを格納・管理を行う
- 各ドキュメント(md)への埋め込みはlink構文で記述する
- tsvの編集方法は以下の2つを採用する
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)
| Name | Category | Color | Created |
|---|---|---|---|
| apple | fruit | red | 2026-02-03 |
| banana | fruit | yellow | 2026-02-01 |
| orange | fruit | orange | 2026-02-02 |
| bear | animal | brown | 2006-10-10 |
demo2
[testTable|disable=search?sort=name?filter=category?publish=name&category&color](996_data/test.tsv)
| Name | Category | Color |
|---|---|---|
| apple | fruit | red |
| banana | fruit | yellow |
| orange | fruit | orange |
| bear | animal | brown |
notes
- 現在はlogカテゴリがtsv埋め込み機能を使って投稿されたものとなっている
- TOPページも内部的にはtsvをパースしてtable変換したもの
- 同じフォーマットで情報が蓄積されていく様を眺めるのはやっぱり最高
- 読み物とは違う楽しさがある
- UL登山界隈だとパッキングリストをgoogleスプシで公開してたりする