
【決定版】Obsidian DataviewとCursor AIで実現する「動的プロジェクトコンテキスト」構築の全手順
こんばんは!IT業界で働くアライグマです!
PjMであり、現役のWebエンジニアでもある私は、常にプロジェクトの透明性と開発の効率性をいかにして両立させるか、という課題に取り組んでいます。特にAIコーディングツールが普及した今、その性能を最大限に引き出す鍵が「いかに良質なコンテキスト(背景情報)をAIに与えるか」にあることは、皆さんも感じているのではないでしょうか。
しかし、プロジェクトの仕様書、最新の議事録、タスクリスト…これらの情報を、コーディングのたびに手動でAIにコピペするのは、正直なところ面倒ですし、情報が古くなっている危険性も常につきまといます。
もし、あなたのObsidian(第二の脳)に散らばるプロジェクトのあらゆる情報が、自動的に集約・更新される「生きたドキュメント」になり、それをCursor AIにワンコマンドで読み込ませることができるとしたら…?
今日は、Obsidianの強力なプラグイン「Dataview」と、AIコーディングツール「Cursor」を連携させることで、プロジェクトの「動的コンテキスト」を構築し、AIの精度とあなたの生産性を極限まで高める、一歩進んだテクニックを徹底解説します。
なぜ「動的コンテキスト」がPjMとエンジニアを救うのか?
まず、このアプローチがなぜ革命的なのか、その理由から見ていきましょう。
- 静的コンテキスト(従来の方法): 手動でコピー&ペーストした仕様書やメモ。
- 課題: 情報がすぐに古くなる。コンテキストを準備する手間がかかる。抜け漏れが発生しやすい。
- 動的コンテキスト(今回の方法): Dataviewクエリによって、複数のノートから関連情報を自動で集約・表示する単一のノート。
- メリット:
- 常に最新: 元のノート(議事録やタスク)を更新すれば、コンテキストも自動で最新の状態に保たれる。
- 準備の手間ゼロ: 一度クエリを作れば、あとは放置でOK。
- 網羅性の向上: 人間が見落としがちな関連情報も、クエリが機械的に拾い上げてくれる。
- 思考の停止を防ぐ: 「あの情報どこだっけ?」という探す時間や、コンテキストを準備する際の思考の分断がなくなります。
- メリット:
PjMとしてはプロジェクトの現状把握が瞬時にでき、エンジニアとしては常に最新の正しい情報に基づいて開発を進められる。まさに、両者の課題を同時に解決するアプローチなのです。
ステップ1:Obsidianで「プロジェクトの断片」をメタデータ化する
Dataviewが情報を集めるためには、まずそれぞれのノートに「これは何の情報か」という目印(メタデータ)を付けてあげる必要があります。Obsidianでは、ノートの先頭にYAML形式で記述する「Frontmatter」や、文中に記述する「インラインフィールド」を使います。
具体的なメタデータの追加例
例1:議事録ノート (2025-06-25_定例会議.md
)
---
type: meeting
date: 2025-06-25
participants: ["アライグマ", "田中", "鈴木"]
tags: [プロジェクトA, 定例]
---
# 2025-06-25 定例会議
## 決定事項
- 認証機能はSanctumを採用する
- 納期を1週間延長し、品質を優先する
例2:タスクノート (新しいAPIエンドポイントの実装.md
)
---
type: task
status: in-progress
assignee: アライグマ
due: 2025-07-04
sprint: 3
---
# 新しいAPIエンドポイントの実装
[due:: 2025-07-04] ← (インラインフィールドの例)
担当は [assignee:: アライグマ] です。
このように、日々のノートに一手間加えるだけで、これらが後で自動集計できる「データベースのレコード」に変わります。
準備:Dataviewプラグインをインストールする(未導入の方へ)
ここからのステップでは、Obsidianの強力なプラグイン「Dataview」を使用します。もしまだインストールしていない場合は、以下の手順で導入してください。数分で完了する簡単な作業です。
- Obsidianの画面左下にある歯車アイコンをクリックして、「設定」を開きます。
- 左側のメニューから「コミュニティプラグイン」を選択します。
- 初めてコミュニティプラグインを利用する場合、「コミュニティプラグインを有効にする」というボタンが表示されるので、クリックしてください。(セキュリティに関する警告が表示されますが、Dataviewは世界中のユーザーに利用されている、非常に信頼性の高いプラグインです)
- 「閲覧」ボタンをクリックすると、コミュニティプラグインの一覧が表示されます。検索窓に「Dataview」と入力してください。
- 検索結果に表示された「Dataview」をクリックし、次の画面で「インストール」ボタンを押します。
- インストールが完了したら、必ず「有効化」ボタンを押してください。 このボタンを押し忘れると、プラグインは動作しません。
これで、あなたのObsidianに「データベース機能」が宿りました。準備は万端です!
ステップ2:Dataviewクエリで「動的プロジェクトサマリー」を生成する
次に、これらのメタデータを基に、プロジェクトの全体像を一枚にまとめた「動的コンテキスト用ノート」を作成します。_Project_A_Context_For_AI.md
のような名前で新しいノートを作り、以下のDataviewクエリを記述していきましょう。
動的コンテキスト用ノートの作成例
# プロジェクトA:動的コンテキスト(AI読込用)
## 1. 現在進行中のタスク
```dataview
TABLE assignee AS "担当者", due AS "期日"
FROM "プロジェクトA"
WHERE type = "task" AND status = "in-progress"
SORT due ASC
```
## 2. 最近の会議での主要な決定事項
```dataview
LIST L.text
FROM "プロジェクトA"
WHERE type = "meeting"
FLATTEN file.lists AS L
WHERE contains(L.text, "決定事項")
SORT file.day DESC
LIMIT 5
```
## 3. 確定済みの関連仕様一覧
```dataview
TABLE status AS "ステータス"
FROM "プロジェクトA"
WHERE type = "spec" AND status = "confirmed"
SORT file.mtime DESC
```
このノートを開くと、DataviewがあなたのVault内を検索し、常に最新のタスクリスト、決定事項、仕様書の一覧を表示してくれます。これが、Cursor AIに読み込ませる「動的コンテキスト」の正体です。
【深掘り解説】動的コンテキスト用ノートのコードを解剖する
先ほどのコードが、どのようにして情報を自動で集めているのか、一つずつ詳しく見ていきましょう。このコードの意味を理解することで、あなたのプロジェクトに合わせたカスタマイズが可能になります。
1. 「現在進行中のタスク」のクエリ解説
TABLE assignee AS "担当者", due AS "期日"
FROM "プロジェクトA"
WHERE type = "task" AND status = "in-progress"
SORT due ASC
これは、「プロジェクトAの中から、現在対応中のタスクだけを抜き出して、期日の近い順に表形式で表示する」という命令です。
TABLE assignee AS "担当者", due AS "期日"
- TABLE: これから「表」を作ります、という宣言です。
assignee, due
: 表に表示したい列(メタデータ)を指定しています。この場合は「担当者」と「期日」ですね。AS "担当者"
:assignee
というメタデータ名を、表のヘッダーでは「担当者」という分かりやすい日本語で表示するための記述です。
FROM "プロジェクトA"
- どこから情報を探すかを指定します。この場合は「プロジェクトA」という名前のフォルダ、あるいは
#プロジェクトA
というタグが付いたノートが対象になります。
- どこから情報を探すかを指定します。この場合は「プロジェクトA」という名前のフォルダ、あるいは
WHERE type = "task" AND status = "in-progress"
- ここがDataviewの強力なフィルター機能です。
WHERE
: 探してきたノートの中から、さらに条件に合うものだけを絞り込みます。type = "task"
: メタデータにtype: task
と書かれたノートに限定します。AND status = "in-progress"
: さらに、status: in-progress
と書かれたノートに限定します。- これにより、「タスク」であり、かつ「進行中」のノートだけが表示されるわけです。
SORT due ASC
- 見つかったノートを並び替える命令です。
SORT due
:due
(期日)のメタデータを基準に並び替えます。ASC
: 「Ascending」の略で、昇順(古い順、小さい順)を意味します。つまり、期日が早いタスクから順番に表示されます。
2. 「最近の会議での主要な決定事項」のクエリ解説
LIST L.text
FROM "プロジェクトA"
WHERE type = "meeting"
FLATTEN file.lists AS L
WHERE contains(L.text, "決定事項")
SORT file.day DESC
LIMIT 5
これは少し応用的なクエリです。「プロジェクトAの議事録の中から、『決定事項』という見出しの下にある箇条書きの項目だけを、最新のものから5つ抜き出してリスト表示する」という命令になります。
LIST L.text
- LIST: これから「箇条書きリスト」を作ります、という宣言です。
L.text
: 後述するFLATTEN
で処理された、箇条書き一つ一つのテキスト部分を表示します。
WHERE type = "meeting"
- まずは
type: meeting
と書かれた議事録ノートだけを対象にします。
- まずは
FLATTEN file.lists AS L
- これが少し難しく見えるかもしれませんが、やっていることはシンプルです。
- FLATTEN: ノートの中にある箇条書き(リスト)を、一つ一つの独立したデータとして扱えるように「平坦化」する、という強力な機能です。
AS L
: 平坦化した個々の箇条書き項目を、これ以降「L」という名前で扱えるようにします。
WHERE contains(L.text, "決定事項")
- 平坦化した箇条書き項目(L)の中から、さらに絞り込みます。
contains(L.text, "決定事項")
:L.text
(箇条書きのテキスト)に、「決定事項」という文字列が含まれているものだけを対象にします。これにより、「## 決定事項」の見出しの下にあるリスト項目を狙って抽出できます。
SORT file.day DESC
- 議事録ノートの日付(
file.day
)を基準に並び替えます。 DESC
: 「Descending」の略で、降順(新しい順)を意味します。
- 議事録ノートの日付(
LIMIT 5
- 最新の5項目だけを表示するように制限します。AIに与えるコンテキストが長くなりすぎるのを防ぐためです。
3. 「確定済みの関連仕様一覧」のクエリ解説
これは1番目のタスクリストとほぼ同じ構造なので、理解しやすいかと思います。
TABLE status AS "ステータス"
FROM "プロジェクトA"
WHERE type = "spec" AND status = "confirmed"
SORT file.mtime DESC
TABLE status AS "ステータス"
: 「ステータス」列を持つ表を作成。WHERE type = "spec" AND status = "confirmed"
:type
が「仕様書」で、かつstatus
が「確定済み」のノートを絞り込み。SORT file.mtime DESC
:file.mtime
(ファイルの最終更新日時)が新しい順に並び替え。これにより、最近更新された仕様書が一番上に表示されます。
ステップ3:Cursor AIに「動的コンテキスト」を読み込ませる
準備は整いました。いよいよCursorとの連携です。
- Cursorで開発プロジェクトを開きます。
- AIチャットパネルを開き、「@」を入力してファイルやシンボルを検索する機能を使います。
- 先ほど作成したノート(
_Project_A_Context_For_AI.md
)を指定して、AIにコンテキストとして読み込ませます。
これで、CursorのAIはあなたのプロジェクトの「今」を理解しました。この状態で、具体的な指示を出してみましょう。
AIへの指示(プロンプト)の具体例
@_Project_A_Context_For_AI.md 現在進行中のタスクリストを基に、私が今日取り組むべき作業を優先度順に3つ挙げ、それぞれについての実装ステップを簡潔に提案してください。
@_Project_A_Context_For_AI.md 最近の会議で決定された「認証機能はSanctumを採用する」という方針に基づき、Laravelでユーザー認証APIを実装するための基本的なルーティングとコントローラーの雛形コードを生成してください。
AIは、あなたが与えた「生きた情報」を基に、驚くほど的確で、プロジェクトの文脈に沿った回答を返してくれるはずです。
PjM/エンジニアとしての「私」の活用事例
このワークフローは、私の日々の業務を劇的に変えました。
-
- PjMとして:朝一番に、この「動的コンテキストノート」を確認するだけで、プロジェクト全体の進捗と課題が瞬時に把握できます。急な進捗報告を求められても、Cursorに「このコンテキストを基に、マネージャー向けの進捗サマリーを箇条書きで生成して」と依頼すれば、数秒で質の高いレポートが完成します。
- エンジニアとして:新しい機能開発に着手する際、まずこのノートをCursorに読み込ませます。「確定済みの仕様と関連タスクを考慮して、この機能に必要なデータベースのマイグレーションファイルを作成して」と指示するだけで、AIがテーブル設計やカラムのデータ型まで理解した上でコードを生成してくれるため、手戻りや設計ミスが大幅に減少しました。
まとめ:AIとの対話の質を、次のレベルへ
今回ご紹介したObsidian DataviewとCursor AIの連携は、単なるツール連携のテクニックではありません。それは、AIとの対話の質そのものを向上させるための、新しいワークフローの提案です。
日々の業務から生まれる無数の情報を、メタデータという共通言語で構造化し、Dataviewで動的な知識へと昇華させる。そして、その凝縮された「知性」をCursor AIに与えることで、AIは汎用的なアシスタントから、あなたのプロジェクトを深く理解した「専属パートナー」へと進化します。
セットアップには少し手間がかかるかもしれませんが、一度この「動的コンテキスト」生成の仕組みを構築してしまえば、その生産性向上効果は計り知れません。
この記事が、あなたのAIとの協働を、より創造的で、より生産的なものにするための一助となれば幸いです。