Obsidianの複数端末同期方法まとめ (Mac/Windows/iOS/Android)

現在、ノートアプリObsidianのデータ (Vault) をiOSやAndroidを含む複数端末で同期する方法は、大きく分けて5つあります。

しかしなぜこんなにも多くの手段が台頭するのか。そしてあなたに最もマッチする方法とは何なのか? ということで今回は、

  • Obsidianのデータ同期がややこしい理由
  • Mac – iOS or Windows – Androidの同期方法
  • Mac – Windowsを含む同期方法
  • それぞれの特徴 (メリット/デメリット)
  • クラウドストレージに関する注意点

以上のメニューでお送りします。

問題の発端は「サンドボックス」と「複数のローカルファイル」

なぜこんなにも多くの同期方法が存在するのか。その理由は、

  1. モバイルOSのサンドボックスによる制限
  2. Obsidianが複数のローカルファイルを扱うアプリである

この2点にあります。

サンドボックスとは?

サンドボックスとは直訳すると「砂場」。モバイルアプリはまるで砂場で遊ぶ子供のように「枠」によって守られ、同時にある程度の制限が課せられています。

iOSおよびiPadOSでのサンドボックス化
他社製Appはすべて「サンドボックス化」されるので、ほかのAppによって保存されたファイルにアクセスしたり、デバイスに変更を加えたりすることはできません。
アプリ サンドボックス  |  Android オープンソース プロジェクト  |  Android Open Source Project

簡単に言えば、あるモバイルアプリはアプリ外部のデータであるアドレス帳をユーザーの許可無く読み込んだり、Dropboxのデータを勝手に書き換えることができない。これがサンドボックスというシステムです。

Obsidianの特徴が問題をややこしくする

これがDraftsのように「一度に扱うファイルが1つだけ」、もしくはNotionのように「独自クラウド上のデータを読み込む」アプリであれば大きな問題にはなりません。
しかしObsidianは、あるローカルファイルから別ファイルを開いたり、ファイル名を変更したりする。そのためVaultごと全てのファイルをダウンロードしておき、更新されたいくつものファイルをアップロードする必要があります。
これが他のアプリとObsidianとの決定的な違いです。

シンプルな同期方法

Obsidian Sync

このサンドボックス問題を解決する最もシンプルな同期方法がObsidian Sync

Obsidian SyncではObsidian独自のサーバを使い、他のアプリにアクセスすること無くファイルを同期できます。そのためサンドボックスの問題は起こらず、安定した同期が可能。
ただし月間10ドル、もしくは年間96ドルの有料オプションであることには注意してください。

Obsidian: A knowledge base that works on local Markdown files.
Obsidian – A knowledge base that works on local Markdown files.

Mac – iPhone / iPadならiCloud

ファイル同期のためだけにお金を払いたくない? ご利用中のデバイスがMacとiPhone / iPadのみなら、Apple標準のクラウドストレージiCloudで十分満足のいく同期環境を構築できるでしょう。

利用手順は、

  1. ObsidianモバイルアプリをiPhoneやiPadにインストールして起動
    (iCloud上にObsidianフォルダが作成される)
  2. MacのVaultをiCloud上のObsidianフォルダに丸ごと移動 or 新規作成し、Vaultとして指定する
  3. iOSデバイスのVault選択画面で【Create new vault】をタップ
  4. 【Store in iCloud】をONにした状態で【Vault name】にMacで作成したフォルダ名を入力

要はMacとiOSデバイスでiCloud上の同一フォルダをVaultとして指定すればOKです。

Windows – Androidなら一般的なクラウドストレージ

次にWindows – Androidデバイスの同期方法。こちらはGoogle Driveなど、一般的なクラウドストレージを利用します。

Androidの場合、そのままではクラウドストレージのファイルを同期できません。そのためDropSyncFolderSyncなど、サードパーティー製の同期用アプリを利用することになりますが、手順としてはそこまで複雑ではないでしょう。

[Obsidian Mobile] もう重いとは言わせない! PCとの同期手順 (iOS/Android)
※ この記事はObsidianのVaultを「iCloudやGoogle Dri...

Mac – Windowsを含む同期方法

次にMacとWindowsの同期方法を考えます。多くの方が真っ先に思いつくのは、やはりiCloudでしょう。
「WindowsでもiCloudが使えるし、iPhoneともそのまま同期できる。だからWindows – Macの同期もiCloudを使うのが一番簡単で自然でしょ?」

