Kobitoを複数のMacで共有する方法

最近KobitoというMarkdownでメモがとれるアプリを使っているのですが研究室のMacにも共有したいなと思い、する方法を忘備録として残しておこうかと思ったので書いておきます。

Kobitoの内容を何で共有するか

昨今は色々なクラウドサービスがあるのでそれぞれ使いやすいサービスを使えばいいのでないかと思います。Google先生に聞くと多くのサイトではDropboxが例に出ていることが多いですね。たまにGitの例が出てくる感じです。どのサービスでも基本的にはやることは同じです。今回僕はGitを使用しました。

Kobitoのデータはどこに保存されているか

Kobitoのデータは~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/にあります。ここには

  • Kobito.db
  • Kobito.db-wal
  • Kobito.db-shm

があります。仕組みはよくはわかっていませんがこの3つのファイルが共有されていればちゃんと内容が共有されます。

ハードリンクを張る

Kobitoのデータがある階層でファイルに直接触れるのは面倒くさいので別の簡単に触れることができる階層(僕はDocumentフォルダにKobitoというフォルダを作成しました)に新たにフォルダを作成して上記の3つのファイルをコピーします。元のフォルダの3つのファイルは削除します。ここで、注意として3つのファイルはバックアップを取っておくことをお勧めします。もし、作業中にMacから3つのファイルを完全に削除してしまうとメモの内容が失われてしまうからです。コピーしたらターミナルで

$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/
$ ln ~/3つのファイルをコピーしたフォルダのパス/Kobito.db Kobito.db
$ ln ~/3つのファイルをコピーしたフォルダのパス/Kobito.db-wal Kobito.db-wal
$ ln ~/3つのファイルをコピーしたフォルダのパス/Kobito.db-shm Kobito.db-shm

を実行し、ハードリンクを張れば完了です。シンボリックリンクは昔は使えていたらしいのですが今は使えないらしいです。あとは3つのファイルをコピーしたものをGitやクラウド等で同期すれば共有できます。全てのmacに同様のリンクを張る作業必要となります。

訂正と追加(4/6)

以上のように書いていたんですけど、色々と微妙なところがでてきたので追加と訂正をしたいなと思います。上のように実行すると同期されたように見えるのですがGitに関してはgit pullした後変更が反映されてない状態がKobitoで見られたので原因を探してみました。今回利用しているハードリンクはiノード番号という内部のファイル番号を利用してリンクを張っているのですがgit pullで更新すると元ファイルのiノード番号が変わってしまい、ハードリンクの方は古いままということになってしまうのが原因であることがわかりました。対処方法は

  • 毎回、ハードリンク張り直す
  • ディレクトリ(フォルダ)をハードリンクする

の二つがあります。一つ目の毎回ハードリンクを張り直すは対処療法みたいなものであり、ターミナルのエイリアスなどで簡単に実行できるようにする方法です。二つ目はフォルダをハードリンクする方法です。注意としてディレクトリにハードリンク張ることはデメリットが発生したりすることもあるので自己責任でお願いします。やり方としてはmacは元々ディレクトリにハードリンクを張るコマンドはないので外部からツールを入れます。今回はHomebrewで github.com

というツールを導入しました。同期すべし3つのファイルがあるディレクトリをKobitoとすると

$ brew install hardlink-osx
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/
$ rm -r Kobito
$ hln ~/3つのファイルがあるディレクトリがある階層へのパス/Kobito Kobito

でディレクトリのハードリンクが張れたことになりちゃんとgit pullしても内容が更新されます。

今回は色々とありましたが他のことも学べて良かったのかなと思いました。