ごみ箱 (GUI)

ごみ箱（ごみばこ、）は、主にGUIデスクトップ上に配置される特殊なアイコンで、オペレーティングシステム・デスクトップ環境・ファイルマネージャの、「不要なファイルを即座に削除するのではなく一時的な退避場所に移動させておき、後に手動あるいは何らかのトリガで実際に削除を行うメカニズム」にアクセスするインタフェースである。
なお、英語ではWindowsのごみ箱は "Recycle bin" 、Macintoshのゴミ箱は "Trash Can" である。
概念.
ごみ箱が単なる削除と異なるのは、実際に削除されるまではファイルの削除を取りやめる事ができるという点である。これにより誤操作によるファイル消失を防ぐ事ができるほか、情報という目に見えないものを扱ったファイルを、実体を持った対象として認識させる心理的な作用も働く。また多くはファイルアイコンをドラッグ操作でごみ箱へと移動するため、操作概念が明確で誤りが起こりにくい。ただ、一方で「いらないファイルを削除するのにいちいちごみ箱へ移動するのは面倒だし、回収は二度手間」という考え方もあり、ショートカットが用意されている場合もある。
歴史.
Macintoshの前身であるLisaのOffice System 1にはすでにその姿を見る事ができる。この時はまだ、一度に1セットのファイルしか収めることができず、ファイルを追加すると古い内容が自動的に削除されるようになっていた。Xerox Starの時点で概念的には存在していたらしいことから、デスクトップメタファーとごみ箱の発生はほぼ同時期と考えられる。ただこちらが実装されたのは1985年のViewpointからで、Lisaが何らかの影響を受けてごみ箱を導入したのかどうかはよく分からない。1991年にリリースされたSystem7では、「ゴミ箱を空に」オプションをクリックするまではファイルが削除されない仕様に改良された。1990年代には他の多くのデスクトップ環境にも、ごみ箱が現れた。
実装.
ごみ箱機能は、デスクトップ環境やファイルマネージャとの連繋で実装される。以下に例を示す。
GNOME、KDEとXfceの実装はfreedesktop.orgのゴミ箱仕様に従っていて、この仕様を考慮して書かれたすべてのアプリケーションがどのゴミ箱実装とも相互運用性があるようにしている。
macOSでは、Finder内でファイルを削除すると、そのファイルは.Trashesという名前のフォルダにコピーされ、利用可能ディスク領域を表示するときには、削除されたファイルによって占められているディスク領域は、使用されていると表示される。
いくつかの実装では、ファイルシステム的にファイルを削除するだけではなく、保存メディア中のデータがあった場所にデータを上書きして痕跡も消す「シュレッダー」機能が含まれている。
Mac OS、Windows、GNOME、KDEやXfceではデスクトップに置かれ、NEXTSTEPやmacOSではDockにある。
その他.
Macintoshのゴミ箱は、「デスクトップからのオブジェクトの削除」という共通点から、ファイルの削除とともに、ディスクやサーバなどのボリュームのイジェクトという機能も持っている。これはMacintoshのディスクドライブには通常イジェクトボタンはなく、ゴミ箱がイジェクト機能に転用されたためである。この点がデスクトップメタファーとして不適切であると批判されていた。現在もMacintoshのデスクトップに表示されるドライブにはボタンはないが、Finderのサイドバーには表示される。このほか、キーボードにイジェクトボタンが付いており、Mac OSに不慣れなユーザーでもわかりやすくなっている。macOSでは、ボリュームをドラッグすると、Dock内のゴミ箱アイコンが三角形のイジェクトアイコンに変化するように改良されている。他のウィンドウシステム同様に、コンテクストメニューからイジェクト機能を呼び出すことも可能である。
Windows 95にごみ箱機能が実装された際には、Apple ComputerとのGUI絡みの裁判が決着したことを背景に、使い勝手の点で進歩していると考えられていたMacintoshに似た機能が実現したとして歓迎された。
BTRONの実身・仮身ネットワークでは「ファイルが参照されていること ＝ その存在の存続」であるため、基本的には、明示的な実身の廃棄というような概念が無い。さらに逆に、ちょっとした編集操作などにより、保存しておきたい実身への参照を全部消してしまい、削除されてしまうという可能性もあることから、削除を禁止するフラグを設定しておくことでそのような削除を防ぐことができ、そうしておけば管理ツールからそのような「どこからも参照されていない実身」を探すこともできる。これはごみ箱の機能に近い。なお、参照のループがあると変なことになるが、そういった場合は管理ツールから、UNIXのfsckに類似した操作を実行できる。