ごもっともでございます。僕も以前はそう考えていました。
確かにAndroidを含まない構成なら、iCloudで問題無いように見えます。実際この方法は成立して当然なんです。しかし残念ながら、WindowsとiCloudを組み合わせるのは経験上おすすめできません。

iCloudが抱える問題

Windows版iCloudはファイル同期に問題があり、特定ファイルのアップデートがいつまで経っても終わらないという現象が起こります。実際僕も過去にこんなツイートをしました。

頂いた返信に含まれるRedditのページでは、Obsidianの設定フォルダ関連のエラーにも言及されています。
「使用しているプラグインがいつの間にか無効化されていた」といった問題もiCloudが原因の可能性があるので、設定フォルダはデバイスごとに別々のフォルダを用意しておくのが安全でしょう。

iCloudがダメならどうする?

設定フォルダの問題はユーザー側で対処できますが、ファイル同期の問題はどうしようもありません。安全な運用を考えるなら、WindowsでiCloud同期は使わないほうが良いというのが今のところの結論です。
ではどうするかと考えていたときに偶然出会ったのがこのツイート。

Mac – iOSはiCloud、Windows – AndroidはGoogle Driveを使って同期する。これならiCloudの問題は回避でき、Androidも含めて同期できます。
ではiCloudとGoogle Driveを自動的に同期し、1つのVaultを使い回すにはどうするか?

iCloudとGoogle Driveを同期する手順

これはほぼGoogle Driveの力でなんとかなります。1つ大きなポイントは、Macを母艦として同期することです。参考までに、僕が実際に試した手順をご紹介しましょう。

  1. MacでiCloud上にVaultを作成しておく (Mac – iOSの手順と同様)
  2. MacでGoogle Driveの設定を開く

  1. 「マイ 〇〇 (名称は人によって変わる)」の中にある【フォルダを追加】をクリック
  2. iCloud上のVaultを選択
  3. 追加されたフォルダ名をクリックして設定画面に入り、【Googleドライブと同期する】のチェックを入れる

ここまでがMacで行う作業。完了すると、Macで作成したVaultがGoogle Driveにアップロードされます。
続いてWindows側の作業を進めましょう。

  1. Google DriveにWebからアクセス
  2. 「パソコン > マイ〇〇」フォルダを開き、Vaultフォルダを右クリック
  3. 【ドライブにショートカットを追加】を選択
    (「マイドライブ」にVaultフォルダへのショートカットが追加される)

  1. ローカル環境のGoogle Drive (マイドライブ) を開く
  2. 追加されたVaultフォルダ (ショートカット) を右クリック
  3. 【オフラインアクセス】>【オフラインで使用可能にする】を選択
    (Vaultがローカル環境にダウンロードされる)
  4. ダウンロード完了後にObsidianを起動し、Vaultをこのフォルダに切り替える

これでMac – iOSはiCloud、Windows – AndroidはGoogle Driveを利用し、1つのVaultを全てのマシンで共有することができます。
ただし変更が即座に同期されるわけではなく、若干のタイムラグが生じること、ファイルの競合が避けられないことにはご注意ください。

プラグインを利用する同期方法

Obsidian Self-hosted LiveSyncプラグイン

  • WindowsとMacを含む構成で同期する
  • ファイルの競合は可能な限り避けたい
  • 無料で同期したい

というワガママな要望をお持ちの方、Obsidian Self-hosted LiveSyncプラグインを使いましょう。
Obsidianのメニュー「Community Plugins」からインストールできます。なおモバイルOSにも対応。

(実際は上の図より若干複雑な仕組みになっています。プラグインの仕様など、詳しく知りたい方は作者のブログ記事をご覧ください)

Obsidianのプラグインを作りました
最近、Obsidianのプラグインを作りました。 その名も、obsidian-livesync。

この方法ではiCloudもGoogle Driveも使わず、IBM-Cloudantという全く別のクラウドストレージを利用して同期します。つまりVaultを置く場所 (ローカルパス) はどこでもOK。
(※記事の最後に触れていますが、iCloudなど他ストレージと併用して同期することは推奨されていません! ご注意ください)

またファイルの競合をObsidian内部で解決できるのも大きな特徴です。

