ObsidianのDataview入門:コピーして使えるクエリ付き実践ガイド
Dataviewは、ObsidianのVaultをデータベースのように検索できるようにするコミュニティプラグインです。普段どおりノートを書き、冒頭にいくつかプロパティを足すだけで、Dataviewがそこから常に最新のリストや表を作ります。今月が期限のプロジェクト、いま読んでいる本、2か月連絡していない取引先、といった一覧です。コピーも書き出しもしないので、ノートを変えればその場で表も変わります。このガイドでは、実際によく使うクエリを、当サイトのVaultに入っているダッシュボードの例とあわせて紹介します。
ObsidianのDataviewプラグインでできること
Dataviewはノートから3種類のデータを読み取ります。プロパティは、ノート冒頭の3本のハイフンで挟まれたYAMLブロックです。インラインフィールドは本文にキー:: 値の形で書くか、タスク行の角かっこの中に書きます。暗黙のフィールドはfile.name、file.ctime、file.tags、file.linkなど、Obsidianが最初から持っている情報です。クエリは言語をdataviewにしたコードブロックで、閲覧モードではリスト、表、タスク一覧、カレンダーとして表示されます。プロパティ付きのノートは次のようになります。
---
status: 進行中
due: 2026-11-27
owner: Lina
---
# Webサイトリニューアルキー(status、due、owner)は英語のまま、値だけを日本語にしています。日本語のキーも使えますが、日本語入力のまま打つと期限:のようにコロンが全角になり、プロパティとして認識されません。キーとコロンは半角英数で打つ、と決めておくのが一番確実で、当サイトのVaultもすべてこのルールです。
Dataviewをインストールして最初のクエリを書く
設定のコミュニティプラグインを開き、制限モードがオンならオフにして、「閲覧」からDataviewを検索します。インストールして有効化すれば準備完了で、最初のクエリの前に設定することはありません。ノートを作り、言語をdataviewにしたコードブロックを追加して、いちばん簡単なクエリ、フォルダ内の全ノートの一覧から始めましょう。
```dataview
LIST
FROM "プロジェクト"
```閲覧モードに切り替えると、このブロックがリンクの一覧になります。LISTをTABLEに変え、列にしたいプロパティを並べれば、プロジェクト管理表のできあがりです。
```dataview
TABLE status, due, owner
FROM "プロジェクト"
WHERE status = "進行中"
SORT due ASC
```Dataviewクエリの書き方:FROM、WHERE、SORT、GROUP BY
クエリはまず種類を書きます。LIST、TABLE、TASK、CALENDARのいずれかで、その後に任意のコマンドを続け、上から順に実行されます。FROMは対象を選びます。引用符で囲んだフォルダ、#本のようなタグ、または今のノートにリンクしているノートを表す[[]]です。AND、ORで組み合わせ、先頭にマイナスを付ければ除外できます。WHEREは条件に合う行だけを残します。たとえばWHERE status = "進行中"やWHERE due <= date(today)です。SORTは1つ以上のフィールドで昇順・降順に並べ替え、LIMITで行数を絞ります。コマンドは英語のままで、フォルダ名や値は日本語でかまいません。
表を本当に便利にするのがGROUP BYです。同じ値を持つ行をグループごとに1行にまとめ、元のノートはrowsというリストに入ります。length(rows)で数え、sum(rows.value)で合計できます。グループの値そのものはkeyです。次のクエリはステータス別にプロジェクトを数えます。
```dataview
TABLE rows.file.link AS "Notes", length(rows) AS "Count"
FROM "プロジェクト"
GROUP BY status
```つまずきやすい点が2つあります。ハイフンを含むプロパティ名は引き算と解釈されるので、row["date-started"]と書く必要があります。当サイトの読書ノートVaultも、読み始めた日をこの書き方で読んでいます。もう1つは、TABLEの後にWITHOUT IDを付けると、自動で入るファイル名の列を消せることです。1列目を自分で決めたいときに使います。
Dataviewでタスクを集める:Vault全体のチェックボックスを検索
TASKクエリはノートではなくチェックボックスそのものを返し、結果の上で直接チェックできます。Dataviewはタスク行にインラインフィールドで書いた期限を読み取り、Tasksプラグインの📅の日付も理解します。
- [ ] 修正版の見積書を送る [due:: 2026-10-28]```dataview
TASK
FROM "プロジェクト"
WHERE !completed AND due AND due <= date(today)
GROUP BY file.link
```タスクがシステムの中心なら、記法も繰り返し設定も充実しているTasksプラグインが向いています。両者の違いはObsidianのタスク管理ガイドで比べています。ノートやプロパティも並べるダッシュボードの一部としてタスクを出したいなら、Dataviewのほうが合っています。
当サイトのVaultにあるDataviewテーブルの例
ここで紹介するクエリは、どれもダウンロードできるVaultで実際に動いています。開けば本物のデータで結果を確認できます。プロジェクト管理Vaultは進行中のプロジェクトを期限順に表示します。D&DキャンペーンVaultのDMスクリーンは、GROUP BY locationでNPCを場所ごとにまとめています。読書ノートVaultは読書中の本と読み終えた本を評価付きで表示します。学生向けVaultはWHERE due AND due >= date(today)で今日以降の課題を一覧にします。いちばん踏み込んでいるのがObsidianのCRMテンプレートで、今週のフォローアップ、段階別の商談金額、60日連絡していない相手をdate(today) - last_contact > dur(60 days)で出しています。
DataviewとBasesの違い
Basesは2025年にObsidianに追加されたコアプラグインです。こちらもプロパティを表にしますが、クエリを書く代わりにクリックで表示を組み立て、表の中で値を直接編集できます。ベースは.baseファイルとして保存され、中身は読めるYAMLです。
filters:
and:
- file.inFolder("プロジェクト")
views:
- type: table
name: All
groupBy:
property: status
direction: ASCプラグインを入れずに、ノートとプロパティを表計算ソフトのように編集したいならBasesを使いましょう。Basesにできないことは引き続きDataviewの出番です。ノートの途中に埋め込むクエリ、タスクのクエリ、ノート間のリンクを対象にした検索、「60日触っていない」のような日付の計算、DataviewJSによるJavaScriptのクエリなどです。両方を使うVaultも多く、CRM Vaultでは同じデータでDataviewのダッシュボードとBasesのパイプラインを見比べられます。
Dataviewのクエリに何も表示されない原因
表が空になる原因はほぼ次の4つで、うち2つは日本語環境ならではです。1つ目は日付です。due: 2026年10月28日やdue: 10/28と書くとDataviewは文字列として扱い、date(today)との比較が成り立ちません。日付は必ずYYYY-MM-DDで書いてください。2つ目は全角文字です。日本語入力のままvalue: 18000と打つと全角数字になり、sum()は数値として足してくれません。プロパティの値も半角で入力しましょう。残りの2つはどの言語でも同じで、FROMのフォルダが実際のパスと一致していない(大文字・小文字を区別し、サブフォルダは完全なパスが必要)か、まだ編集モードのままでクエリがコードとして見えているかです。表の日付を2026/10/28の形で表示したい場合は、Dataviewの設定にある日付形式をyyyy/MM/ddにします。この欄はLuxonの記法なので、Obsidianのテンプレートと違ってyyyyは小文字です。