Jazzと読書の日々

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

Obsidianの蔵書管理にアスクリストを

読書メモは疑問から始まる。

ObsidianにはBookSearchプラグインがあり、Google Books の書籍情報を拾うことができます。 これが蔵書管理には最適。 本のサブタイトルや著者名、発行日をプロパティに収めてくれる。

設定の「Preferred locale」を「ja」にしてください。 日本の書籍を検索します。

Books.md

BookSearchのデータを閲覧するdataview。 今回アスクリストを付けてみました。 ノートにタスクリストがあるとそれを表示します。 読んで疑問に思ったことをメモします。

```dataviewjs
const FOLDER = "book"

dv.span(">[!test]- `$= dv.pages('\"" + FOLDER + "\"').file.tasks.filter(x => !x.completed).length` asks\n>```dataview\n>task from \"" + FOLDER + "\" where !completed group by file.link\n>```\n")

const p = dv.el("input","")
p.placeholder = "..."
p.style = "font-size:large;border-radius:3px;"
const btn = dv.el("button", "+")
btn.style = "font-size:small;margin:5px;width:40px;"
const b = dv.el("div", "")
b.style = "max-height:14000px;"
disp()

p.onkeyup = () => disp()

btn.onclick = () =>{
  navigator.clipboard.writeText(p.value)
  s = "obsidian-book-search-plugin:open-book-search-modal"
  app.commands.executeCommandById(s) 
}

function disp(){
  const  d = dv.pages(`"${FOLDER}"`)
  .filter(x => (x.title + x.subtitle + x.author + x.description).includes([p.value]))
  .sort(x => x.file.ctime, "desc")
  .map(x => `<tr style="font-size:small;padding:4px;"><td><img style="max-width:60px;" src="${x.coverSmallUrl}"></td><td><a class=internal-link href="${x.file.name}">${x.title}</a></td><td>${x.author}</td><td>${(x.publisher || "")}</td><td>${x.publishDate.toLocaleString()}</td></tr>`)
  b.innerHTML = "<br><table style='width:100%;'>" + d.join("\n") + "</table>"
}
```

変数FOLDERにBookSearchのフォルダを設定してください。

実はdv.pages()に変数を使う方法を見つけ、嬉しかったので書き直したスクリプトです。 今までフォルダの指定に難儀してたものなあ。 ひらめくまでに時間がかかった。

使い方

アスクリストにタスクの数が表示されます。 タップすると該当の「疑問」が開く。 解決したらチェックして消していきます。

検索欄でデータの絞り込みもできます。 タイトルと著者名、あとdescriptionのところも検索対象になります。 関連ありそうなら表示する方針。

さらに検索欄右横の「+」。 タップするとBookSearchを起動します。 そのとき検索欄の内容をクリップボードに保持するので、それをペーストして検索してください。 この方法が手早い。

リンク

タイトル名をタップすると元ノートが開きます。

従来は書影をリンクにしていたのですが、オフラインのとき書影の取得ができず、ノートが開けませんでした。 デザイン的にまずい。

ノートを開いてタスクリストを書き込む。 これを「アスクリスト」として表示しようという作戦です。 本を読んで疑問を持つ。 その疑問が次の読書への足がかかりになる。 そうした連鎖が起きると面白いかな。

まとめ

図書館イズム 1.3.4
分類: ブック,ライフスタイル
価格: 無料 (Manabu Ueno)

データ構造は「図書館イズム」を参考にしています。 テンプレートに「ステータス」や「読了日」を追加しておくと、いろいろ便利。

「ステータス」は「読みたい」とか「読書中」とか書くプロパティで、これがあると「まだ買ってないけど読みたい本」も入れておくことができます。 そういう本ってタイトル忘れちゃうから、気になったら即登録。