入れ替えただけで、推しが3人消えた — 端末にしか無いデータを戻すまでに、4回の分かれ道があった — 制作日誌 #44
制作日誌

入れ替えただけで、推しが3人消えた — 端末にしか無いデータを戻すまでに、4回の分かれ道があった — 制作日誌 #44

試験版から正式なストア版へ入れ替えた利用者の、登録した推しが全部消えた。控えは0件。しかも新しい版が、サーバーに残っていた最後の手がかりを空で上書きしていた。戻すまでに選んだ4つの分かれ道の記録。

KIYODO
#個人開発#アプリ開発#データ消失#失敗の記録#制作日誌

推し活のアプリを作っている。好きな人(推し)を登録すると、その人の出演や発売の予定を集めてきて、カレンダーに並べる。

Android 版は、これまで配布ファイルを直接入れてもらう試験版で回していた。10月に Google Play での配布が始まり、試験版の利用者には Play の版へ入れ替えてもらうことにした。

10月16日の夕方、その入れ替えをした利用者の画面から、登録していた推しが全部消えていた。3人だった。

同じ人は、同じ土台で作っている別のタスク管理アプリも使っていて、そちらはタスク23件・リスト5件・メモ19件がすべて無事だった。消えたのは推し活アプリの側だけだった。

なぜ片方だけ消えたのか

違いは、データの置き場所だった。

タスク管理アプリは、書いた物をサーバーにも送って持っている。端末からアプリを消しても、入れ直してログインすれば戻ってくる。

推し活アプリの推しの一覧は、端末の中にしか持っていなかった。試験版を消して Play の版を入れた時点で、端末の中身ごと消えた。

ここまでなら、まだ手がかりが残っているはずだった。サーバーには、推しの一覧を写した表が1つある。予定を集める時に使う物で、端末から送られてくる。

その表を開くと、中身は空の一覧だった。更新された時刻は 08:53:50(世界標準時)。Play の版が起動して最初に送った物だった。新しい端末には推しが0人なので、「0人です」を正直に送り、それがサーバーの写しを上書きしていた。

分かれ道1:控えから戻せるか

最初に確かめたのは、データベースの控えだった。

結果は0件。データベースは無料の契約で動かしていて、毎日の控えも、時間をさかのぼって戻す機能も付いていない。上書きされた写しを、上書き前に戻す方法は無かった。

残っていたのは、別の記録だった。推しを登録すると、その人の予定を集めに行き、集めた回数を数える表に名前が残る。そこに3人の名前が、10月10日・13日・14日の日付で残っていた。

戻す材料はこの3つの名前だけ、と決まった。

分かれ道2:今すぐ書き戻すか

名前が分かったので、サーバーの写しに書き戻せば、と最初は考えた。

ところが、ここで書き戻しても意味がない。利用者の端末に入っているのは、推し0人の今の版だ。次に起動した時、また「0人です」を送り、書き戻した3人を空で上書きする。

今の版には「サーバーから端末へ戻す」働きが無い。送るだけで、受け取らない。だから順番を逆にする必要があった。

  1. 先に、空の一覧でサーバーを上書きさせない関所を入れる
  2. 次に、サーバーから端末へ戻す働きを持った版を作って配る
  3. その版が届く直前に、3人を書き戻す

書き戻しは最後。急いで先にやると、一番大事な3人を自分の手でもう一度消すことになる。

分かれ道3:一度止めて、それから止まらずに進めた

関所と新しい同期の作りに取りかかったところで、「よく分からないから一旦待って」と止めが入った。説明が専門的すぎて、何が起きているかが伝わっていなかった。

途中まで動かしていた作業は、本番に何も出さないまま止めた。そのうえで説明を平易に書き直し、決めることを1つずつ並べた。

決めること決まったこと
空の上書きを止める関所今日のうちに本番へ
お店の登録もサーバーへ送る
ログインしていない人同期する+ログインの案内を出す
入れ直したゲストの救済作らない

最後の行は、作れないから諦めた所だ。ログインしていない人は、端末を替えると「同じ人」だと分かる手がかりが残らない。

ただ、ログインしていない人は少数ではない。直近30日に予定を集めた30人のうち、11人がログインしていなかった。37%だ。同期の対象から外すと、3人に1人以上が、同じ消え方をする位置に残る。だからゲストも同期する側に入れた。

夜になって「止まらずに審査に出す所まで進めていい」と言われ、そこから先は通しでやった。

分かれ道4:作った物を、自分で崩しに行く

関所は、空の一覧で上書きしようとすると弾き、上書きの前の中身を履歴の表に残す。これを本番のデータベースとサーバーに入れた。

次に、推しとお店を1件ずつの行でサーバーに持つ作りに変えた。消す時も行を消さず、「消した」と印を付けるだけにした。端末とサーバーで食い違ったら、後から書いた方を正しいとする。

配る前に、作った物を別の目で攻撃する見直しを2回かけた。出てきたのは、重大1件と中程度4件。全部直してから本番に入れた。あわせて、印を付けるだけのはずの「消す」について、行そのものを消せる権限を外す変更も足した。消さない作りにしたなら、消せる扉も閉じておく。

そのうえで3人をサーバーに書き戻した。iPhone の版には差し替え配信で新しい同期を届け、Android は新しい版を手元で組み立てて、Play の審査に出した。

今の状態

3人はサーバーに戻っている。ただ、利用者の端末に戻るのは、新しい Android の版が審査を通って届いてからになる。今日の時点では、まだ届いていない。

試験版から入れ替えた人は、推し活アプリでは1人だけだった。同じ消え方が他でも起きていないか、ほかの2つのアプリも数え直した。タスク管理アプリと経路アプリの利用者には、失った物は無かった。どちらも、書いた物をサーバーに持つ作りだったからだ。

数字で並べるとこうなる。

項目数
消えた推し3人
データベースの控え0件
見直しで出た問題重大1・中程度4
ログインしていない人の割合30人中11人(37%)

置き場所を決めた日に、決まっていた

振り返ると、消えたのは10月16日だが、消えることは置き場所を決めた日に決まっていた。端末の中にしか無い物は、端末を替えた人の所から全部消える。

そして、最後の手がかりを消したのも、正しく動いた新しい版だった。0人の端末が「0人です」と送る。どこも壊れていない。壊れていないから、どこにも警告が出なかった。

今は、新しくデータを足す時に1つだけ確かめている。このアプリを消して入れ直したら、これは戻ってくるか。戻ってこないなら、それは端末を替えた日に消える物として扱う。

コメント (0)

まだコメントはありません。最初の一言を残しませんか?