nNote のエントリはテキストファイルでサーバに置くだけで公開できるようになっていて下記のように同期して運用しています。
nNote (www.naney.org) <-- 別の Mac から Emacs + TRAMP で編集 | <「Unison」で同期> | 自宅にある母艦 MacBook Pro <-- 編集(メイン) | <「バックアップと同期」で同期> | Google ドライブ <-- スマートフォンの JotterPad/iA Writer で編集
これだと外出先では nNote と Google ドライブが同期できずちょっと不便。なのでスマートフォンにも同期をすることにしました。
Android スマートフォン <-- JotterPad/iA Writer で編集 | <「FolderSync Pro」で同期> | nNote (www.naney.org) <-- 別の Mac から Emacs + TRAMP で編集 | <「Unison」で同期> | 自宅にある母艦 MacBook Pro <-- 編集(メイン) | <「バックアップと同期」で同期> | Google ドライブ
FolderSync Pro で SFTP を使って nNote のディレクトリと Android スマートフォンの「Documents/iA Writer/nNote」ディレクトリを同期します(iA Writer のライブラリにある Device (Public) は Documents/iA Writer 固定のため)。
nNote は公開しているものなので、スマートフォン上にはあまりデータを置いておきたくない派ですが今回は許容ということで。
Jota+ などから直接 SFTP 経由で nNote のファイルを編集するという手段もあったのですが、 JotterPad(ブラウズしやすい・バージョンが残るので戻せる)や iA Writer(ブラウズしやすい・簡易チェックボックス機能がある)を使いたいというのもあるので、同期してローカルで編集することにしました。
[ ファイル同期 ]
テキストファイルベースでノート管理をするのに Mac では Ulysses や iA Writer を、 Android デバイス上では JotterPad を使っている。JotterPad は主にユビキタスキャプチャ用のフォルダを開いた状態にしているので、フリーノート用に使える Android アプリを別に欲しいところである。
しかしテキストエディタはいろいろ存在するのだけれど、ファイル一覧で中身をプレビュー表示できるものはほとんど無いんだよね。ノートアプリとして使うにはファイル名一覧では駄目で、中身がずらずらっと見られる必要があるのだ。例えば Google Keep の表示みたいに。
で、いろいろ探してみたところ以前から名前は知っていた neutriNote が、テキストファイルとしてデータを保存するタイプでしかも一覧表示でプレビュー表示で中身を横断的に見られそうなのでインストールしてみた。
(play.google.com/store/apps/details?id=com.appmindlab.nano より)
名前なニュートリノからきているらしい。
neutriNote はデバイス上に指定したローカルリポジトリ(フォルダ)にテキストファイルとしてデータを保存するので、Dropbox や Google ドライブで同期できる。
neutriNote にもオプションで「neutriNote Connector+」というアプリがあるのだけれど、 Dropbox のアプリフォルダ以下だけのアクセスタイプで作られているので自分の用途に合わなかった。
ので今回は以前から使っている FolderSync Pro で Dropbox と双方向同期させることにした。インスタント同期をオンにしておけば neutriNote で変更を加えたらすぐ Dropbox に同期させられる。Dropbox 側での変更を検知して同期することはできないので別途定期同期を設定しておくとともに、 Android デバイスのホーム画面に同期開始のショートカットを置いておいた。
ちなみに neutriNote ではファイル名が ~で始まるものは隠しファイルなので同期から除外。逆に Ulysses は .Ulysses で始まる隠しファイルを作るのでこれも同期対象から除外にした。
テキストファイルベースのノート管理というスタイルに超ハマる Android アプリだ。 常用ノートアプリの仲間入り!
[ ノート・日記はテキストファイルに ] [ ファイル同期 ]
MacBook Pro の内蔵 SSD の容量がいっぱいになってきたので NAS にオリジナルを移動し、そのバックアップとして新しく買った外付け SSD を使うことにした。NAS 上のフォルダと MacBook Pro に接続した外付け HDD 上のフォルダを同期するのに今回 FreeFileSync を使うことにした。
ちょっと古風な UI だけれど良くできている。操作として
としっかり2段階になっているのが好き。このあたり2003年からリモートホストとの同期に愛用している Unison File Synchronizer と同じ考え方なのでしっくりくる。
同期処理でのファイル削除時にバックアップを作成する設定にもしておける。この設定をしておくことで間違えた時にリカバリもできる。
Unison をリモートホストでも実行できる場合の双方向ファイル同期には Unison を、ローカルホストだけで双方向同期をさせる必要がある場合は FreeFileSync という形で今後使い分けよう(ちなみに Android では FolderSync Pro)。
[ Mac アプリケーション ] [ ファイル同期 ]
と3台のストレージ上に置かれるようにしている。
3箇所にあるのでそこそこ安心なのと、オリジナルが MacBook Pro 上にあるのでいつでも観ることができるという使い勝手の良さがある。一方 MacBook Pro のストレージを圧迫しちゃう。最近 MacBook Pro のストレージが残り 10GB〜20GB ぐらいになってしまい支障が出てきたので見直すことにした。
オリジナルは NAS (Synlogy DiskStation DS216j) に置くことにしよう。自宅にいればいつでもアクセスできるので動画を観ることができる。
NAS は2台ある HDD のうち1台が壊れても大丈夫にはできているけれども、重要なファイルはバックアップが必要。予算や設置場所を考えて NAS + NAS はちょっと無理なので NAS + 外付け SSD にする。
安くなっていたバッファローの外付け SSD を購入した。
外付け SSD へのバックアップだけれど、今後もし自分に何かあった時にも残された家族が使い方に迷わず動画ファイルを観られるように、 Mac につなぐだけで Finder でアクセスできる形式になるようにすることにした。
動画ファイルが増える機会はそれほど頻繁ではないので、 Synology DiskStation DS216j に常時接続しておいて定期的に自動バックアップというのはせずに、 MacBook Pro に外付け SSD を接続して手動でバックアップすることにする。
双方向ファイル同期は今回は FreeFileSync を使うことにした。
180GB 強を今日と翌日で移動完了。ようやく MacBook Pro で余裕をもって作業できるようになったよ。
Pixel 4 の DCIM フォルダと Pictures フォルダを Dropbox と FolderSync Pro で定期的に同期させておくことにした。Pixel 4 で撮った写真は、あとで Mac 上で Dropbox フォルダから移動して整理。次の同期タイミングで Pixel 4 からは削除されてスッキリ。
Pixel 4 で Google フォトの「バックアップと同期」を OFF にしたことによるバックアップ不在問題もこれで解決。
スマートフォンから Android アプリ Solid Explorer で Synology DiskStation DS216j (NAS) に移動、 DS216j と Mac は Synlogy Cloud Station で同期という形で Xperia Z5 の時から写真を移動していたのが今まで。 Solid Explorer での一手間が無くなったので、これで後回しにすることが無くなるよ。
[ ファイル同期 ]
FolderSync Pro で Pixel 4 と Dropbox とでノートテキストファイルのあるフォルダを30分間隔で同期しているんだけれど、同期前にうっかり Pixel 4 上と MacBook Pro の両方で編集して Pixel 4 で書いた分をロストしてしまった。
MacBook Pro 側の変更は Dropbox のバージョン履歴でリカバリできるけれど Pixel 4 側は現状リカバリできるようになっていない。編集中のバージョンを一定間隔で保存してくれる JotterPad にテキストエディタをしばらく戻してみることにした。
JotterPad はいつの間にかクラウドストレージとの同期機能は要サブスクリプションになったのね。クラウドストレージ側のファイルが多いと同期に非常に時間がかかって過去常用できなかった経験があるので、ローカル編集用のテキストエディタとして使い、同期は引き続き FolderSync Pro にしておこう。
[ ノート・日記はテキストファイルに ] [ Android アプリ ] [ ファイル同期 ]
双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。
macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。
2021年01月05日時点での安定版は 2.51.3。
$ brew install unison
で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。
Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。
$ xcode-select --install
で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。
OCaml は Homebrew ので済ます。
$ brew install ocaml
今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ make all
make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。
諦めて make で text UI 版だけバイナリを得ることにした。 make 後
$ ./src/unison -version
で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。
ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。
まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。
$ cd ~/tmp $ mkdir bin $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh $ BINDIR=$HOME/tmp/bin sh install.sh
リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。
OCaml の前に遡って opam のビルドをする。
$ cd ~/tmp $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz $ tar zxvf 2.0.7 $ cd opam-2.0.7 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam" $ gmake cold-install
ビルドできた。opam を初期化する。
$ PATH=$HOME/tmp/opam/bin:$PATH $ opam init
gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。
OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。
$ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz $ tar zxvf 4.10.0.tar.gz $ cd ocaml-4.10.0 $ ./configure --prefix $HOME/tmp $ gmake $ gmake install
次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ PATH=$PATH:$HOME/tmp/bin $ gmake $ ./unison -version $ mkdir -p $HOME/local/unison-2.51.3/bin $ cp -a src/unison $HOME/local/unison-2.51.3/bin
ノートテキストファイルは全文検索できるよう Google ドライブと同期しておきたい。それと同時に他の PC との同期のため Dropbox とも同期しておきたい。しかしセキュリティを考えてクラウド同期サービスは使いたくない。
Google の「バックアップと同期」アプリと Dropbox アプリの両方を動かしてそれぞれローカルフォルダと動機している MacBook Pro 上で、そのローカルフォルダ間のファイル同期を実行してみることにした。
使うのは普段リモートホストとの同期に使用している Unison File Synchronizer。最近になって repeat = watch というファイル更新をモニタリングするオプションを知ったので試してみる。
ファイル更新モニタリングで使う Unison 標準の unison-fsmonitor は macOS では使えないらしいので代替の https://github.com/autozimu/unison-fsmonitor をインストールする。
$ brew install autozimu/homebrew-formulas/unison-fsmonitor
Unison の同期用のプロファイルは以下のような感じ。
root = /Users/naney/Google ドライブ/folderA root = /Users/naney/Dropbox/folderA times = true repeat = watch silent = true logfile = /Users/naney/var/log/unison.log
(実際には path や ignore をもう少し指定している。)
repeat = watch と silent = true をいったんコメントアウトして
$ unison <プロファイル名>
で手動同期し、期待通りの同期ができているか確認する。問題無ければ
$ nohup unison <プロファイル名> &
で監視を開始する。
動作確認した感じでは
と安定して使える感じだ。
コンフリクトが起きた場合はスキップされたままになるので、たまに手動で Unison を実行して確認した方が良さそうではある。
[ ノート・日記はテキストファイルに ]
DAT#photography
— Naney (@Naney) March 2, 2021
RICOH GR III #GR #GRIII #GR3 pic.twitter.com/FOtwGxa1dt
早期割引購入のうちにと去年 Obsidian Sync を購入してから1年経ったのでサブスクリプションを自動更新した。
$48/年。クレジットカード決済での換算レート142.860円で、支払い額は6,857円だ。去年の支払い額は5,410円。円安で支払額アップ。
MacBook Pro と Android デバイス (Pixel 4) で Obsidian vault を同期するのに便利に使っている。編集すると即同期されるので便利。
誤編集した時に同期のバージョン履歴を見て戻せるのも地味に便利だったりする。
フォルダを移動したり名前を変更したりするとその中のノートが削除 & 新規作成扱いで同期し直されるので、数が多いと結構待たなければならないというのが少し不便なぐらいかな。
自前でファイル同期を管理する手間を考えると価値ありなので、複数デバイスで Obsidian を使う限り使っていこうと思う。
[ サブスクリプションサービス ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。