Jazzと読書の日々

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

Obsidian Roomの起動が重い

ObsidianはまずRoomを開くようにしています。 ところが最近このページが固まる。

Room

数分すると操作できるようになるので調べてみると、タスク・カウンターが悪さをしていました。 正確に言うと、ファイル全体のタスクリストをチェックするため、その時間分操作を受け付けなくなっていた。 いいことがあれば悪いこともある。

タスクを作ることが増えたからなあ。 でもこれではホームページとして使えません。 それでタスク・カウンターを外したバージョンに戻すことにしました。

Room.md

dataviewを使ってScrapboxのようなページを作ります。

Import Obsidian: Room

```dataviewjs
const FOLDER = "keyword/"
const s = "background:ivory;width:119px;height:112px;border:1px solid #eee;border-top:8px solid gold;text-decoration:none;padding:3px;border-radius:3px;margin:3px;overflow:hidden;float:left;"

dv.paragraph(">[!info]- Room\n>```dataview\n> task where !completed group by file.link\n>```\n")
const p = dv.el("input")
p.placeholder = "..."
p.style = "font-size:large;background:whitesmoke;border-radius:3px;"
const btn = dv.el("button","▶︎")
btn.style = "font-size:small;margin:5px;width:40px;"
const h = dv.el("hr", "")
h.style = "border:1px solid whitesmoke;margin:10px;"
const b = dv.el("div", "")
b.style = "font-size:small;font-weight:bold;height:4000px;"
disp()

p.onkeyup = () => disp()

btn.onclick = () => {
  q = encodeURI(p.value)
  if(q){
    open("obsidian://new?file=" + encodeURI(FOLDER) + q + "&content=%0A```query%0A" + q + "%0A```%0A")
  }else{
    open("obsidian://new")
  }
}

function disp(){
  r = new RegExp("("+ p.value +")","i")
  const d = dv.array(Object.entries(dv.app.metadataCache.fileCache))
    .filter(([x,y]) => r.test(x))
    .sort(([x,y]) => y.mtime, "desc")
    .limit(210)
    .map(([x,y]) => "<a class=internal-link style='" + s + "' href='" + x + "'>" + x.split("/").pop().replace(".md","") + "</a>")
  b.innerHTML = d.join("\n")
}
```

使い方

ファイル履歴がカード形式で並びます。 タップすればそのファイルを開く。 検索欄にキーワードを入れるとファイルの絞り込みになります。 正規表現が使えます。

Roomをタップすると未完了タスクを一覧します。 チェックすれば完了にできます。

検索欄右横の「▶︎」は新規ファイル作成です。 検索欄にキーワードがある場合はその言葉のクエリー・ファイルを作ります。 変数FOLDERで指定したフォルダにクエリー・ファイルを作成します。 クエリー・ファイルは 2 Hop Links の中継地点になります。

まとめ

RoomはObsidianの要です。 これが使えないとモバイルでは使い物にならない。 ファイルを開くまでの手数が多すぎる。 そこをショートカットするのがRoomです。