見出し画像

ぼくのObsidian管理方法 | iCloud × GitHub × NAS

 こんにちは。ガジェットブロガーのじゃが(@jaga_farm)です。

本日より毎日Obsidian関連記事を載せたいと思います。本日は第1弾。関連記事として他の記事は関連記事として記事下部に掲載しています。

Obsidianを複数デバイスで使っていますか?Obsidianを複数デバイスで使おうと思うと意外と管理が面倒です。
ぼくはAppleデバイス中心ですが、WindowsやAndroidも持っています。

正直この端末ではこのObsidianのVault。こっちではこのVaultとか管理したくありません。

この簡単な解決策はクラウド活用ですが、例えばiCloud同期で複数デバイスから使えて便利だけど、「ファイルが消えた」「上書きされた」「変更履歴を戻したい」などこういう不安があります。

そこでObsidian VaultをまるごとGitで管理する仕組みを作りました。
iCloud × GitHub × NASの3層構成で、ファイルの変更は自動でコミット・プッシュされ、どのデバイスからでも最新の状態にアクセスできます。

ぼくはエンジニアではないんですが、AIと相談しながらこの仕組みを構築しました。おかげでGitの使い方をかなり覚えてしまったのは副産物です。

ついでにNASを含めたのはNASで自動化スクリプトを24時間動かしているから。

この中身を詳しく書いてみたので御覧ください。

なぜGit管理するのか

まず全体像を図にしました。

私のObsidian管理

Obsidianは「ローカルファイル主義」のアプリです。データはクラウドに預けず、自分のマシン上に.mdファイルとして存在する。これがObsidianの強みであり、同時に弱みでもあります。

iCloud同期だけだと困ること

  • ファイルの変更履歴が残らない(上書きしたら戻せない)

  • 同期競合が起きたときの解決が難しい

  • 自動化スクリプトを定期実行する場所がない

Git管理で得られるもの

  • 全変更の履歴が残る(いつでもロールバック可能)

  • GitHub上でもVaultの中身を確認できる

  • GitHub Actionsで定期スクリプトを実行できる(デイリーノートの自動生成など)

  • NASを組み合わせれば、24時間動くスクリプト実行環境になる

ぼくの場合、デイリーノートの自動生成やTickTickとのタスク同期にGitHub Actionsを使っているので、Git管理は自動化の基盤でもあります。

3層アーキテクチャの全体像

ぼくのシステムは3つの層で構成されています。

Layer 1(iCloud層) がユーザーインターフェース。日常的にObsidianを使うのはここです。Mac間の同期はiCloudが担当します。

Layer 2(GitHub層) が集約ハブ。すべてのレイヤーがGitHubを経由してデータをやり取りします。GitHub Actionsでデイリーノートの自動生成やカレンダー同期も行っています。

Layer 3(NAS層) が自動処理エンジン。24時間365日動いているので、メールの自動取り込みやTickTickとの同期など、常時動かしたいスクリプトをここで実行しています。

なぜこの構成にしたのか

最初から3層を意識していました。

Mac 2台(Mac mini + MacBook Air)を使っているので、まずiCloud同期が必須でした。iPhoneからもノートを見たいので、iCloudが一番楽。

次に「スクリプトを常時動かしたい」と思ったときにNASが出てきました。ただ、MacとNASを直接同期するのは面倒。そこでGitHubを中継ハブにすると、すべてがきれいにつながりました。

Mac側の自動化 — 編集したら勝手にpush

Macで一番重要なのは「何もしなくても自動でGitHubにpushされる」こと。

仕組み

fswatchはMacのファイル監視ツールで、LaunchAgent(macOSの常駐タスク管理)で自動起動しています。

60秒のデバウンスがポイントです。ファイルを編集するたびにpushしていたら大量のコミットが生まれてしまう。60秒間何も変更がなかったタイミングでまとめてpushすることで、適度な粒度のコミットになります。

コミットメッセージは auto: 2026-02-08 09:30 のように日時だけ。考えなくていいので全自動が成立します。

macOSのTCC制限という壁

ここで1つハマったポイントがあります。macOSのセキュリティ機能(TCC)により、bashやpython3からiCloud Drive内のファイルに直接アクセスできない場合があるんです。

回避策として、Automatorアプリ(.app) でラップしています。NASHubGitPush.appという薄いAutomatorアプリがシェルスクリプトを呼び出す構成です。.app形式にするとmacOSがiCloud Driveへのアクセスを許可してくれます。

地味なハックですが、これを知らないとiCloud上のGitリポジトリ運用で詰まります。

NAS側の自動化 — 24時間動くスクリプト実行環境

NAS(UGREEN DXP4800 Plus)にもVaultのGitクローンがあります。

ファイル監視

Mac側がfswatchなのに対して、NAS(Linux)側はinotifywaitを使います。仕組みは同じで、変更を検知して自動pushします。

n8nで自動化ワークフロー

