最近、情報を記録するのに Obsidian を使い始めた。 ただ、使い始める上で問題が一つあった。 それは、複数のデバイスでデータを同期する方法について。 Obsidian は、基本的にローカルのファイルシステムで Markdown を管理する。 そのため、複数のデバイスでデータを同期したい場合には、その方法を考える必要がある。 公式には Obsidian Sync という同期のためのサービスがあるものの月額で料金がかかる。 まずはもうちょっと気軽に始めたかったので、それ以外の選択肢を検討し始めた。
そして、ひとまず GitHub にプライベートリポジトリを作って管理する方法に落ち着いた。 このやり方には、次のような利点があると思う。
- 複数の異なるプラットフォームのデバイスで同期しやすい
- ファイルの世代管理ができる
今回は、そのやり方で Android を使ってデータ (Vault) を同期する方法について記録しておく。 Web で事例を調べると、デバイスに SSH の秘密鍵を置くやり方が多かった。 今回は、代わりに GitHub CLI を使って PAT を発行する。 ターミナルエミュレータには Termux というアプリを使ってみた。
もくじ
- もくじ
- 下準備
- Termux で GitHub にログインする
- ローカルのファイルシステムを操作できるようにする
- リポジトリをクローンする
- クローンしたリポジトリを Obsidian から使う
- Git プラグインをセットアップする
- Git プラグインからファイルをプッシュする
- まとめ
下準備
まずは Android に Termux のアプリをインストールする。
同様に Obsidian のアプリもインストールする。
Termux で GitHub にログインする
Termux のアプリを開いたら GitHub CLI をインストールする。
$ pkg install gh
インストールしたら GitHub CLI で GitHub にログインする。
これには gh auth login コマンドを使う。
$ gh auth login
対話的にログインとセットアップのやり方を聞かれる。
Where do you use GitHub? > GitHub.com What is your preferred protocol for Git operations on this host? > HTTPS How would you linke to authenticate GitHub CLI? > Login with a web browser
Login with a web browser を選択したら、ブラウザで以下の URL にアクセスする。
そして、Termux の方に表示されているワンタイムコードを入力する。
First copy your one-time code: XXXX-XXXX
入力したら Termux 経由のアクセスを承認する。
ローカルのファイルシステムを操作できるようにする
デフォルトで Termux はデバイスのファイルシステムにアクセスできない。 そこで、アクセスできるようにセットアップする。
そのために termux-setup-storage コマンドを実行する。
$ termux-setup-storage
コマンドを実行するとホームディレクトリに storage というシンボリックリンクができる。
$ ls
storage
この storage からデバイスのファイルシステムにアクセスできる。
リポジトリをクローンする
すでに既存の Obsidian 用のリポジトリがあるときは、そのリポジトリをデバイスのファイルシステムにクローンする。
たとえば storage/documents の下に repos みたいなディレクトリを作る。
$ mkdir -p storage/documents/repos $ cd storage/documents/repos
作成したディレクトリで gh repo clone コマンドを実行してリポジトリをクローンする。
<username> には自身のアカウント名、<repo-name> にはリポジトリの名前を入れる。
$ gh repo clone <username>/<repo-name>
あるいは、まだリポジトリがないときは gh repo create コマンドで対話的に作成する。
$ gh repo create
もちろん、リポジトリを作る作業はパソコンなど操作性に優れた環境を使った方が楽だろう。
クローンしたリポジトリを Obsidian から使う
リポジトリはデバイスのファイルシステムにクローンされている。 そのため、あとは Obsidian からそのディレクトリを vault として指定するだけで利用できる。
Obsidian を開いたら「Open folder as vault」を選択して、先ほどクローンしたディレクトリを指定する。
Git プラグインをセットアップする
このままでも Termux から操作すればリポジトリを管理できる。 しかし、Obsidian の方からコミットやプッシュできた方が便利なので設定していく。
まずは Obsidian のアプリの設定を開いて「Community plugins」に移動する。 デフォルトでは Community plugins は無効になっているため、まずは有効にする。
そして Community plugins の「Browse」を選択する。 一覧の中から「Git」プラグインを探してインストールする。 インストール直後にはプラグインが無効になっているため有効にする。
有効にしたらプラグインのオプションを開く。 下の方にスクロールして「Authentication/commit author」の項目を埋めていく。
まず、「Username」や「Auther name」は GitHub のアカウント名を入れれば良い。
「Author email」は、GitHub の Web サイトを確認していれる。
GitHub の Web サイトをブラウザで開いたら「Settings > Emails」に移動する。
下の方に「Keep my email addresses private」という項目があるので、無効になっているときは有効にする。
その上で、記載されている <random>+<username>@users.noreply.github.com 的なフォーマットのメールアドレスをコピーする。
コピーした内容を、Obsidian の方の「Author email」に入れる。
「Password/Parsonal acccess token」は GitHub CLI で発行する。 Termux の方に戻って以下のコマンドを実行する。
$ gh auth token
表示されたトークンをコピーして「Password/Parsonal acccess token」にペーストする。
以上で Git プラグインをセットアップできた。
Git プラグインからファイルをプッシュする
次に Git プラグインが正常に動作することを確認する。
Obsidian のアプリの右下のハンバーガーメニューから「Open Git source control」を開く。 まずはダウンロードする感じのボタンを押下して Git リポジトリを Pull できることを確認する。 うまくいかない場合にはアプリを開き直したり、パソコンから一旦リポジトリにプッシュしたりしてみよう。 Pull できれば、Commit や Push についても問題なくできるはず。
まとめ
今回は Android で GitHub にある Obsidian の Vault を同期する方法について書いた。
