以前のバージョンが残っているかもしれない4つの場所
何かをインストールする前に、探しているファイルがMacにすでに保存されていないか、4つの場所を確認してください。それぞれ対象とする範囲が狭いため、自分がどのケースに当たるかを見極めることが作業の大半です。
アプリ内の「ファイル」>「復帰」。 macOSには長年、書類のバージョン管理機能が組み込まれています。これに対応したアプリでは、ファイル > 復帰 > すべてのバージョンを表示 メニューから、その書類の過去の保存内容をタイムライン上で確認できます。TextEdit、プレビュー、Pages、Numbers、Keynoteが対応しています。ただし、実際によく使われるアプリの多くは非対応です。Adobeのアプリも、Officeのアプリも、スクリプトが書き出したファイルも対象外です。
Time Machine。 「自動的にバックアップ」をオンにしていると、macOSは起動ディスクのローカルAPFSスナップショットをおよそ1時間ごとに作成して24時間保持し、直近のバックアップ成功時のものも1つ残します。役に立つかどうかは2つの制約で決まります。粒度が保存ごとではなく1時間単位であること、そして1日より古いものはバックアップディスクが接続されているときにしか存在しないことです。
クラウドフォルダのバージョン履歴。 Dropboxは、BasicとPlusでは30日分、Professionalでは180日分のバージョンを保持します。Google Driveは、「永久に保持」を設定していない限り、30日間、または新しいバージョンが100個たまるまで保持します。iCloud Driveは少し特殊で、30日間の「最近削除した項目」で復元できるのは削除したファイルであり、上書きしたバージョンではありません。3つとも対象は同期されたフォルダ1つだけです。
アプリ自身の自動保存。 確認する価値はありますが、あてにするには心もとない機能です。これは取り消し機能であり、取り消しはプロセスが終了すると失われます。
これらのどれかでファイルが見つかったなら、ここで読むのをやめて構いません。以下は、どれにも当てはまらないケース向けの話です。同期していないフォルダ、バージョンメニューのないアプリで編集したもの、1時間以上前に壊れたもの、複数のファイルがまとめて壊れたもの。Retraceは、まさにそのケースのために作られたネイティブのmacOSアプリで、以下の内容はすべて公開中のバージョンに入っています。
履歴をオンにするのは右クリックだけ

