コンピュータにおいて、仮想フォルダとは一般的に、階層的なディレクトリツリー内の位置に依存しないファイルの整理方法を指します。これは、データベースやカスタムインデックスなどのデータストアから結果を統合し、フォルダビューの表示形式で視覚的に表示するソフトウェアで構成されます。仮想フォルダは、特定のタグが付けられたすべてのファイルを一覧表示するビューと考えることができ、要求に応じて動的なコンテンツをその場で組み立てることができるフォルダのシミュレーションと言えます。これは、保存済み検索、保存済みクエリ、フィルタリングなど、コンピュータサイエンスにおける他のいくつかのトピックと概念的に関連しています。
仮想フォルダは、プロジェクトなど、コンテンツに関連するファイルをユーザーが簡単に見つけられるようにする手段を提供します。ユーザーは検索条件を指定するだけで、条件に一致するすべてのファイルが動的に仮想フォルダに集約されます。仮想フォルダ内のファイルは、従来のフォルダのようにハードドライブ上の特定の物理的な場所に限定されず、任意の場所に配置できます。実際、仮想フォルダ内のファイルはハードドライブ上にファイルとして保存する必要すらありません。ネットワーク共有上や、電子メールの受信トレイ、データベースなどのカスタムアプリケーションデータストアに配置することも可能です。
仮想フォルダは物理的には検索クエリを格納するファイルに過ぎないため、ドキュメントを仮想フォルダに「保存」することはできません。実装によっては、仮想フォルダにファイルを保存しようとすると、何らかの物理的なストレージにリダイレクトされます。
ほとんどの実装では、ハードドライブ、つまり検索を実行する必要のある場所を事前にインデックス化することで検索速度を向上させています。そのため、検索を実行する際には、高速検索に適したデータ全体の表現であるインデックスが使用されます。フォルダ階層全体にアクセスする必要がないため、検索ははるかに高速に完了します。
仮想フォルダは、オペレーティングシステムにおいて確立された概念です。BeOSには「保存済みクエリ」と呼ばれる仮想フォルダの一種が搭載されており、これはその後、Mac OS X、Windows、Linuxなどのオペレーティングシステムにおける仮想フォルダ機能の開発に影響を与えました。これらの仮想フォルダは、ファイルシステム全体またはその一部に対して検索を実行するか、キャッシュされた検索結果を使用することによって動的に作成されます。
1995年10月にリリースされたオペレーティングシステムの初期開発者プレビューには、ユーザーがファイルを管理しやすくするためのデータベースのような機能が含まれていました。これを実現するために、ファイルシステムは特定のファイル属性にインデックスを作成し、高速検索を可能にしています。デフォルトでは、ファイルシステムはファイル名、サイズ、最終更新日時を自動的にインデックス化しますが、アプリケーションまたはユーザーからの指示があれば、他の属性のインデックスを作成することもできます。[ 1 ]
ユーザーがファイル検索を実行すると、クエリの内容と検索の日時から派生した名前を持つファイルが「/boot/home/queries」フォルダに作成されます。たとえば、「Name = Western Infirmary - Mar 21, 11:59:40 PM」のようになります。検索のクエリ条件は、ファイルの「qrystr」という属性に保存されます。[ 2 ]ファイルが開かれると、ファイルシステムのインデックスがクエリされ、条件に一致するファイルの最新リストが表示されたトラッカーウィンドウが開きます。
その後のリリースで、検索機能にいくつかの追加機能が追加されました。リリース2では保存済みクエリの編集機能が導入され、[ 3 ]リリース3では保存済みクエリに独自の名前を付けることができるようになりました。[ 4 ] 1998年のリリース4以前は、すべてのクエリは無期限に保存されていました。しかし、R4では、BeOSの開発者がすべてのクエリに7日間の制限を導入しました。クエリをより長く保存したい場合は、検索ダイアログの「一時的」フラグのチェックを外すことができました。[ 5 ]
2005年4月、AppleはMac OS X v10.4をリリースし、スマートフォルダと呼ばれる仮想フォルダを実装しました。これらのフォルダは、 Spotlightエンジンによって動的に更新され、特定の条件に一致するコンテンツが含まれるようになります。たとえば、過去7日以内に編集された「shpadoinkle」という単語を含むすべてのWord文書を含むフォルダを作成するために使用できます。スマートフォルダは、Spotlight検索を保存することで作成されます。検索条件は、拡張子.savedSearchのプロパティリストファイルに記録され、デフォルトでは「/Users/username/Library/Saved Searches」フォルダに保存されます。
BeOSファイルシステムの主要開発者の1人であるドミニク・ジャンパオロは、 Apple Inc.のMac OS Xオペレーティングシステムに仮想フォルダシステムを追加することにも関わっていた。[ 6 ]
Spotlightエンジンを使用するアプリケーションには、スマートフォルダの概念に基づいたさまざまなバリエーションがあり、通常は紫色のアイコンに歯車マークが付いています。例としては、メールのスマートメールボックスやアドレス帳のスマートグループなどがあります。
Spotlightが登場する以前のmacOSの初期バージョンでは、iApps(iTunesとiPhoto)に同様のコンセプトがありましたが、これらはシステム全体のSpotlightエンジンを使用していませんでした。


.search-msファイルに保存されている検索クエリを表示します。2006 年 11 月にリリースされたWindows Vistaでは、保存済み検索の導入により、 Windows プラットフォームに仮想フォルダーが導入されました。 [ a ] [ b ]保存済み検索は、ディスク上のフォルダー階層ではなく、アイテムのプロパティに基づいてアイテムを表示します。 [ 8 ] [ 10 ]保存済み検索はフォルダーではありません。アイテムを保存するのではなく、 Windows Searchで使用できるクエリを保持するXMLファイルです。 [ 7 ]保存済み検索は、日付、メタデータ、名前、検索場所 (スコープと呼ばれます)、アイテムの種類など、カスタマイズ可能なパラメーターに基づいて定義できます。 [ 11 ]保存済み検索が作成されると、クエリは最初に検索が実行されたときに表示された表示レイアウトを保持するため、以降の検索ではアイテムが同じ配置で表示されます。 [ 7 ]保存済み検索は、他の保存済み検索に基づいて構築することもできます (クエリ合成)。 [ 12 ] [ 13 ]
デフォルトでは、Windows Vista は作成された保存済み検索のスコープの一部としてディスク パーティションとユーザー プロファイルを参照するため、他のマシンに転送されたときに、異なるマシンまたはパーティションからコンテンツを返すことができなくなります。Microsoft は、保存済み検索のスコープを %USERPROFILE%環境変数を参照するように変更するSearchMelt Creatorユーティリティをリリースしました。これにより、他のマシンまたはプロファイルで操作できるようになります。ユーザーは、共有を容易にするために、保存済み検索を手動で編集して %USERPROFILE% を参照することもできます。[ 14 ]
保存済み検索では、ドキュメントの作成者などのプロパティでまとめられたアイテムのコレクションであるデータのスタックを作成することもできます。同じコンテンツが複数のスタックに表示されることがあります。たとえば、ユーザーは、新しいフォルダーを作成したり、ディスク上の基となる場所を変更したりすることなく、まず特定の作成者スタックに移動してからキーワードスタックに移動したり、同じキーワードスタックと作成者スタックに移動したりできます。これにより、1 つのアイテムを 1 つの場所にしか保存できない階層型フォルダー構造の制限から解放されます[ 15 ] — このフォルダー階層からの解放は、 WinFSの主な利点および差別化要因でした。[ 16 ]

「実は、一時期はフォルダをなくすことも検討していました。検索クエリなどを備えた仮想ストレージをすべて導入し、ファイル管理を物理的なフォルダやディスク構造から完全に切り離すという構想でした。しかし、それはあまりにも大きな飛躍であり、ユーザーにとって混乱を招くと考えました。」
Windows Vista のプレリリース版ビルドは、製造向けにリリースされたWindows Vista ビルドの機能とは対照的に、メタデータと名前空間の機能が大きく異なっていました。Microsoft は、従来のユーザー プロファイル フォルダーに代わる新しいユーザー プロファイル 名前空間の目標の一環として、いくつかの保存済み検索を作成しました。スタートメニューの「ドキュメント」 、 「マイ ミュージック」、「マイ ピクチャ」は、それぞれドキュメント、音楽、写真とビデオを検索する「すべてのドキュメント」、「すべての音楽」、「すべての写真とビデオ」という保存済み検索に置き換えられ、特定のコンテンツ (ドキュメントの作成者など) に対する他のいくつかの保存済み検索も Windows エクスプローラのナビゲーション ペインに表示されました。 たとえば、 「すべての音楽」や音楽を含む従来のフォルダーを表示すると、ナビゲーション ペインには、すべての音楽、アルバム、アーティスト、ジャンル、お気に入りの音楽、評価の保存済み検索が表示されます。[ 12 ] [ 18 ] [ 19 ] Windows Vista のプレリリース ビルドの保存済み検索のスタックは、ユーザーが作成することも、ドラッグ アンド ドロップでデータにプロパティを書き込むこともできました。メタデータ ペイントと呼ばれる機能では、たとえばドキュメントをオーサー スタックにドラッグすると、そのオーサーがドキュメントに割り当てられます。[ 20 ]後のビルドでは、Microsoft はこれらの保存済み検索を、すべての場所のコンテンツを集約し、個々のタイプのサブ クエリ (たとえば、ミュージック ライブラリはライブラリ内のすべての音楽を検索) を使用する単一のライブラリ保存済み検索に置き換えました。 [ 12 ] Microsoft は、 WinFSの開発以来、メタデータ ペイントとユーザー プロファイル 名前空間の仮想フォルダーを含めることを試みてきました。[ 21 ]目的は、保存済み検索がユーザーがデータとやり取りする主要な方法になることでした。[ 17 ] [ 21 ] Microsoft は、これらの変更が混乱を招くという広範なフィードバックを受け取ったと報告されています。新しいユーザー プロファイル 名前空間に保存済み検索があると、ユーザーは似た名前のフォルダーが複数あると誤解しました。[ 17 ]
そのため、Microsoft はライブラリの保存済み検索とその関連サブクエリを削除しましたが、Windows Vista には、以前のライブラリの概念に従って単一のインデックス付き場所の保存済み検索を使用する、最近のドキュメント、最近の電子メール、最近の音楽、最近の画像とビデオ、および最近変更された保存済み検索が引き続き含まれています。 [ 12 ]これらの保存済み検索は、以前は、過去 30 日間のドキュメント、過去 7 日間の電子メール、新しいトラック、および過去 30 日間の画像とビデオとして知られていました。[ 22 ]
Windows 7 では、コンテンツを表示および整理するためのライブラリが導入されました。保存済み検索と同様に、ライブラリは一意の拡張子 (.library-ms拡張子 ) を持つ XML ファイルであり、指定された場所に整理されたファイルの集合です。ただし、保存済み検索とは異なり、ユーザーはフォルダーの場所を指定する必要があります。また、ライブラリはライブラリの種類と一致しないコンテンツを表示できます (たとえば、画像ライブラリは、サブフォルダーにドキュメントが含まれている場合、ドキュメントを表示する可能性があります)。ライブラリはエクスプローラーでシェル名前空間拡張子を持ち、その XML ファイルは、複数の Windows インストール環境やネットワーク上で再利用できます。