NAS上ではDockerでn8nを動かしています。n8nはノーコードの自動化ツールで、こんなワークフローを組んでいます。

  • GitHub Webhook受信 → git pullで最新のVaultを取得

  • メール自動取り込み → IMAP経由でメールをMarkdown化 → Vault/00_Inbox/mail/に保存

  • TickTick同期 → チェックボックスの変更を検知してTickTick APIに反映

  • ポモドーロ記録 → Apple WatchからWebhook → デイリーノートに自動追記

NASが24時間動いているから、これらの処理がバックグラウンドで常に回っています。

GitHub Actions — クラウドで定期実行

GitHub層では4つのワークフローが動いています。

一番重要なのはmorning_briefing。Google CalendarとTickTick APIから情報を取得して、翌日のデイリーノートを自動生成してくれます。詳しくは[デイリーノート運用術の記事]で紹介してします。

GitHub Actionsの良いところは、MacやNASの電源状態に依存しないこと。クラウドで実行されるので、確実に毎日動きます。

プライベートリポジトリの無料枠に注意

Obsidian Vaultは個人のノートなので、当然GitHubリポジトリはプライベート(非公開) にします。ここで知っておきたいのが、GitHub Actionsの無料枠の違いです。

パブリックリポジトリなら無制限ですが、プライベートだと月2,000分まで。ぼくの使い方(1日4ワークフロー、各数分程度)だと月300〜400分程度なので余裕で収まっています。

ただし、ワークフローを増やしたり実行頻度を上げたりすると上限に近づく可能性があります。GitHub Actionsの利用状況はリポジトリのSettings → Billing で確認できるので、たまにチェックしておくと安心です。

iCloudとGitの共存 — 意外とハマるポイント

正直に言うと、iCloud DriveのフォルダでGitリポジトリを運用するのは意外と難しいです。

気をつけていること

1. .gitignoreの設計

.obsidian/(アプリ設定)や.env(認証情報)はGitに含めません。iCloudで同期されるけどGitには入れないファイルと、Gitで管理するファイルを明確に分けています。

# Git除外(ローカルのみ)
.obsidian/
.env
*.log
.checkbox_state.json

2. コンフリクト対応

MacとNASの両方からpushするので、タイミングによってはコンフリクトが発生します。デバウンス(Mac: 60秒、NAS: 30秒)で頻度を抑えていますが、ゼロにはできません。

コンフリクトが起きたらAIに相談して解決することが多いです。Git初心者にとってはここが一番のハードルかもしれません。でも、逆に言えばこの経験のおかげでGitの使い方をかなり覚えました。

3. pull戦略

pull.ff = only(Fast-forward only)に設定しています。マージコミットが勝手に作られるのを防ぐためです。pullできない場合は手動で対処します。

まとめ — NASがなくても始められる

ぼくの構成はNAS込みの3層ですが、NASがなくても十分始められます

最小構成: Mac + GitHub

Mac(iCloud Drive内にGitリポジトリ)
  → fswatch + LaunchAgent で自動push
  → GitHubに全履歴が残る
  → GitHub Actionsでデイリーノート自動生成もできる

これだけでも「全変更の履歴管理」と「GitHub Actionsでの自動化」は実現できます。

NASの代わりにMac miniという選択肢

ぼくはNASで常時スクリプトを動かしていますが、Mac miniでも同じことができます

Mac miniは常時電源ONで使うのが基本のデスクトップ型Mac。LaunchAgentやcronで常時スクリプトを動かせるし、Homebrewでn8nをインストールすることもできます。NAS側でやっているメール取り込みやTickTick同期も、Mac miniなら全部動かせます。

しかもM4 Mac miniは84,800円(税込)から。NASを別途買うよりもハードルが低いし、普段のMacとしても使える。すでにMac miniを持っている人なら追加投資ゼロです。

MacBookのようなラップトップ型は持ち運んで閉じるので常時稼働には向きませんが、Mac miniなら電源を入れっぱなしにしておくのが自然な使い方。常時自動化のベースとして非常におすすめです。

段階的に拡張するアプローチ

  1. まず: Mac + GitHub で履歴管理 + 自動push

  2. 次に: GitHub Actionsでデイリーノート自動生成

  3. その後: Mac mini or NAS で常時スクリプト実行環境を構築

  4. さらに: n8nでメール取り込み、TickTick同期、Apple Watch連携...

ぼくも最初から全部を一度に作ったわけではなく、必要になったタイミングで段階的に拡張してきました。

大事なのは最初の一歩。ObsidianのVaultフォルダで git init して、GitHubにpushするところから始めてみてください。

最後までご覧いただきありがとうございました。ではまた〜!

  • [ObsidianタスクとAppleリマインダー/TickTick連携](→ Append Taskから始まるタスク自動連携)

  • [Raycast × Obsidian活用法](→ Raycast Append to Daily Noteの詳細設定)

いいなと思ったら応援しよう!

じゃが よろしければ応援お願いします! いただいたチップは活動費に使わせていただきます!