Finderでフォルダを右クリックし、「履歴」を選んでオンにします。アプリ内のフォルダ一覧から追加することもできます。デフォルトのフォルダはなく、自分で選ぶまで何も監視されません。もう一度右クリックすればオフにできます。ディスク容量の上限はフォルダごとに設定され、履歴の保持期間はデフォルトで1年です。どちらも、後述する「設定」>「ストレージ」で変更できます。
「履歴」の下には5つの項目が、3つのグループに分かれて並びます。オンとオフの切り替え、クリックした対象への操作(このフォルダのスナップショットを作成、このファイルの前のバージョンを復元)、そしてアプリを開く項目です。5つは常にすべて表示され、順番も変わりません。今は実行できない項目は、非表示ではなく薄く表示されるので、操作はいつも同じです。メニューが何を対象にしているかを、別の表示なしで伝える仕組みでもあります。スナップショットは、依頼を待つフォルダでのみ、復元はファイルでのみ有効になります。
このメニューの裏には、App Sandboxの中にとどまることの現実的なコストが1つあります。Finder拡張機能が受け取れるのは右クリックしたパスだけで、それ以外は渡されません。ほかのプロセスから渡されたパスは、アクセス許可にはならないからです。そのため、初回の起動時にホームフォルダへのアクセスを1度だけ求め、その許可を保持します。以降はメニューからそのまま操作できます。許可がない場合は、同じ操作でフォルダ選択のパネルが開きます。
監視中のフォルダには、監視が続いていることの確認も必要です。セキュリティスコープ付きの許可は、ボリュームが見つからなくなったり、OSアップデートでブックマークがまとめて無効になったりして、気づかないうちに解決できなくなることがあります。macOSはそれを通知せず、イベントのストリームが静かに止まるだけです。「この作業は失われません」と約束するアプリにとって、これはクラッシュよりたちが悪い問題です。そこで、すべてのフォルダを実際にテスト読み込みしながら定期的に再解決し、記録が止まったフォルダは、問題なさそうに見せずに一覧で知らせます。
すべてのコピーを残してもコストがかからない理由
APFSでは、COPYFILE_CLONE を指定した copyfile が、コピーオンライトのクローンを作成します。元のファイルとデータブロックを共有する新しいファイルです。作成時のコストはほぼ0バイトで、実時間もマイクロ秒単位です。64MBのクローンは約0.1ミリ秒で作成され、自分専用のバイト数は0と報告されます。しかも、アプリの2通りの保存方法のどちらでも、正しいスナップショットのままです。ファイルをその場で書き換えるエディタは新しいブロックを割り当て、クローンには古いブロックが残ります。アトミックに保存するエディタは新しいファイル全体を書き込むので、クローンはもともとそのファイルに結び付いていません。
この性質は、ハードリンクにはないものです。昔ながらのハードリンクのツリーが選択肢にならなかったのはそのためです。ハードリンクは同じファイルそのものなので、その場で書き込むアプリがあると、保持しているつもりだったバージョンが黙って書き換えられてしまいます。
取り込みがコストゼロなので、Retraceは積極的に取り込み、それが意味のあるものだったかは、あとからコンテンツのハッシュで判断します。ゼロではないのは保持するコストで、クローンは元のファイルが変化していくほど容量を使うようになります。そのためアプリが表示するのは、バージョンを机上で足し合わせた数字ではなく、履歴を削除したら実際に空く容量です。40MBのファイルのクローン30個は、単純に計算すると1.2GBですが、実際には40MBです。バージョンを手動で削除する前に表示されるシートにも、この数字が示されます。
クローンはアプリの機能ではなくボリュームの性質なので、HFS+やexFATでフォーマットされた外付けドライブでは、そもそも作成できません。Retraceは事前に確認し、すべての取り込みが黙って完全コピーになってしまう代わりに、そのフォルダを受け付けません。
ファイルが完成したことを知る方法
macOSには、これに適切に答える手段がありません。答えになるはずのシグナル、つまりEndpoint Securityの「プロセスがこのファイルの書き込みを終えた」は、Appleが付与する権限が必要で、サンドボックスと両立せず、Mac App Storeでも認められていません。ほかのプロセスがファイルを開いたままかどうかを尋ねる方法もありません。
そのため、判断は複数の層による推測になります。各層は間違っていても構いません。決めるのは「いつ確認するか」だけだからです。確認に意味があったかどうかは、あとからハッシュで判定されます。ファイルごとに10秒の静止期間を置き、1回の編集作業で発生する自動保存の連続を1つのバージョンにまとめます。10秒はVS Code自身のローカル履歴と同じ値で、連続した保存をまとめるには十分な長さであり、1分空けた意図的な2回の保存を別々のバージョンにするには十分な短さです。次に安定性の確認で、サイズ、更新日、inodeのすべてが動きを止めていることを調べます。ゼロ長のガードは、書き込み中にファイルを切り詰めるライターを検知し、隔離のチェックは、まだ完了していないダウンロードを検知します。内容を変えずに保存しただけなら、バージョンは作成されません。
タイミングを自分で決めたいとき

