Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian dataviewでメタデータを活用しよう

前回、入力ボックスを検討しましたが、別の技がありました。

Dataview

dataviewはキーの埋め込みができます。 「key::テキスト」とすると「dv.current().key」で「テキスト」を拾うことができる。 「dv.pages('').key」とすると、全ファイルから「key::なんとか」の部分を集めてきます。

これを「メタデータ」と呼びます。 たぶんdataviewの最大の特徴でしょう。 ただのテキストがそのままデータベースに早変わり。 書式の縛りもない。

このメタデータを応用して「アプリ」を作ることもできます。

Unicode

文中に「部首::」という一行を設け、その文字を拾って表を作る方法。

部首::

```dataviewjs
a = dv.current().部首
if(a){
  k = a.codePointAt(0)
  s = ""
  for(i=0; i<500; i++){
    s+= String.fromCodePoint(k + i) + " "
  }
  dv.span(s)
}
```

使い方

「部首:: 水」と書くと、サンズイの漢字リストが表示されます。 「部首:: 犬」にするとケモノヘン。 「部首:: 鳥」ならトリヘン。 「部首:: 馬」ならウマヘン。

「部首::」がdataviewjsのコードとは別のところにあるのに、そのデータが反映してスクリプトが実行されます。 しかもキーは「dv.current().部首」と漢字のままで構いません。 おいおい、と思うくらい融通性の高い仕様です。

メタデータ

メタデータは [key:: データ] と書くことで明示できます。 どの範囲がデータかわかりやすい。 しかもリーディングビューにするとメタデータは非表示になります(という仕様だけど、iPadでは出てしまいますね)。

また、フロントマターに埋め込むこともできます。 そのときは「key:データ」と書けば良く、コロンが一つで済みます。

部首が出せない

ニンベンの「亻」より「人」のほうがコードでは先になります。 これはUnicode表の不思議なところで、部首より常用漢字が先になります。

でもシンニョウ「辶」は「辶」じゃないと出てこないのです。 この法則性がとんとわからない。 結局ネットで調べちゃうんだよなあ。

まとめ

今回のポイントはメタデータのほう。 部首の謎ではありません。

少子化の利点

なぜ「少子化」が問題視されるかと言えば、日本社会が「代わりはいくらでもいる」のロジックで動いてきたからだろうなあ。 団塊の世代ジュニアが犠牲になって、この30年を支えてくれていた。

でもそれはおかしなことだから。