enchantMOONをUSB接続すると自動的にバックアップ保存するアプリを作ったよ!

Twitter のタイムラインで見かけたのだけど、スリープしていた enchantMOON を眠りから起こすとデータが消えていたってことがあるらしい。
自分はちょっと違うのだけどやはり全データが消えた!と思った状況になったことがあって、その時には運良くデータは消えなかった。

けど enchantMOON のシールを作ったりしているといつデータを壊してしまうか心配でもあるので、enchantMOON を Mac に USB 接続したら自動的にデータをバックアップしてくれるアプリ BackupMOON を作ってみた。

これで、少しはデータが壊れる心配から解放されるかな。

 使い方

以下、簡単な仕様からダウンロード、インストール、使い方です。

 簡単な仕様

動作環境:MacOS X 10.7 以降
注意:
・ソフトウエアは十分にテストをしていますが、お使いのパソコン環境や、プログラムの不具合などによって問題が生じる場合があります。それにより損害が生じても、損害に対する保証は出来かねますので、あらかじめご了承ください。

 ダウンロード

以下のリンクからダウンロードできます。

 インストール

ダウンロードした BackupMOON.zip を展開したら、BackupMOON ファイルを「アプリケーション」フォルダへ移動。

これでインストールは完了です。

注意:
BackupMOON は「アプリケーション」フォルダに入れておかないと、”自動”でのバックアップは機能しません。

 使い方

アプリケーションを起動すると設定画面が開きます。

バックアップの設定をしてアプリケーションを終了すると、enchantMOON を接続したときに自動的にバックアップをするようになります。

簡単に画面の説明。

  1. バックアップ場所
    バックアップを保存するフォルダのパスです。
    デフォルトはユーザのホームフォルダです。
    このフォルダの中にバックアップ毎に「BackupMOON-yyyyMMddHHmm」というフォルダを作って、その中に「data」「DCIM」「Screenshots」フォルダを保存します。
     
  2. 「変更」ボタン
    上記バックアップ場所を変更するダイアログを表示します。
     
  3. 最後のバックアップ
    最後にバックアップを行った時刻を「yyyy/MM/dd HH:mm」で表示します。
     
  4. 「間隔」ポップアップメニュー
    バックアップを行う間隔を設定します。
    「毎回」の場合は enchantMOON を接続する度にバックアップを行います。
    「x 時間」の場合は、enchantMOON が接続されたときに、最後のバックアップから x 時間以上経っていればバックアップを行います。
     
  5. バックアップするフォルダ
    enchantMOON の中のどのフォルダをバックアップするのかを設定します。
     
  6. 通知
    自動でバックアップを行った場合に通知センターを通じてお知らせをします。

    このチェックボックスは Mountain Lion 以降のシステムでのみ表示されます。
     
  7. 自動で起動
    USB 接続をした時に自動的にバックアップを行うかどうかを設定します。
    自動で行わない場合は、USB 接続してもバックアップは行われません。
    その場合は「BackupMOON」をダブルクリックして起動すれば、設定画面から手動でバックアップを行えます。
     
  8. 「今すぐバックアップ」ボタン
    「間隔」の値に関係なく、今すぐにバックアップします。
    enchantMOON が見つからない場合にはグレー表示になります。
     
 自動バックアップについて

自動でアプリが起動するのはデバイスがマウントされた時(「StartOnMount」)です。
イベント発生時に接続されているボリュームを確認して enchantMOON が見つかったら、バックアップを行うかどうかの判断をしています。

しかし「StartOnMount」イベントは enchantMOON だけでなく他のデバイスがマウントされたときにも発生します。
その時に enchantMOON が接続されていなければ問題ありませんが、接続されていると enchantMOON が新しく接続されたと勘違いしてバックアップを行うかどうかの判断を始めてしまいます。

というわけで、デフォルト状態の Time Machine は 1時間毎にバックアップディスクをマウントするので、その度に BackupMOON も裏で起動します。
もし、enchantMOON が接続したままの場合は、1時間毎に BackupMOON が起動して「間隔」をチェックしてバックアップを行うかどうか判断してしまいます。

 最後に

久しぶりに MacOS X のコードを書いたら色々と忘れていて大変だった…。
バインディングをすっかり忘れていて、途中で「あれ?」っと思ったときには面倒で、結局バインディングなしで最後まで行ってしまった。
なので Preference 周りはとっても酷いことになってるから、そのうち綺麗に書き直したい。

あと、アプリやファイルの場所が大事なので本当はインストーラを用意してインストールするべきなのだろうけど、パッケージ作ったことがないので今回は見送った。
なので初回起動時に plist ファイルを自身でコピーしている。

「StartOnMount」の問題は、最初「LaunchEvents」でデバイスの接続を製品IDとベンダーID使って取得してみたのだけど、enchantMOON が「マウントしてパソコンに接続しますか?」とダイアログを出している状態でイベントが発生してしまうので使えなかった。

本当は本体だけでネットワーク経由でクラウドにバックアップできれば一番良いとは思うのだけど、今の状態の enchantMOON だとそんなシール作れないよな〜。
次の enchantMOON のアップロードって月末頃だっけ?

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)