もう大分前のことになってしまいましたが、日記アプリとして長い間使っているDay Oneの同期が止まるという惨事に遭遇してしまいました。いろいろ試行錯誤して解決したのですが、久しぶりに真剣にトラブルシューティングをした気がします。再度同様の現象に出くわすことはないと思います*1が、もしかしての時のために経緯と対処の手順を残しておくことにしました。タイトルに書いたショーストッパーという言葉はWindows NTの開発物語として書かれたG・バスカル・ザカリー著「闘うプログラマー」の原題でオペレーティングシステムが演じるショーがバグにより停止してしまうことを言い表しています。
Day Oneの利用状況
Day Oneは記事を投稿した時点の場所、天気を記録しくれていて、子供のころに宿題の絵日記を書く上で苦労したことを忘れさせてくれるアプリですが、どんな使い方をしているのかを図に表してみました。
完了したリマインダー*2、twitterの投稿等はIFTTTを介してDay Oneに送り込みます。つい最近IFTTTの使用条件が変更になり、twitterへのアクセスはPro以上のグレードが必要になりましたのでまあ仕方ないかとFreeからProに変更しました (´_`。)。
書類とメールの下書きもDay Oneで書いてからそれぞれのアプリで体裁を整えることもしています。その他、重要なメールもDay Oneに残すようにしておきたいのですが、そのためにはEmail entriesという機能が必要でDay Oneを年額¥3,800-*3のPremiumプランにしないとならないのでさすがにそれは見送っています。
ジャーナルは全部で6個ほど。1年分の記録とMac他の機器類を運用していく上での事象の記録との2種類に分かれています。今年の記録は年を越した際にジャーナルを新しく作りそちらに移動します。これはIFTTTが記事を投稿する際にジャーナルのIDを使用しているためです。
さらに前後しますが、その昔Day One 2.0を2016年2月から2017年6月に購入したユーザはPlusというほぼPremiumプランと同等の機能が使える*4扱いをしてくれています*5。機能の比較表です。
macOS、iOSを使ううえで最重要アプリですが、macOS Sonoma、iOS 17でAppleのジャーナルアプリが登場するようなので少し楽しみではあります。
災厄は突然に
毎朝出かけるときにオドメーターの数値、冷却水とオイルの状態*6を記録しているのですが、5月連休後しばらくしてこのエントリが他のデバイスに同期されていないことに気がつきました。最初はネットワークの状態がよくないのかと深刻に考えなかったのですが、どうやらそうでもないようです。
試しにiPadからiPhone、macOSからiPhone、iPadへ同期がされるか確認してみたところ思ったよりも深刻で、iPadと他のデバイス以外は全く同期がされていない状態でした。
こんな表を書いてテストをするなんて何年ぶりでしょう。表の中で、DayOne.meは5月連休前後からベータとして公開された機能です。
これではそれぞれのデバイスでスタンドアロンで使っている状態です。ダメだ❗
対処は根気よく
とりあえずサポートにアクセス
まず、Day Oneアプリの設定にある「診断情報をメールで送信」を使って各デバイスの診断情報をサポートに送ってみました。返ってきた答えは「メールでのサポートはPremiumにしてね」というつれないもの。そんなことは比較表に書いてないぞと毒づいてみてもらちがあきません。仕方がないので独力で対処することに。けれども、最悪の事態は想定しておかないとなりません。それは、
- 全ジャーナルのエントリを退避してから全ジャーナルを削除する
- 全てのデバイスのDay Oneアプリをアンインストールしてから再インストールする。その際にアプリの設定情報も削除する
- Day Oneのアカウントを削除して新規に作成する(買い直しかもしれない)
この処置まで想定するとなると、ショーストッパーではなく大災厄(Disaster)です。わくわくしてくるのは職業病。
デバイス・ジャーナルごとの件数を比較してみる
まず、ジャーナルごとの日別の件数を現象が起きた5月連休の後から比較してみます。対象は今年の記録と機器類の運用記録。他のジャーナルはいわばアーカイブで更新してはいませんので対象外とします。すると、5月17日以降に件数の不一致があることがわかりました。
iPadのジャーナルを正として同期されていないエントリを救済する
唯一同期が正常に動作している様子のiPadを正とするために、同期されていないエントリをiOS、macOSからエクスボートで抽出してiPadにインポートします。インポートし終えたらiPadはWi-Fiをオフにしてしまいます。全ジャーナルを削除するという悲惨な処置を防ぐためです。
ジャーナルを削除するかそれとも
エントリの保存ができましたのでいよいよ処置を行いますが具体的にどうするかは見当がつきません。そこで、件数の不一致が起きているジャーナルの同期を停止してみることにしました。すると、「同期中のエントリがあるため停止できません」という主旨のメーセージがiOSで操作を行ったときに表示されました。macOSで同じことをしてみるとやはり同じメッセージが表示されました。恐らくこれが同期を停止させている原因でしょう。
原因を特定
「同期中のエントリがあるため停止できません」という主旨のメーセージの原因となっているであろうエントリを特定することにします。
件数が不一致となっている日はすべてiOSの件数が多い状態です。最初に件数が不一致となっている日でiOSだけにあるエントリを見つけてそのエントリを削除します。すると、ジャーナルの同期を停止することができ、同期を再開するとオフラインにしているiPadを除くデバイスで件数が一致しました。やはり1件のエントリが同期を止めていたようです。
なんとか、大災厄を免れることができました。
要約すると簡単ですが
こうして、処置の経過をさかのぼると簡単に原因が特定できたようになりますが。デバイスを再起動したり、ホーム直下のLibraryにあるPlistを削除してみたりと相当な時間を費やして試行錯誤をしました。
原因はなんだったのだろう
同期は正常に戻りましたが、原因はなんだったのでしょうか。日常で行わない操作をしたのはDayOne.meが公開された直後にWebで行ったジャーナルの同期の操作です。
この操作自体はどうということのない操作のはずですが、他のデバイスで同じジャーナルを操作していたのかもしれません。その結果不整合が発生したのかもしれません。
今夏のドタバタで得た教訓です。
ジャーナルそのものに対する操作は慎重に。できればシングルユーザで!
最後まで読んでいただき、ありがとうございます。