保存のたびに記録するのは、論文のフォルダには適していますが、80GBのレンダリングフォルダには向きません。そのため、この設定はアプリ全体ではなく、フォルダごとにあります。待機に設定したフォルダはイベントストリームから外れますが、アクセス許可は開いたままなので、依頼した瞬間に走査できます。1回の走査で保存されるものはすべて同じ時点を共有するため、意図した操作はタイムライン上で400件ではなく1つの時点として現れます。
依頼する方法は3つあります。フォルダの画面にあるスナップショットのコントロールは、保存と同じCmd-Sで使えます。Finderの「履歴」サブメニューには「今すぐスナップショットを作成」があります。そしてCtrl-Opt-Cmd-Sを押すと、いま使っているアプリの上に小さなパネルが現れ、その時点の名前を入力すると、待機中のすべてのフォルダを取り込んで、すぐに閉じます。対になるCtrl-Opt-Cmd-Rは、履歴ウインドウを開きます。Retraceにはメニューバー項目もDockアイコンもないため、戻る手段はショートカットです。どちらも設定で割り当てを変更できます。また、あえて3つの修飾キーを使っています。グローバルなショートカット登録は、衝突して負けてもmacOSから何も知らされません。そのため、デフォルト値が身を守る方法は、ほかのだれも使わない組み合わせであることしかないからです。
保持の整理で、スナップショットが古さを理由に間引かれることはありません。依頼されたときだけ記録するフォルダでは、スナップショットが存在するバージョンのすべてだからです。
上書きと編集を見分ける
Finderであるファイルを別のファイルの上にドラッグした場合と、エディタ自身が保存した場合は、macOSが提供するどのAPIから見ても同じに見えます。どちらもそのパスにファイルが残り、どちらも新しいinodeが作られます。アトミックな保存は一時ファイルをリネームして対象に重ねますが、Finderの「置き換える」もコピーをまったく同じ方法でリネームして重ねるからです。どちらも同じファイルシステムイベントとして届きます。イベントには、どちらが起きたかを示すものがありません。
2つを分けるものは1つだけで、それがファイル自身の更新日です。そのパスに書き込まれたバイト列には、イベントが報告した時点の日付が付きます。別の場所で作られて移動されたバイト列には、書き込まれた場所での日付がそのまま付きます。そのため、バイト列がそれを知らせたイベントよりも古いかどうかをテストします。余裕は2分で、大きなファイルが取り込みまで保留される最長時間を十分に超える長さです。
これで、Finderでの置き換え、書類の上へのunzip、cp -p、rsync、同期クライアントによるサーバー側コピーの書き込み、バックアップからの復元を検知できます。-p なしの cp やブラウザのダウンロードは、どちらも現在時刻が付くため検知できません。そして、検知しないままにしています。ほかの方法、つまり以前のバイト列のハッシュ化、内容の差分、形式の判別は、どれも桁違いにコストがかかるうえ、それぞれ別の形で誤ります。保持するものを決めるフラグは、実際より少なく主張するほうが正しい失敗の仕方です。
10秒の期間にも影響があります。置かれたファイルは、その期間を待ちません。期間は1つのファイルの自動保存の連続を1つのバージョンにまとめるためにあり、ドロップは連続ではありません。そこで待たせると、2回目のドロップが1回目に重なり、2つが1つとして記録されてしまいます。
画面上では次のように見えます。フォルダ一覧には、上に何かを置かれたファイルがそのフォルダにいくつあるかが表示されます。ファイル一覧では該当する行に印が付き、それだけに絞り込むスイッチがあります。タイムラインでは、その時点が編集ではなく置き換えだったことが示されます。以降は保持の仕組みが引き継ぎます。置き換えられたファイルの下にあったバージョンは、ほかのものがどれだけ間引かれても30日間保持されます。1年前に書いた書類が今朝埋もれてしまったとき、そのコピーこそが、このアプリを開く人が取り戻したいものだからです。
フォルダを巻き戻し、その巻き戻しを取り消す

