Macで写真が重複しているとき、どちらを残すかの決め方

mac 写真 重複の整理でつまずくのは、検出そのものではなく、出てきた候補のどちらを残すかという判断である。写真は書類と違って、中身が同じでも解像度が違う、編集を加えた版がある、付随する情報の量が違う、といった差が付きやすい。片方を消した結果が「解像度の低い側だけが残った」になると、容量を数ギガバイト空けた代わりに元の画質が戻らなくなる。ここでは標準機能に任せられる範囲を先に決め、そこから外れる分をどう扱うかを順に整理する。

写真アプリの「重複項目」に任せられる範囲

ライブラリの中に取り込んだ写真とビデオについては、標準機能が用意されている。

macOS 13以降のバージョンでは、「写真」アプリに「重複項目」機能が追加されています。この「重複項目」機能を使って写真ライブラリにある重複写真と一部の類似写真を検出できます。ただ、重複していない写真も「重複項目」に出てきてしまう場合があるから、写真を削除する時にはしっかりと確認したほうが最善です。 出典: note.com

場所はサイドバーの「ユーティリティ」の下にある「重複項目」である。表示されていない場合は、サイドバーの「ユーティリティ」にポインタを置くと出てくる印から開ける。ライブラリが大きいと解析に時間がかかるため、取り込み直後に出てこないことは異常ではない。

ここでの操作は削除ではなく結合である。Appleの案内では、結合のあとの状態はこうなる。

ライブラリで選択した重複項目があった場所には、1つのオリジナルの写真またはビデオが表示されます。削除された重複項目は「最近削除した項目」に表示され、ここで30日以内に復元したり、完全に削除したりできます。 出典: support.apple.com

戻せる期間があるという点が、この機能から始める理由になる。30日の猶予があるので、判断を間違えても取り返せる。手元のコマンドでファイルを直接消す作業と順番を比べると、取り消せる操作から先に片付けるほうが筋が通る。すべての重複項目をまとめて選ぶならCommand+Aキーが効くが、引用にあるとおり重複でないものが混ざる場合があるので、まとめて選ぶ前に行の数を見ておく。

「完全に同じ」と「似ている」は別の問題

写真の重複は2種類あり、必要な手当てが違う。中身が1バイトも違わない完全一致は、判定に迷いが無い。ハッシュ値が同じ2つのファイルは入れ替えても結果が変わらないので、機械が選んでよい。

厄介なのはもう一方である。同じ場面を写した2枚でも、書き出し直した、圧縮し直した、送信アプリを経由した、という履歴が入ると中身は別物になる。人から見れば同じ写真だが、ハッシュ値の比較では一致しない。逆に、見た目で似ていると判定する仕組みを使うと、意図して残した切り抜き違いや連写の1枚ずつまで候補に挙がる。

この違いから決まる扱いは単純である。完全一致は一覧の行として処理してよい。似ている判定の結果は、行ではなく画像として見比べる前提で扱う。1秒違いで撮った2枚を残したいのか、取り込み直しただけなのかは、プレビューを並べないと分からない。似ている側の候補を文字の一覧で一括処理するのは、作業の速さのために判断を捨てている状態になる。

スクリーンショットは扱いを分けたほうがよい。同じ画面を何度も撮ると、見た目はほぼ同じで中身は毎回違うファイルになる。似ている判定では大量に引っかかるが、実際に要るのは最後に撮った1枚である。日付とアプリ名で束ねて古い側を落とす、という別の規則で片付くので、写真の重複の話に混ぜないほうが速い。

ライブラリの中と外で、触り方が変わる

写真の重複整理で最も大きな事故は、置き場所の区別を付けずに作業したときに起きる。

写真アプリのライブラリは1つのパッケージとして扱われており、中に画像ファイルが並んでいる。ここをFinderやターミナルから開いて中の画像だけを抜くと、ライブラリ側の管理情報と食い違って壊れる。容量を空けたい場面ほど中を開きたくなるが、開いた時点で失敗している。ライブラリの中身は写真アプリの操作でだけ動かす、と決めておく。