利用手順

手順についてはGitHubのページに記載されているので、基本的にはこれに習って進めていけばOK。

GitHub - vrtmrz/obsidian-livesync
Contribute to vrtmrz/obsidian-livesync development by creating an account on GitHub.

ここでは簡単な流れだけご紹介しておきましょう。

  1. IBM-CloudantのLiteアカウントを作成 (容量1GBの無料アカウント)
  2. IBM-CloudantにアクセスするためのURLをメモしておく
  3. データベースを作成
  4. 証明書を発行し、データベースにアクセスするためのユーザー名/パスワードをメモしておく
  5. Obsidianにプラグインをインストールし、メモしておいたURL/ユーザー名/パスワードを入力
  6. プラグインの「Test DB」ボタンをクリックして、データベースに接続できるかどうか確認
    (ここでエラーが出る場合、入力した項目のどれかが間違っている可能性が高い)
  7. プラグインの設定を変更し、同期を有効にする
  8. 5~7の手順を同期したいデバイス全てで実行

URLやユーザー名、パスワードを忘れてしまったら?

データベースにアクセスするためのURL、ユーザー名、パスワードを忘れてしまった場合は再度IBM-Cloudantにログインし、左上の3本線アイコンをクリックして「リソース・リスト」を開きます。
開いたページの「サービスおよびソフトウェア」でCloudantを選択。

開いたページの「External Endpoint (preferred)」の右側にURLが掲載されています。ユーザー名とパスワードはサイドバー「サービス資格情報」をクリック。

「サービス資格情報」ページの「管理者」の左側 ^マークをクリックして展開すると、ユーザー名とパスワードが確認できます。
最初と最後の「"」はObsidianにペーストしないよう注意してください。

Selfhosted-LiveSyncのオプション

プラグインのオプションは以下の通り。

項目名意味
File to Database saving delayデータベースに変更を送信するまでのディレイ (単位はms)
Auto GC delayGarbage Collectが発生するまでの時間 (単位は秒)
Do not show low-priority Log重要度が低い通知をOFFにする
Verbose Log詳細なログをON/OFF
LiveSyncリアルタイムで同期
Periodic Syncintervalで設定した時間ごとに同期
Periodic Sync interval↑の時間設定
Sync on Saveデータが保存された時に同期
Sync on StartObsidian起動時に同期
Trash deleted filesファイルを削除せず、ごみ箱フォルダに移動する
Minimum chunk size「チャンク」とは (広義では) ひとまとまりのデータのこと
チャンクを大きくするとリアルタイム同期の頻度が下がり、
パフォーマンス低下を抑制する
LongLine Thresholdこれより長い文字数の文はチャンクとみなされ、同期される
Drop Historyデータベースを初期化し、アップロードし直す
Lock remote databaseリモートデータベースをロックする
Suspend file watchingONになっている間、ファイルの更新は無視される
Reset remote databaseリモートデータベースによって、ローカルファイルを書き換える
Initialize local database againローカルデータベースを初期化し、構築し直す

個人的には通知はOFF (設定値はON) に、ログは挙動に問題があればON、「LiveSync」はパフォーマンスへの影響が無ければON、「Periodic Sync」や「Sync on Save」を状況によってON/OFFするのがオススメ。

Obsidian Gitプラグイン

最後に有名なGitプラグインにも触れておきましょう。

GitHub - denolehov/obsidian-git: Backup your Obsidian.md vault with git
Backup your Obsidian.md vault with git. Contribute to denolehov/obsidian-git development by creating an account on GitHub.

プログラマ御用達のクラウドストレージであるGitHubを介して同期するこの方法。

  • VaultのローカルパスはどこでもOK
  • 他人とのファイル共有が容易
  • バージョン管理機能によるロールバックが可能
  • ブランチを切ることで、実際にファイルを更新する前に評価、確認できる

など、特に安全性においてメリットも多いGitHubですが、それゆえに更新作業が面倒という一面も。
Obsidian Gitプラグインはその面倒な更新作業を簡略化し、自動的にPush/Pullを行ってくれるプラグインですが、残念ながらモバイルOSには対応していないため、iOSやAndroidではGit用の別アプリをインストールする必要があります。

また利用するにはGitHubの知識がある程度必須。チームで運用する場合は、そのメンバー全員に最低限の理解が求められます。
具体的な利用手順については外部リンクをご覧ください。