GNOME 2.14では、保存済み検索は仮想フォルダであり、その内容は複数のバックエンドを持つNautilus検索の結果です。これらのフォルダの内容は、フォルダが開かれたときに動的に決定され、ファイルが作成または変更されると自動的に更新されます。
仮想フォルダは、電子メールクライアントでも確立された構造です。1991 年初頭、Emacs ベースのメール リーダーVM は、バージョン 5.09 で仮想フォルダ機能を提供しました。[ 23 ] [ 24 ] VM では、日付、作成者、受信者、件名、メッセージ本文などの選択基準に基づいて、1 つ以上の物理フォルダからメール コンテンツを取得するルールを使用して、ユーザーが仮想フォルダを定義できます。仮想フォルダは対話的に作成することもでき、以前に定義された仮想フォルダからコンテンツを取得して、選択基準をカスケードすることもできます。2000年にHelix Codeによって作成されたEvolutionメール クライアントも仮想フォルダを組み込んでいます。たとえば、特定のアドレスからのすべての電子メールや、特定のキーワードを含むすべての電子メールなど、ユーザー定義のルールに一致する電子メールを自動的に一覧表示するフォルダを作成できます。[ 25 ] [ 26 ] Opera Web ブラウザは、新しいメール クライアント M2 (ベータ版は 2002 年 11 月、最終版は 2003 年 1 月) をリリースしました。M2 では、すべてのメール管理に仮想フォルダ (アクセス ポイントと呼ばれる) が使用されました。アクティブな連絡先、添付ファイル、割り当てられたラベル用に仮想フォルダが自動的に作成されました。検索が実行されるたびに仮想フォルダも自動的に生成され、手動で作成した仮想フォルダは、複数の論理メール ヘッダー ルール (正規表現の使用を含む) を使用して構築できました。Microsoft Outlook 2003 には、検索フォルダと呼ばれる同様の機能が追加されました。2004年に初めてリリースされたGmail は、ラベルを介してアクセスされる仮想フォルダに基づいてすべてのメール管理を行っています。Mozilla Thunderbirdにも検索フォルダを作成する機能があり、バージョン 1.5 以降では、複数のメール アカウントにわたって検索を実行できるようになりました。[ 27 ]
2002 年 7 月、Apple は、仮想フォルダの一種とみなせるスマート プレイリストを含むiTunesのバージョン 3 を発表しました。唯一の違いは、アクセス時に実行される検索がファイルシステムのフォルダ階層ではなく、内部データ ストアで行われることです。[ 28 ] Microsoft も2003 年にWindows XPのWindows Media Playerバージョン 9 に、自動プレイリストと呼ばれる同様の機能を追加しました。[ 29 ]
.fndと呼ばれるファイルとして保存できましたが、これらのファイルは特定の検索条件のみを保存し、フォルダーとして扱われませんでした。また、クエリを自動的に実行したり、データベースに依存したりすることもありませんでした。Windows Vista のリリース以降、ファイルは「レガシー検索クエリ ファイル」と呼ばれるようになりました。.fndヒレル・クーパーマン:「さて、もう一つ。皆さんはこう言うかもしれません。『WinFSのこれらの[スタック]ビューは動的に生成されることは理解しています。これはすべてビル[ゲイツ]が話していた構造化されたメタデータに基づいていることも理解していますが、今日ではフォルダを使ってこれをある程度近似できます。著者用のフォルダをたくさん作成して、その中にプロジェクトフォルダを作成できます。』しかし、できないことを教えてあげましょう。それを存在させて、逆の操作を行うことはできません。たとえば、最初の著者、次にプロジェクト、または最初のプロジェクト、次に著者の順にナビゲートすることはできません。
自動的にキーワードが付与されます。