一方、ライブラリの外にある画像は普通のファイルである。SDカードから取り込む前の元データ、ダウンロードフォルダに溜まった画像、書き出した先のフォルダ、共有アルバムから保存した分が該当する。こちらはハッシュ値での比較が効くので、コマンドで一覧を作れる。

find ~/Downloads ~/Pictures/書き出し -type f -size +200k \
  -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.heic' -o -iname '*.png' \
  | xargs shasum -a 256 | sort > /tmp/photo-hashes.txt

どちらの側にあるのかを先に確かめる方法は簡単で、写真アプリでその写真を選び、ファイルメニューから元のファイルの場所を辿れるかどうかを見る。取り込み時に「オリジナルをコピーする」の設定を外していた場合は、ライブラリの外に実体が残る形になっているため、外のフォルダを消すとライブラリ側が参照を失う。この設定を使っているかどうかは、整理を始める前に見ておく項目になる。

iCloud写真を使っているときは、削除が全部の端末に届く

iCloud写真を有効にしている場合、Mac側で重複項目を結合した結果は他の端末にも反映される。iPhoneで同じ写真を探しても、もう出てこない。これは仕組みとして正しい動きだが、整理の作業としては影響範囲が広い。

そのため、作業する場所を1台に決める。Macで結合している最中にiPhoneでも同じ作業を始めると、どちらの操作が先に届いたかで結果が変わり、何を残したのかを追えなくなる。同期が進むまで待ってから次に進むほうが早い。

共有アルバムとiCloud共有写真ライブラリを使っている場合も、影響の範囲を確かめてから進める。共有している側で消したものは相手の画面からも消えるため、相手が保存していない写真を重複として結合すると、相手にとっては失われたことになる。共有アルバムに出している写真は「参照されている側」として扱い、整理の対象から外しておくほうが揉めない。

もう1点、容量の見え方が変わる。iCloud写真の「Macストレージを最適化」を使っている場合、手元にあるのは表示用の小さいデータで、元のデータはiCloud側にある。この状態で重複を結合しても、手元の空き容量はほとんど動かない。増えるのはiCloud側の空きである。手元のディスクを空けたいのか、iCloudの契約容量を空けたいのかで、見る数字が変わる。

専用ソフトに任せる部分は限られている

標準機能で足りない部分は、ライブラリの外にある画像と、似ている判定の見比べである。ここを引き受ける道具として無料のものが配布されている。

dupeGuruは公式サイトでLinux、Windows、macOS向けが配布されており、macOSは10.12以降が対象と書かれている。ファイル名の照合と中身の照合の両方に対応し、画像向けの専用モードでは似ている画像を候補に挙げる。安全側の設計として、基準にするフォルダを指定しておくとそこからは消さないという仕組みを備えている。容量の偏りを面積で見せる種類のソフトは、どのフォルダが大きいかを1画面で示すが、2つが同じ内容かの判定はしない。聞きたい問いが「同じものが何個あるか」なのか「容量がどこへ行ったか」なのかで、選ぶ道具が分かれる。

有料のソフトが引き受けているのは、判定そのものより結果の見せ方と選択の補助である。写真の場合、似ている候補をプレビューで並べる部分に手間がかかるので、その価値は書類の重複整理より大きい。一方で、写真アプリのライブラリの中には触らせない作りになっているものが多く、標準機能の代わりにはならない。ライブラリの中は写真アプリ、外は専用ソフトかコマンド、という切り分けで考えるほうが事故が起きにくい。

重複が湧いてくる経路は絞れる

写真の重複はランダムに増えない。経路はほぼ決まっていて、それぞれ痕跡の形が違う。

  • 同じSDカードやカメラから2回取り込む。別のファイル名で中身が同じ画像が並ぶ。完全一致として拾える
  • 送信アプリ経由で受け取った画像を保存する。圧縮がかかるので元の画像とは中身が違う。似ている判定でしか拾えない
  • 編集した版を書き出す。元の写真と書き出した画像の両方が残る。要るのは書き出した側だけという場合が多い
  • 別のMacやバックアップからライブラリを読み込む。同じ写真が丸ごと2組になる。取り込み日で束ねると片付く
  • 共有アルバムから手元に保存する。相手が上げた元データと、保存した分が並ぶ