忙しいフォルダでは、まとめ処理を経ても1日に数百の取り込み時点が生まれるため、タイムラインはそれを折りたたみます。1分未満の間隔の取り込みは1つの時点として扱います。30秒以内に4つの書類を保存したのは、4つではなく1つの操作だからです。時点は日ごとにまとまり、「現在」から下へ伸びる1本の軸にぶら下がります。各時点には、そこで何が変わったかが表示されます。選択すると、動いたファイルだけでなく、その時点のフォルダ全体が表示されます。巻き戻しで取り消されることになる範囲の軸は、色付きで示されます。
巻き戻しは、フォルダ全体をそれらの時点の1つに戻します。何かに手を付ける前に、すべてのパスが検証されます。半分は許可され、半分は拒否されるような計画は、まったく実行してはならないからです。依頼したのは1つの状態であり、その大半ではありません。そのうえで、巻き戻しが触れるすべてのものの現在の状態が取り込まれます。この手順が、「もう一度現在に戻して」への答えのすべてです。
この2つは、どちらもタイムラインに残ります。操作そのものには、どこへ行ったかを示す専用の行(「13:15に巻き戻しました」)が付き、離れた状態にはその直前の一点が作られます。どちらも、前後の作業にまとめられることはありません。巻き戻しが終わると、元に戻る手段が計画つきですでに選択された状態になっているので、「これも違った」は1回の操作で済みます。バナーが消えたあとでも、アプリを再起動したあとでも、それは残っています。ここでの取り消しは別の仕組みではなく、その点への巻き戻しそのものであり、タイムライン上のほかの操作と同じように取り消せます。フォルダの現在の状態を保持している行は、ラベルではなく見た目の違いで表されるので、いまの位置は考えなくても見えます。その後の最初の保存で、フォルダとともに先へ進みます。
巻き戻しで削除されるファイルは、削除ではなくゴミ箱に移されます。巻き戻しの削除で空になったフォルダも、深いものから順にゴミ箱へ移るため、対象の時点より後に作られたツリーは丸ごと消えます。Retraceが取り込んでいないものがまだ残っているフォルダは、そのまま残ります。巻き戻しは、自分で元に戻せないものを取り除いてはならないからです。書き込めないファイルがあっても、残りの処理は中断されません。失敗は集計され、レポートに名前が示されます。12件のうち11件を黙って実行する巻き戻しは、そうと伝える巻き戻しよりたちが悪いのです。
日付にジャンプする
1年分の履歴は、スクロールするには長すぎます。タイムライン上部のカレンダーボタンは、1か月ずつ表示し、履歴のある日に印を付けます。何もない日は選べません。日付を選ぶと、その日の終わりにフォルダが置かれていた状態に移動します。「火曜日は問題なかった」と言うときに、たいてい求められているのがこれです。「最新に移動」で一番上に戻ります。
フォルダを以前の状態のまま取り出す
今日のフォルダはそのままで、先週の火曜日のフォルダも欲しいことがあります。タイムライン上の時点を右クリックしてこの時点のフォルダを書き出すを選ぶか、フォルダの内容の上にあるボタンを使うと、その時点のすべてのファイルが、指定した場所の新しいフォルダにコピーされます。元のフォルダには手を加えません。新しいフォルダは、監視中のフォルダの外に置く必要があります。中に置くと、コピーが新しい履歴として記録されてしまうからです。書き出しが完了できなかった場合は、何も残りません。
変更内容を確認してから1つのファイルを戻す

ほとんどの復元は1つのファイルが対象で、その場合、フォルダは大きすぎる単位です。各行には、保持しているバージョンの数と最終更新日が表示され、右クリックするとファイル自体を操作できます。Finderで表示することも、開くこともできます。1つのバージョンは、その場で復元することも、先に比較したければ、元のファイルの隣に番号付きのファイルとして書き出すこともできます。その場での復元では、上書きする前に現在のファイルをバージョンとして取り込みます。ボタンを安心して押せるのはそのためです。ファイルがすでに持っているバージョンは、そもそも候補に表示されず、その旨が示されます。
バージョンは、履歴から独立したファイルとして取り出すこともできます。リストからFinderへドラッグするか、コピーを保存を選んでどこにでも置けます。どちらの場合も、ファイル名と時点にちなんだ名前、たとえば report (2026-10-25 14.32).docx で保存されます。古い下書きが新しい下書きの隣に並び、作成したアプリでそのまま開けます。バージョン自体は、履歴に残ります。
履歴にまったく残したくないバージョンがあるときは、右クリックして削除するか、そのファイルのすべてのバージョンを一度に削除できます。シートには、削除されるバージョンの数と空く容量が表示され、約束を破ることになる場合は事前に警告されます。永久に保持するよう設定したバージョン、復元や巻き戻しを取り消せるようにするためのコピー、すでに存在しないファイルの最後のコピーなどです。名前を付けた時点が、載っていたバージョンを失った場合は、残っているものに移ります。何も残らなかった時点は削除され、シートは削除の前にそれを伝えます。ファイル自体には影響しません。
比較は形式ごとに行います。「何が変わったか」への有用な答えが形式によって違うからです。テキストは行ごとに比較します。画像にはスワイプの分割線、オニオンスキンのクロスフェード、そして差分を強調して擬似カラーで表示するモードがあります。ほぼ同じ2枚の画像を単純な差分でブレンドしても、点が1つあるだけの黒い画面になってしまうからです。PDFは各ページのテキストのハッシュで比較します。再書き出しのたびに起きるオブジェクトの並び替えに影響されません。バイト単位の比較ではファイル全体が変更されたことになってしまいます。人が知りたい粒度である「3ページと7ページ」という答えが得られます。
以前のバージョンを、書かれていた内容から探す

