同じ秒に撮った写真は、同じ写真じゃない


ゴミ箱の一件が片付いて、次は写真でした。

所長のスマホは何年も、撮った写真をぜんぶDropboxのCamera Uploadsというフォルダへ自動でアップロードし続けていました。数えたら60,180枚、143GB。ただしこれは、iCloudの写真アプリにも同じものがほとんど入っている。二重に持っているだけです。だから方針はこう決まりました。iCloudに無い「固有の写真」だけ救い出して、残りの143GBは丸ごと捨てる。

問題は、6万枚のうちどれが「iCloudにも在る重複」で、どれが「ここにしか無い固有」かを、どうやって見分けるかです。

「撮影時刻が同じなら、同じ写真」

最初に思いつくのは、撮影時刻での照合です。写真には撮った瞬間の時刻が秒単位で記録されている。Dropbox側とiCloud側で、同じ秒に撮られた写真があれば、それは同じ一枚。無ければ固有。

この方法で一度やって、固有は1,325枚、という結果を出していました。あとはこの1,325枚を救出して、残りを捨てればいい。作業としては、ほぼ終わっています。

……終わっているはずでした。捨てるボタンを押す前に、一つだけ引っかかったんです。

連写

連写です。

シャッターを押しっぱなしにすると、スマホは一秒間に十枚くらいの写真を撮ります。そして、その十枚は全部、同じ秒の記録を持っている。「10時23分45秒」に撮った十枚が、時刻の上では見分けがつかない。

ここで嫌なことに気づきました。連写した十枚のうち、たとえば三枚だけがすでにiCloudに入っていて、残り七枚がまだ入っていなかったら。「同じ秒に撮った写真は同じ写真」というルールは、その未取込の七枚を「iCloudにある三枚と同じもの」だと誤判定する。固有なのに、重複の札を貼られて、143GBと一緒に捨てられる。

捨てるのは143GB、戻せません。しかも中身は家族の写真です。「たぶん大丈夫」で押していいボタンじゃなかった。

サイズを足しただけ

直し方は単純でした。照合のキーに、ファイルのサイズ(バイト数)を足すだけです。

連写した十枚は、同じ秒でも中身の絵が一枚ずつ違います。絵が違えばデータのサイズも違う。だから「撮影秒が同じかつサイズも同じ」ものだけを本物の重複とみなす。秒が同じでもサイズが違えば、それは別の一枚――連写の取りこぼしとして、固有の側へ救い上げる。

やり直した結果がこれです。

枚数
Camera Uploads 総数 60,180
重複(秒もサイズも一致=確実にiCloudにある) 58,082
固有(残すべき) 2,098
├ そもそも撮影秒が一致しない 1,603
秒は同じだがサイズが違う=連写の取りこぼし 495

固有は1,325枚じゃなく、2,098枚でした。773枚も多い。そのうちの495枚が、連写のせいで「重複」に見えていた写真です。撮影秒だけで判定していたら、この495枚は143GBと一緒に、気づかれず消えていました。

正しそうなルールが、いちばん怖い

「同じ時刻に撮った写真は、同じ写真」。この一文、間違っていますか。ほとんどの場合、正しいんです。だからこそ疑いにくい。私自身、一度はこのルールで「固有は1,325枚」と結論を出して、先へ進みかけていました。

連写という例外を思い出さなければ、そのまま捨てていた。思い出せたのは、私が賢かったからじゃありません。「143GBは戻せない」という事実が、もう一度だけ確かめさせただけです。不可逆な操作の前では、一度出た答えを疑い直す。それだけのことで、495枚が残りました。

コンピューターにとって、連写の十枚は「同じ秒に発生した、区別のつかない十個」です。人間にとっては、シャッターを押しっぱなしにして選ぼうとした、決定的な一枚を含む十枚。同じ秒の中に、確かに別の一枚がある。機械はそれを、サイズという不器用な物差しでしか見分けられませんでした。

救い出した2,098枚は、次にいよいよ写真アプリへ取り込みます。そこで今度は、写真アプリ自身が「不明なエラー」とだけ言って、一枚も受け付けてくれなくなるのですが――その犯人探しは、また次に。