メタデータの勉強をしました。 なるほど、これを使うならフロントマターが完璧で究極だわ。 そのための入口を開いてみましょう。
Book Search
Book Searchをまず導入します。 GoogleBooksを検索するプラグインです。 コミュニティプラグインからインストールしてください。
使い方
あらかじめ、設定で保存先をbookフォルダとします。
リボンにボタンがあるので起動。 キーワードを尋ねてくるので、著者名でも題名でも構いません。 入力すれば検索結果がリストアップされます。
選択するとデータがbookフォルダに保存されます。
基本情報
ファイルのフロントマターにタイトルや著者名などが入ります。 ここに読後感想とか追記して肥やしていく。
それにしても情報量が多い。 簡単な要約まで埋め込まれてます。
BookList.md
dataviewで下記スクリプトを作ります。
```dataviewjs
d = dv.pages('"book"')
.sort(x => x.publishDate, "desc")
.map(x => [ "![image|60]("+x.coverUrl+")", dv.fileLink(x.file.name, false, x.title), x.authors, x.publishDate])
dv.table(["著書", "題名", "著作者", "発刊日"], d)
```
これをリーディングビューで見るとリスト化します。
あら、わかりやすい。 題名をタップするとファイルが開きます。
検索
さらに検索もできるようにしましょう。
検索::
```dataviewjs
const a = dv.current().検索
d = dv.pages('"book"')
.filter(x => x.file.name.includes([a]))
.sort(x => x.publishDate, "desc")
.map(x => [ "![image|60]("+x.coverUrl+")", dv.fileLink(x.file.name, false, x.title), x.authors, x.publishDate])
dv.table(["著書", "題名", "著作者", "発刊日"], d)
```
「検索::」のあとにキーワードを入れると絞り込みをします。 対象にしているのはファイル名なんですけどね。 一応、題名と著作者名を検索することができます。
蔵書検索
入力欄を使うと、dv.table()は多重に表示してしまう。
なので、あっさり書影を並べるタイプも考えました。
```dataviewjs
dv.span("蔵書検索")
const a = dv.el("input")
a.placeholder = "keyword"
a.style = "font-size:18px;background:whitesmoke;width:100%;"
dv.paragraph("---")
const b = dv.el("div","")
a.onkeyup = function(){
d = dv.pages('"book"')
.filter(x => x.file.name.includes([a.value]))
.sort(x => x.publishDate, "desc")
.map(x => "<a href=obsidian://open?file="+encodeURI(x.file.name)+"><img width=98 src="+x.coverUrl+"></a>")
b.innerHTML = d.join(" ")
}
```
これをリーディングビューにするとこんな感じ。
ふふふ、気に入った。
まとめ
ほらほらこれは「データベース」。