経路が分かると、消す作業の前に流入を止められる。取り込み済みのカードに印を付ける、送信アプリの自動保存を切る、書き出し先を週に1回空けるフォルダに固定する、という3つで大半は止まる。消す作業を毎月繰り返すより、経路を1つずつ塞ぐほうが結果として短い。

どちらを残すかは、4つの順番で決まる

候補が2枚並んだとき、見る順番を決めておくと迷いが減る。

1つ目は解像度と容量である。同じ場面なら、大きい側が元に近い。書き出しや送信で小さくなった側は作り直せるが、逆はできない。

2つ目は編集の有無である。編集を加えた版は、元のデータと編集の記録の組み合わせで成り立っている。写真アプリの中にある限り編集は取り消せるので、編集済みの側を残しても元に戻せる。書き出したファイルにはその記録が無い。

3つ目は付随する情報である。撮影日時、場所、人物の名前、アルバムへの所属、お気に入りの印。送信アプリを経由した画像は場所の情報が落ちていることが多い。見た目が同じでも情報量は同じではない。

4つ目が参照である。アルバムに入っている、共有アルバムに出している、他の書類から参照されている側が残る。参照は1つのパスしか指せないので、それ以外は定義上参照されていない。

この順番が効くのは、上の項目のほうが取り返しが付かないためである。解像度は落とせるが上げられない。付随する情報は落ちたら入れ直せない。逆に、参照の付け替えは後からでもできるので最後に来る。迷ったときは「あとで作り直せるか」を問い、作り直せない側を残す。

この4つで決まらないときは、消さずに日付を付けたフォルダへ移して様子を見る。写真は作り直せないので、判断が付かないものを急いで消す理由が無い。

確認の往復で時間が消える

写真の整理で実際に時間を取られているのは判定ではなく画面の移動である。ハッシュ値の一覧はターミナルに出て、その画像が何なのかの確認はフォルダの画面で行い、消す操作はまた別の場所になる。1往復あたり数秒でも、候補が数百件あれば1日が消える。フォルダとターミナルとAIが同じ窓にある状態なら、一覧を出してからプレビューで確かめて隔離するまでが同じ画面で完結する。

道具として何をどこまで引き受けるのかはできることに整理してある。iPhoneやiPadで撮った分の続きを手元で扱う流れはiPhone・iPadから続きをにまとめてある。重複の検出だけを行う専用ソフトと、ファイル管理そのものを引き受ける道具では解いている問題が違うので、その差は他のファイル管理との比較を見るほうが早い。

閲覧のされ方を見ると、写真の重複を調べた読者が次に開くのは容量の記事ではなく、ファイル名の一括変更と日付での振り分けの記事である。重複が増える原因が、取り込んだあとの置き場所の決めごとの弱さにある、という見立てと合っている。導入後に出やすい疑問はよくある質問にまとめてある。

よくある質問

写真アプリの「重複項目」が出てこないのはなぜ?

サイドバーの「ユーティリティ」の下に隠れている場合は、「ユーティリティ」にポインタを置くと出てくる印から表示できる。ライブラリが大きいと解析に時間がかかるため、取り込み直後は空のことがある。この機能はmacOS 13以降で使えるので、それより前のバージョンでは表示されない。

結合したあとで元に戻せる?

結合で削除された側は「最近削除した項目」に入り、30日以内なら復元できる。残るのは1つのオリジナルで、それが元の場所に表示される。取り消せる操作なので、手元のファイルを直接削除する作業より先にこちらを片付けるほうが安全である。

iCloud写真を使っていると、削除は他の端末にも及ぶ?

及ぶ。Mac側で結合すると、同じアカウントのiPhoneやiPadからも消える。作業する端末を1台に決め、同期が進むのを待ってから次に進む。「Macストレージを最適化」を使っている場合、手元の空き容量はほとんど動かず、空くのはiCloud側の容量になる。

似ている写真をまとめて消してよい?

まとめて処理しないほうがよい。似ていると判定されたものには、意図して残した切り抜き違いや連写の1枚が混ざる。完全に同じ中身のものは一覧の行として処理してよいが、似ている側はプレビューを並べて見比べる。判断が付かないものは、消さずに日付を付けたフォルダへ移して様子を見る。

記事一覧へ戻る