MiDiccio のゴミ箱機能改善についてのご案内
単語帳アプリ MiDiccio の v1.4.4 で、ゴミ箱から言葉を完全に削除できるようにしました。あわせて、バックアップから「置換」で復元したときの扱いも見直しています。
前回の記事の続きです。前半は使っている方に向けた変更点のまとめ、後半は開発者向けの仕組みの解説です。
変わったこと
セクション「変わったこと」ゴミ箱から完全に削除
セクション「ゴミ箱から完全に削除」- ゴミ箱の言葉を完全に削除できるようになりました。 1件ずつ削除するほか、ゴミ箱をまとめて空にすることもできます。
- 完全に削除した言葉は元に戻せません。 クラウド同期を使っている場合は、iCloud / Google Drive とほかの端末からも消えます。
置換で消える言葉はゴミ箱へ
セクション「置換で消える言葉はゴミ箱へ」- 「置換」で復元したとき、バックアップにない言葉はゴミ箱に移るようになりました。
- ゴミ箱の言葉を「すべて元に戻す」ことができるようになりました。 間違ったバックアップで置換しても、まとめて戻せます。
- 同期を使っている場合、置換でゴミ箱に移った言葉は、ほかの端末でもゴミ箱に移ります。
- バックアップにも含まれる言葉は、これまでどおりバックアップの内容で上書きされます。上書きされた内容はゴミ箱に入らないので、置換の前に今のデータもバックアップしておくと安心です。
あわせて、プライバシーポリシーを v1.13 に改訂し、完全に削除した言葉の扱いを記載しました。
開発メモ
セクション「開発メモ」ここからは仕組みの話です。前回の記事の「同期のルール」と「削除は『印を付けるだけ』」を前提にしています。
前回の課題
セクション「前回の課題」前回、完全に削除がまだない理由として、次の3つを挙げました。
- 端末の中で消しても、ほかの端末やクラウドには残っているので、次の同期で戻ってくる
- 「完全に削除した」という情報を全端末とクラウドに伝える仕組みが別に必要
- 古いバージョンのアプリが混ざっている場合も考えなければならない
消さずに「中身を空にする」
セクション「消さずに「中身を空にする」」完全削除では、レコードを消さずに、中身を空にした削除レコードで上書きします。
- 言葉・意味・メモ・タグを空にし、「削除済み」の印だけを付けたレコードにする
- 更新日時を新しくし、「未送信」の印を付ける
- あとは通常の同期で、Last-Write-Wins によりほかの端末とクラウドに伝わる
レコードそのものは残るので、次の同期でクラウドから「戻ってくる」ことはありません。残るのは、どの言葉かを見分ける ID と日時だけです。完全削除を「中身を消す編集」として扱ったので、ゴミ箱のときと同じく、同期に新しいルールを足さずに済みました。
古いバージョンが混ざっても困らない
セクション「古いバージョンが混ざっても困らない」古いバージョンとの互換性にも問題はありませんでした。
- v1.4.1 のゴミ箱は、もともと中身が空の削除レコードを一覧から除外していた
- 以前のバージョンのアプリは、削除のときに中身を空にしたレコードを送っていた。今回の削除レコードはこれと同じ形
そのため、ほかの端末が v1.4.1 のままでも、完全に削除した言葉はゴミ箱から消えるだけで、不具合にはなりません。
置換を「削除」として同期する
セクション「置換を「削除」として同期する」これまでの置換は、端末のデータをバックアップの内容に入れ替えるだけでした。同期を使っていると、ここに問題がありました。
- 置換で消えた言葉は、クラウドにはまだ残っている
- 次の同期で「クラウドにだけある言葉」として戻ってくる
そのため、「置換」という説明どおりになりません。逆に同期を使っていないと、消えた言葉を戻す手段がありません。
v1.4.4 では、置換を次のように変えました。
- バックアップにある言葉は、これまでどおり ID ごとに上書きする
- バックアップにない言葉は消さずに「削除済み」の印を付け、更新日時を新しくして「未送信」にする
- もともとゴミ箱にあった言葉は変えない
ふだんの削除と同じ扱いなので、ゴミ箱に入り、同期でほかの端末にも削除が伝わります。「すべて元に戻す」で、置換の前の言葉をまとめて戻せます。
ダウンロード
セクション「ダウンロード」v1.4.4 は App Store と Google Play で公開しています。