ナレッジスタック

Share this post
Obsidian Dataviewを使って同じタグの前後の記事へのリンクを作る
knowledgestuck.substack.com

Obsidian Dataviewを使って同じタグの前後の記事へのリンクを作る

🔧005 Dataviewを仕事術に取り入れて、面倒な処理を楽にする

goryugo
Nov 5, 2022
7
Share this post
Obsidian Dataviewを使って同じタグの前後の記事へのリンクを作る
knowledgestuck.substack.com

Obsidian仕事術、というのを思いついていろいろなやり方を考えていたら、ついにObsidianの有名プラグイン「Dataview」に手を出してしまいました。

Dataviewは、現在Obsidianのプラグインインストールランキングで第2位になっている「難しいけどなんかすげえ」の代表格のプラグインです。

(参考までに、プラグインランキングの1位はAdvanced Tables。かつてダントツ1位だったCalenderは現在5位。このあたりもObsidianというツールの特異性を物語っているようで面白いです)

Dataviewという名前の通り、このプラグインを一言で説明するならばObsidianのノートを「データベース」のように使えるプラグインです。

blacksmithgu/obsidian-dataview: A high-performance data index and query language over Markdown files, for https://obsidian.md/.

個人的には「データベースが作りたいならObsidianじゃなくてNotion使えばええやん」と思ってて、そういう理由でわりとDataviewというプラグインは「食わず嫌い」のままでいました。

今でも「データベースが作りたいならObsidianじゃなくてNotion使えばええやん」という感覚は変わらないんですが、そうじゃなくてもDataviewは使いどころがいっぱいあるぞ、ということに気がついてしまったのです。

Dataviewというプラグインは、どうしてもその名前からデータベースとしてデータを整理することをイメージしてしまうんですが、もう少しタスク管理的な方面。要するにDataviewを「仕事術」に取り入れて、面倒な処理を楽にすることにも活用できそうなのです。

ファイル名から日付を認識して処理ができる

Dataviewについていろいろ調べてみて、特に面白と感じたのはファイルに書かれた日付も認識してくれるというところでした。

たとえば以下のようなノートへのリンク。

一見、タイトルに日付を含んだノートへのリンクが並んでいるだけに見えますが、これはDataviewを使って自動で表示しています。

LIST
FROM #draft 
WHERE file.day >= date(today)
SORT file.day ASC

Obsidianに↑のように記述すると「draftタグ」が付いたノートの中から「ファイルに書かれた日付」「今日よりも先」のノートを「昇順で」並べる、ということが実現できます。

たとえばこれを、デイリーノートにテンプレートとして組みこんで挙げると、デイリーノートの中に「今日の日付」が含まれるノートを表示させる、なんてことも可能です。(日付付きファイルを使ったタスク管理に使えそう)

LIST FROM !"Daily" WHERE file.day = date(2022-11-04)

他にもたとえば、ファイル作成日を基準にして、去年作ったノートをデイリーページで表示させる、ということも可能。

LIST
WHERE file.cday = date(2022-11-04) - dur(1 yr)

あとは、なんだかんだ結構便利だったのが、読んだ本を読了日を基準にして並べるという、まさにDataviewの典型的な使い方。

10月から11月に読んだ本を表示

TABLE WITHOUT ID file.link AS 書籍名 ,date AS 読了日, url AS Amazon
FROM "notes/Book"
WHERE date >= date(2022-10-01)
WHERE date <= date(2022-11-30)
SORT file.day ASC

こういう管理の仕方は、本来的なmarkdownから外れてしまい、他のアプリでの表示に難があったりするし、標準のマークダウンファイルに比べてファイルの堅牢性は劣ります。

ただ「読んだ本のリスト」なんてものは情報としては「上っ面」に属する部分であって、本質ではない。

元になる読書メモさえちゃんと残っているのであれば、リストなんかは極論「使えなくなってもいい」という風に考えることもできるんじゃないか。Dataviewを使っていたらそんな風に考えるようになってきています。

これ以外にも、Dataviewを使って今週新しく作ったノートを表示させるとか、1年間更新されていないファイルの表示、どのノートからもリンクされていないノートを見つけるだとかも(やってないけど)仕組みの上では実現可能。うまく設定してあげれば、アトミック・ノートのメンテなんかにも活用できるかもしれません。

また、ノートに書かれているタスク(-[]で記述するもの)などもDataviewから取得できるので、Obsidianでタスクを活用している人などもうまく使えばかなり便利になることが予想できます。

「週次レビュー」みたいなやつで1週間分のノートを振り返ったりするときも、Dataviewで「今週の成果」を一覧表示させれば、振り返りも多少は楽になるでしょう。

Dataviewは非常に奥が深く、まだまだ具体的にどうすると便利なのかは試行錯誤している段階です。

そんな中で、ひとまず「これがやりたかった!」ってやつが1つ実現できたのと、この方向でかなり便利に使えそうだ、というのがあるので、今回はひとまずその2つだけを具体的に紹介します。

同じタグがついた「前後の日付のノート」へのリンクを作る

とにかく面倒でどうにかしたかったのが、同じタグがついた「前後の日付のノート」へのリンクを作る、ということでした。

たとえばの話をすると、ナレッジスタックでお届けしているニュースレターはだいたい「シリーズ」が決まっています。

こういうのを新しく書こうとするときに「前回書いたもの」がすごく役立ちます。

「セミナー動画のアーカイブ」なんかにしても、だいたいの文面は前回書いたものを踏まえて、それをアップデートする感じです。

Podcastの更新やセミナー動画への招待リンクの送信なども、大抵はほぼ「前回と同じ」なんだけど、テンプレートを作るほど頻度は多くないし、テンプレートが増えすぎて使いにくくなるのも嫌だ。

いろいろ細かな理由はあるんですが、とにかく「前後のノート」へのリンクを「楽に」作りたいと思ってて、それがようやく実現できました。

このファイルをObsidianのテンプレートフォルダに入れてもらえば、簡単に「同じタグがついたノートの中で」「そのノートの日付前後の記事」へのリンクが自動で生成されるようになります。(#tagの部分を目的のタグに書き換える。タグを書くところが3つある)

Frontmatter(先頭のパラメーター入力部)にtitle, subtitle, urlを入力できるようにしていて(まだ手を付けてないけど)「今月更新したノート」などをニュースレターにコピペするだけで一覧を作れるようにしよう、というのも(将来的な目標として)考えていたりします。

最初はテンプレートから書き出すのでタグを書き換える手間が発生しますが、以降は「前回のヤツを丸っとコピペ」(あらかじめ1つ先のファイルまで用意する)ことでかなり手間が減ります。

個人的にはこのためだけでもDataview使う価値があるわ、と感じている部分で、ここは、次回のセミナーなどでも簡単に紹介しようと考えています。

ファイルのダウンロード→

Keep reading with a 7-day free trial

Subscribe to ナレッジスタック to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2023 五藤隆介@goryugo
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing