OF Syncronization never completes



OmniFocus(OF)の1.1がα版なのに調子いいんだよ。
そんなエントリーを書いたばかりなのに、あるいはそんこと書いたからか、久々のシリアスな不具合。

現象は「OF for iPhone 1.0.2で同期をかけると永遠に終わらない」

久し振りなので焦ってしまったけど、同期系のアプリやシステムがトラブった時はデータをリセットするに限るという鉄則通りに対処。念のためOFのFAQを調べたら同じ事が書かれていましたが。

まずMac側およびiPhone側のOFが勝手に同期しないよう設定。
それからマスターとなるデータを決める。今回の場合はMac側が最新であることが判っているので、まずMac側のDBをバックアップ。
さらにMac側でDBをリビルド。これでおそらく不要なレコードなどは削除されるはず。

それからサーバー上のデータを消す。MobileMeのiDisk上にOFのDBを置いてあるので、そのDBを消す。
具体的には IDISK/自宅/Documents/OmniFocus.ofocus がそれ。
今回初めて知ったのだけど、このDBはXMLファイルの塊なんですね。ActionやContextは1件1ファイルで管理されているようです。
さらにFAQによると、メモリ容量の制限が厳しいのでActionの件数は1000件を超さない程度に抑えて欲しいそうです。
もしその件数を超えるようなら旧いActionデータを別データとしてアーカイブするようにと。
なるほど、OFのファイルメニューにある「Move Old Data to Archive...」というのはそのためのものだったのですね。

次にMac側のOFをサーバーと同期させ、今消したDBを最新のもので作り直します。

最後にiPhone側のOFを立ち上げ、DBをリセット。この場合はiPhone側のDBを消すはずなんですが、どうも完全に消えないみたい。

iPhone側でDBをリセットした後の最初の同期は上手く行くんですが、その後ホーム画面に戻りOF for iPhoneを再起動するとクラッシュする場合があります。するともうダメで、いくら再起動してもDBを読みに行ったままになってしまいます。

再起動してもクラッシュしない場合もあるんですが、その場合は再起動後最初の同期の時にやはりそのまま同期し続けるという症状になってしまいます。

うーむ、うーむ。
やはりiPhone側のデータが完全に消えておらず、OFが扱うデータに不整合が出ているみたい。
もういちどOmniのサポートページでFAQを読む。
すると、アプリの再インストールという手段があるようです。
アップルのそれを説明したページはここ
日本語ページもあるけど英語ページに書かれている肝心のところが欠落しているので、英語ページの方を参照すべきですね。

まずiPhoneを再起動。
ホーム画面で再インストールしたいアプリを削除。これでiPhoneからアプリもデータも消える。
iTunesのライブラリ→アプリケーションから該当するアプリを削除。アプリを選択してコンテキストメニューを出すと、そこに「削除」があるので、それを選択。
削除するアプリは「ゴミ箱に移動」することを忘れずに。

アップルのナレッジベースには書いてありませんが、ここでいったんMacとiPhoneを同期させた方が確実だと思います。実際ボクは同期させました。

それからアプリを再ダウンロード。この時、最初に出てくるダイアログには「ただちに課金しますよ」という意味の英文が書かれているのでビビります。これが$999.99の例のアプリなんかだったら怖くてOKボタンは絶対押せませんね。でもOFは2,300円なのでイザとなればiTMSとネゴって返金してもらう覚悟でダウンロード。
でも次のダイアログで「このアプリケーションは購入済みなので無料でダウンロードできます」と出てくるので心配なく(笑

後は普通のアプリ同様にダウンロードして、MacとiPhoneを同期させればさらの状態でOFが再インストールされます。

ここからはさっきと同じ。念のためサーバー上のDBを消し、Mac側のOFをサーバーと同期させ、最後にOF for iPhoneを起動して最初の同期を実行。

ここまで解明して元の状態/環境に戻すのに半日近くかかりましたが、その後は問題なく同期できています。
次にこうなったらもっと早く復帰できますね。
もっともそんな事態にならないことが一番なんですが。
このエントリーをはてなブックマークに追加