Obsidian と AFFiNE の併用設計(役割分担と単方向のデータフロー)
Single Source of Truth は Obsidian の Markdown。AFFiNE は確定前のブレストと図解の作業場。双方向同期はせず、AFFiNE → Obsidian の手動転記だけにする。迷ったら Obsidian。
調査時点: 2026-05。Obsidian Vault と AFFiNE をどちらも WSL2 上でセルフホストし、AI アシスタント(Claude Code)との連携は Obsidian 側に寄せる前提。
Obsidian は、ローカルの Markdown ファイルを中心にノートを管理するアプリ。AFFiNE は、文書とホワイトボードなどを組み合わせて情報を扱うオープンソースのワークスペースアプリ。
設計原則
- Single Source of Truth は Obsidian Vault。確定情報はすべて Markdown としてここに集約する
- AFFiNE は思考と視覚化の作業場。確定する前のブレスト・関係図・空間配置に使う
- 双方向同期はしない。事故と複雑性を呼ぶ。流れは AFFiNE → Obsidian の単方向のみ
- 役割で迷ったら Obsidian。新しい用途は Obsidian で試し、視覚化が必須になったときだけ AFFiNE へ移す
- ロックインは Obsidian 側で許容する(Markdown なので実害がない)。AFFiNE 側のロックインはエクスポート可能な形式に限ることで避ける
役割マトリクス
| 用途 | 主ツール | 備考 |
|---|---|---|
| 即時のアイデア捕捉 | Obsidian(QuickAdd) | 摩擦最小を最優先 |
| Daily Note / 日次ログ | Obsidian | filesystem MCP で AI が読み書きできる |
| プロジェクト README・進捗 | Obsidian | |
| 参考資料・引用・ハイライト | Obsidian | |
| 構造化データ(一覧、集計) | Obsidian(Dataview / Bases) | 標準でクエリできる |
| マインドマップ・関係図 | AFFiNE(Edgeless) | 完成形は画像で Obsidian に取り込む |
| プレゼン資料・図解 | AFFiNE(Edgeless / Page) | エクスポートして配布 |
| ホワイトボード的ブレスト | AFFiNE(Edgeless) | 結論は Obsidian へ転記 |
| 視覚編集が要る大規模 DB | AFFiNE(Database) | 軽量なら Obsidian で済ませる |
| AI からの検索・分析 | Obsidian | filesystem MCP が圧倒的に楽 |
判定: テキスト中心・検索したい・長期で残したい → Obsidian。空間配置・関係性・ビジュアル思考 → AFFiNE。分からなければ Obsidian で始める。
データの流れ
[捕捉] ──────────────────────────► [Obsidian Vault] ──► [AI(MCP)] │ ▲ │ │ 確定後の手動転記 └─► [AFFiNE Edgeless / Page] ──[Export: Markdown / PNG / PDF]- Obsidian → AFFiNE は基本やらない。やるとしても読み取り参照目的のコピー程度
- AFFiNE → Obsidian も自動同期しない。確定したタイミングで手動転記する
- AI が触るのは Obsidian 側のみ(AFFiNE 側の MCP が整うまで)
AFFiNE で作ったものの取り込み手順
- AFFiNE 側で完成させ、Markdown / PNG / PDF でエクスポートする
- 画像・PDF は Vault 内の
_attachments/from-affine/<project>/<yyyy-mm-dd>-<topic>.pngに置く。「ここは AFFiNE 由来の固定スナップショット」と場所で明示し、AFFiNE 側が更新されても自動反映はしない - Markdown は関連プロジェクトのディレクトリに
affine-<topic>.mdとして追加する - Obsidian の正本ノートから
![[from-affine/.../foo.png]]で埋め込む - 出処を frontmatter に書く
---type: projectstatus: activesource: affinesource_url: http://localhost:3010/workspace/<id>/<doc-id>exported_at: 2026-05-10---source: affine があるノートは AFFiNE が原本で、Obsidian 側を直接編集しない(編集するなら AFFiNE 側を直して再エクスポート)。source が無いノートは Obsidian が原本で自由に編集できる。AI にもこのフィールドで判別させる。
転記と移動のタイミング
AFFiNE → Obsidian へ転記する合図:
- AFFiNE 側のドキュメントが 3 日以上更新されていない
- 「整理した」「方向性が決まった」「確定」と言える状態になった
- Edgeless のレイアウトが 1 週間ほぼ動いていない
Obsidian → AFFiNE で図解した方がよい合図:
- 関連ノートが 5 つ以上あり、関係が文章では追えない
- 「俯瞰したい」「関係を見たい」「全体像」が必要になった
- 1 ノート内に矢印的表現(
→、⇒)が 3 つ以上ある - 同じトピックをタグや wikilink で 5 件以上繰り返し言及している
二重管理の回避
| 状態 | 対応 |
|---|---|
| AFFiNE にしかない図 | OK。画像エクスポートして Obsidian に埋め込めば単一画像参照 |
| Obsidian にしかないテキスト | OK。これが原則 |
| 同じ内容のテキストが両方にある | NG。どちらかを正にして他方は削除かリンクに置換 |
| AFFiNE の Database と Obsidian Bases で同等のものを管理 | NG。利用頻度が高い方に寄せる |
週次で、AFFiNE 側の「Obsidian にも書いた」ものは moved to vault://... のリンクメモだけ残して中身を削除し、Obsidian 側の AFFiNE 原本ノートには source: affine が付いているか確認する。検出を自動化するなら、source: affine ノートの exported_at と AFFiNE 側の最終更新を突き合わせて警告ファイルに書き出すスクリプトを置く。
AI 連携の段階的な解放
AFFiNE 向け MCP が整った後も、一気に書き込みを許可しない。
| 段階 | 許可する操作 | 用途 |
|---|---|---|
| A: Read-only | 参照のみ | AFFiNE のブレスト結果を読んで Obsidian 側でまとめさせる |
| B: Append-only | 新規ドキュメント作成と末尾追記のみ。既存ブロックの編集・削除は禁止 | AI が下書きを置き、人間が視覚化する分業 |
| C: 単方向反映 | Obsidian → AFFiNE の一方向のみ(例: Dataview の結果を AFFiNE Database に流す) | AFFiNE → Obsidian は引き続き人間の手動転記 |
双方向書き込みを禁止する理由: Yjs CRDT の並行書き込みは理論上マージできるが、タイトル変更やリスト要素削除のようなブロック構造への部分編集は、意図しない順序でマージされて意味的に壊れることがある。どの段階でも「Obsidian が正」を維持する。AFFiNE をマスターにするとデータ所有性とロックイン耐性が下がる。
撤退戦略
- AFFiNE をやめる場合: Vault 側にコピー済みの図と Markdown は残る。AFFiNE 内に閉じた情報が無いことを定期的に確認しておく。DB ダンプと storage を保持しておけば復元も可能。Edgeless の座標や矢印、Database のビュー定義、双方向リンクの参照側はエクスポートで失われる
- Obsidian をやめる場合: Markdown は VS Code / Logseq / Bear / Foam / Quartz でそのまま読める。frontmatter も普遍的な YAML。Dataview / Bases のクエリは失われるがノート本体は無傷
- 「AFFiNE は 1 か月更新のないドキュメントを自動アーカイブするエフェメラルな場所」と割り切ると、データ膨張と撤退障壁を同時に抑えられる
チェックリスト
開発側(AFFiNE の API ラッパーや MCP を作る場合):
- 開発成果物は開発用リポジトリに閉じる。開発メモは Obsidian に置き、AFFiNE 内にメモを置かない
- API 調査の知見はリポジトリの
docs/を正にし、Vault からはリンクだけにする
運用側:
- 思いついたら Obsidian、視覚化が要るときだけ AFFiNE
- AFFiNE で確定したら必ず Obsidian へ転記(週次レビューで漏れを見る)
- AFFiNE 内に「アクティブプロジェクト一覧」のような恒久データを作らない
関連
更新履歴
- 2026-05-10: 初版(ローカル調査ノート)
- 2026-10-17: Wiki へ移植、概念ページとして再構成。冒頭に定義を追加