どのファイルだったかはわからず、書かれていた内容だけを覚えていることがあります。先月削除した段落や、その後改訂された見積もりの数字などです。「ファイル」タブの検索を「名前」から内容に切り替えて、2文字以上入力してください。Retraceは、現在のファイルだけでなく、保存されたすべてのバージョンの語句を検索し、結果を開くと一致したバージョンが開きます。
対象は、プレーンテキスト、PDF(最初の200ページ)、そしてmacOSに標準搭載されているテキストシステムで読めるRTF、Word、OpenDocumentの書類です。画像、アーカイブ、Pagesファイル、その他、確実に読み取れる語句のないものは、推測せずに対象外にします。20MBを超えるファイルは、まったく読み込みません。インデックスはバックグラウンドで作成され、Macの外には出ません。「設定」>「ストレージ」のファイル内を検索にはそのサイズが表示され、オフにするとインデックスは削除されます。
あえてやらないこと
バックアップではありません。 履歴はフォルダと同じディスクに保存されるため、ドライブが故障すれば両方とも失われます。保存の数秒後に取り込むために、1時間に1回ではなくそうしているというトレードオフで、Time Machineやオフサイトのコピーが、もう一方の備えとして必要なのもそのためです。
同期もiPhoneアプリもアカウントもなく、ネットワークをオフにしても動作します。クラウドにしかないファイルはダウンロードせずにスキップするため、退避済みのプレースホルダーでいっぱいのフォルダの履歴をオンにしても、何GBものデータが黙ってディスクに戻ってくることはありません。
一部のツリーは、デフォルトで除外されています。node_modules、DerivedData、.build は再生成できるからです。.git と .svn はすでにバージョン履歴だからです。写真やビデオのライブラリは、数GBのデータベースが絶えず自己書き換えをするからです。デフォルトはすべて表示され、編集できます。悪い除外よりもたちが悪いのは、見えない除外だけだからです。
履歴は、永遠に増え続けるのではなく、古くなるにつれて間引かれます。直近24時間はすべて、1週間は1時間ごと、1か月は1日ごと、それ以降は保持する期間だけ週ごとです。保持期間は1か月、3か月、6か月、1年(デフォルト)、無期限から選び、「設定」>「ストレージ」で全フォルダに共通の1つの選択になります。その下には、どの設定でも上書きできない常時保持のリストがあります。すべてのファイルの最新10バージョン、永久に保持するよう設定したもの、依頼したすべてのスナップショット、すでに存在しないファイルの最後のバージョン、上書きで置き換えられたものの30日間、そして巻き戻しのあとに元へ戻る手段の30日間です。名前を付けた時点は永久に保持され、名前を付けても、巻き戻しがそこに書き込んだものが消えることはありません。
各フォルダにはディスク容量の上限もあり、古いバージョンは古い順にそれに合わせて削除されます。自動は5GBか空き容量の10分の1のうち小さいほうです。代わりに1〜50GBの固定サイズ(1、2、5、10、25、50)か、制限なしを選ぶこともできます。保持を約束したものがすでに上限を超えているときは、約束を破らず、そう通知します。上限を上げるか、フォルダを削除するか、履歴を自分で削除してください。
価格と、ほかに見ておきたいもの
RetraceはmacOS 14以降が必要で、Apple SiliconとIntelの両方で動作し、容量は約25MBです。$4.99の買い切りで、カードもメールアドレスも不要の14日間の無料トライアルがあります。詳しい仕様はRetraceのページにあります。
そもそもどのバックアップの層が足りないのかが知りたい場合は、Mac向けTime Machineの代替にまとめがあります。バージョン履歴とバックアップは別の役割で、多くの人は両方が必要です。ディスクがいっぱいで、そもそもそれどころではないなら、Sweepが役立ちます。自分で書いたルールでフォルダを整理するもので、Macでファイルを自動で仕分けるで紹介しています。空いた容量については、Macのディスク容量を空けるをご覧ください。
