スティッキーズを Subversion (svn + ssh) で複数のマックでシンクロさせる

開発用のデスクトップ (intel Mac mini) と、持ち歩き用のノート (iBook G4) を併用するようになって、困ったのがマックのデフォルトの付箋紙ソフト、スティッキーズの共有。予定やら TODO やら、なんでもスティッキーズに貼付けてしまうので、同期が取れてないとかなり不便。どうにかできないものかというのが今日のお題。

Windows にはそのものずばり Stickies という名前のソフトがあって、これはネットワーク越しに、http やメールサーバを使って同期できるようです。
Mac ではdotNotesというのが。これは iDisk 越しにシンクロするらしい。ドーネションウェア。

じゃあ .Mac いくらよ、と調べてみたら年間料金は9,800円(税込)!高い!今はキャンペーン中で3,000円キャッシュバックらしいが、それでもこのサービスでこの値段は…

んーせっかく UNIX ベースなんだから、なんとかならないかといろいろ調べると、要はデータベースファイルの ~/Library/StickiesDatabase を共有できればいいようだ。これディレクトリに1メモ1ファイルでテキスト保存とかだったら、もっといろいろできるのに、ってのは UNIX に毒されてる?

データベースファイルをサーバにアップして subversion で管理、ssh 経由でローカルに落としてくるという方針を立てた。svn-client は fink でインストール。

参考にしたのはこのあたり

Subversionを ssh 経由で使おう(ApacheもWebDAVも必要ないよ)

クイックスタート

クイックスタートには

人によってはこの本での「トップダウン」的なアプローチによって新しい技術を習得するのが困難かも知れません。この節では Subversion の非常に短い導入方法を用意し、「ボトムアップ」的な読者にも挑戦の機会を与えることにします。あなたが経験によって学ぶやり方を好むようなタイプの人であれば、以下のやり方がうまくいくでしょう。途中、この本の関連した章へのリンクをつけてあります。

とあってどっきり。すいません、完全に「ボトムアップ」でしか物を考えられない人間です。

とりあえず出来上がった subversion レポジトリーのチェックアウトスクリプトがこれ

#!/bin/sh
svn checkout svn+ssh://(ユーザ名)@(svnホスト)/path/to/svnrepos/trunk/stickies ~/.svn_stickies
cp ~/.svn_stickies/StickiesDatabase ~/Library/StickiesDatabase

いったんホームディエクトリに .svn_stickies というディレクトリを作ってそこにチェックアウト、それからコピーしてます。これを Stickies を立ち上げる前にクリック(実行属性をつけて、拡張子を .command にしておけば、ダブルクリックで立ち上がります。ターミナルウインドウが残るけど)

subversion レポジトリーのチェックアウトスクリプト

#!/bin/sh
cp ~/Library/StickiesDatabase ~/.svn_stickies/StickiesDatabase
svn commit ~/.svn_stickies -m ''

これを Stickies 終了時に呼び出せば、変更がサーバに保存されます。

ネットにずっとつながっているマシン(うちだと macmini)なら、このアップルスクリプト


on run
	do shell script "svn checkout svn+ssh://(ユーザ名)@(svnホスト)/path/to/svnrepos/trunk/stickies ~/.svn_stickies;/bin/cp ~/.svn_stickies/StickiesDatabase ~/Library/StickiesDatabase"
	tell application "Stickies"
		run
	end tell
end run
on idle
	do shell script "/bin/cp ~/Library/StickiesDatabase ~/.svn_stickies/StickiesDatabase;/sw/bin/svn commit ~/.svn_stickies -m ''"
	return 600
end idle
on quit
	tell application "Stickies"
		quit
	end tell
	do shell script "/bin/cp ~/Library/StickiesDatabase ~/.svn_stickies/StickiesDatabase;/sw/bin/svn commit ~/.svn_stickies -m ''"
	continue quit
end quit

をアプリケーションフォーマット(実行自動終了しないにチェック)で保存して、このアプリケーション経由で Stickies の開始と終了をすれば、自動で同期がとれます。立ち上げているあいだ10分ごとにも保存。とにかく楽がしたいので初めてアップルスクリプトをいじってみました。

解像度がデスクトップとノートで違うので、デスクトップで上三分の一の範囲にメモを置くと、ノートでは見えません。このあたり OS 9 の Virtual Desktop のようなのが OS X でないのかな、捜索中です。

Stickies がアップルスクリプト対応でないので、セーブしたときにイベントを拾って自動でアップとかが出来ません。なんだか人気のあるソフトなのに、アップルの製品のなかでは不遇な気がします。ウィジェット版より便利なのに。

Leave a Reply