ObsidianをGitでバージョン管理する
Obsidian の使い勝手を上げるために、Git でバージョン管理を行い、また自動で git push する仕組みを作りました。

それぞれの特徴 (メリット/デメリット)

今回ご紹介した同期方法の特徴やメリット/デメリットはこんな感じ。

方法特徴
Obsidian Sync簡単、安全
有料
iCloud簡単
Windows、Androidを含む同期には使えない
Google Drive割と簡単
Android環境で若干手間がかかる
iCloud & Google Drive若干面倒。ファイルの競合は避けられない
Windows – Mac間の同期が安定
Obsidian Self-hosted LiveSync
(IBM-Cloudant)
若干面倒
Vaultの場所が自由。モバイルOS対応
Obsidian Git
(GitHub)
GitHubの知識が必須。モバイルOSは非対応
安全性は最も高い

現時点でどれが最高とは一概に言えないObsidianの同期方法。あなたの環境に合わせ、最適と思われる方法を選択してください。

追記: クラウドストレージに関する注意点

記事公開前後、Twitterで頂いた反応の中に気になる情報があったので追記してお知らせしておきます。特にクラウドストレージを使っていてこのような症状に見舞われた方、一度確認してみてください。

ファイルを開いたり、検索するのに時間がかかる!

マウントされたオンラインストレージにVaultを配置するとObsidianの速度が劇的に遅くなる
マウントされたオンラインストレージにVaultを配置するとObsidianの速度が劇的に遅くなる

事例としては「Box Driveというクラウドストレージを使っていると、ファイル操作に関する動作が遅くなる」というもの。
Boxと言えば安全性重視の企業向けクラウドストレージであり、これ自体が悪いわけでは恐らくありません。しかし気になるのは、Box DriveのHPに記載されたこの一文です。

膨大な数のファイルがあったとしても、ハードディスクドライブの容量をほんのわずかしか消費しません。
(Box Drive HPより引用)

これはつまり、Box Driveに置かれたファイルはローカルファイルのように見えるけれども、ファイルの実体はクラウドストレージ上に存在する。ということです。
そうするとどうなるか。

ローカルマシンから見えるフォルダやファイルは、いわばショートカット (エイリアス) でしかありません。そのためローカルマシンの容量はもちろん節約できます。
しかしその代償として、ファイルにアクセスするたびにダウンロードという非常に時間のかかる作業が必要になってきます。

これがそのまま体感上の「遅さ」として現れると仮定すれば、Google DriveやOne Driveなどでもこの症状が起こり得るということ。
Google Driveなら「ファイルをミラーリングする」、One Driveなら「ファイル オンデマンドを無効にする」を選択し、ファイルを常にローカルマシンにダウンロードしておくことで、速度低下は予防できるはずです。

Self-hosted LiveSyncプラグインがバグる?

Obsidian Self-hosted LiveSyncプラグインを使っていて、何やらたくさん警告のようなものが表示されるという方、iCloudなど他のクラウドストレージを併用してはいないでしょうか?
そうだとするとあまり良い考えとは言えません。例えばMacとiPhoneでiCloudに置いたVaultを共有し、さらにLiveSyncプラグインで同期しているとしましょう。

① (白矢印) が元々の状態。その状態からMacで編集を行い、② (ピンク) の情報が送信されたとします。そしてその直後、iPhoneから③ (黄色) の更新を行った瞬間、果たしてIBM-CloudantとiCloudの状態は同じかどうか?

②の情報が即座にiPhoneに送信されているなら同じであると言い切れますが、問題はそれが確実ではないという点にあります。
ファイル同期に不確実性は禁物です。こんな風に「常に複数箇所の情報がアップデートされる」状態は好ましくありません。他のクラウドストレージを使うならもっとシンプルに、バックアップとして利用しましょう。

iCloudやGoogle Driveに向かう線は、母艦マシンからの一方通行です。つまりiOSなど、モバイル端末のVaultはiCloudから切り離し、完全なローカルフォルダ (ファイルアプリ > このiPhone内 > Obsidianの中身) をVaultとして指定します。
こうすることで不意なファイル競合が避けられ、iCloudもバックアップ先として機能するのでおすすめ。

タイトルとURLをコピーしました