• The Search for Windows!

Windowsに検索機能がついたのは、1996年のWindows NT 4.0の頃。最初はHTTPサーバー(IIS。Internet Infomation Server)のコンテンツ検索機能だった。2001年のWindows XPにはWindows Desktop Searchが搭載され、以後、Windowsには、インデックス作成機能と検索機能が含まれている。大きく変化したのは、Windows 10の頃、一回コルタナに検索機能が統合されたが、2019年のWindows 10 Ver.19H1で分離され、同20H1で「エンハンス」モードが搭載され、従来のWindows Searchは、「クラッシック」モードとされた。エンハンスとクラッシックの最大の違いは、クラッシックがインデックスを作る場所を指定するのに対して、エンハンスでは、PC全体のインデックス化が前提で、インデックス化しないところを指定する。

さて、エクスプローラーにある検索欄だが、単純にキーワードを入れてファイル名と内容(ただしインデックス対象のファイル)による検索ができる。また、エクスプローラーのフォルダーオプション・ダイアログの検索タブで設定することで、インデックスが作成されていない場合でもファイル内容を検索対象に指定することができる。また、ここで、逆に検索にインデックスを使用させないことも指定可能だ。

Windows 11 Ver.23H2のエクスプローラーの検索欄では、いまだに複雑な検索条件指定が可能である。これを詳細クエリ構文(Advanced Query Syntax)という。簡単にいうと、ファイルのプロパティ項目を指定して検索することができる。「サイズ:>1024」とすれば、ファイルサイズが1024バイトを越えるファイルを検索できる。これを使うことで、現在開いているフォルダ以下にあるファイルのプロパティを使った検索が可能だ。

詳細クエリ構文については、以下のページに解説があるが、ここにある機能は、Vista時代のデスクトップ検索の構文であり、すべてがWindows 11のエクスプローラーの検索欄で使えるわけではない。

・詳細クエリ構文
https://learn.microsoft.com/ja-jp/windows/win32/lwef/-search-2x-wds-aqsreference

Windowsには、プロパティシステムと呼ばれる機能がある。これは、ファイルの属性やファイル内容などからプロパティ値を得て、エクスプローラーで扱うためのもの。エクスプローラーを「詳細表示」にしたときに「列」として指定できるのがプロパティである。ただし、プロパティはさまざまなファイル形式に対応して作られているため、すべてのプロパティがすべてのファイルで有効ではない。どのファイルでも有効なのは、名前、サイズ、日時(作成、更新)程度である。たとえば、音楽ファイルならば、アルバムや作成者が有効だが、テキストファイルでは有効ではない。プロパティは、すべて「プロパティ名」の後ろにコロンを付けて表す。「名前:」(ファイル名)、「サイズ:」(ファイルサイズ)、「作成日時」、「更新日時」、「kind:」(ファイルの種類)などがあるが、基本的には、エクスプローラーの「列」名と同じである。エクスプローラーを詳細表示にして列の見出し部分を右クリック、メニューから「その他」を選ぶことで、すべてのプロパティ名を見ることができる。また、ファイルのコンテキストメニューにあるプロパティから開くダイアログの「詳細」タブ(すべてのファイルに存在するわけではない)に、該当のファイルが持つプロパティが表示される。

文字列や数値、日付に対して、特殊記号を組み合わせることで、文字列一致条件や数値や日付の大小などを指定可能だ(表01)。なお、前述の「詳細クエリ構文」のページにあるように、特殊記号は複数あり、記号文字の大半はそのままでは検索ができない。いわゆるエスケープ文字もないので、ワイルドカード検索「~"*<記号入り文字列>*"」を使う。たとえば、「名前:~"*$*"」とすることで$を含んだファイル名を検索できる。

  • ■表01

もう1つファイルの種類に関しては、「kind:<種類>」を使う。「種類:」も使えるのだが、「種類:~"*フォルダ*"」のように値を日本語名で示す必要がある。しかし、正しい訳語が分からないものが多い。しかし、Kind:を使うと<種類>には英語表記が使える。「MP4」などファイルタイプ名(多くは拡張子と同じ)のほか、「folders」、「music」、「pics」、「videos」、「Programs」などの一般的なキーワードが指定できる。これに関しては、前述のURLの「ファイルの種類」に記述がある。

AND、OR、NOT(すべて大文字のみ有効)を使った複合条件の指定もできる。単純にスペースで検索条件を区切ればANDの意味になる。たとえば、「echo x y」という条件を指定すると、ファイル名またはファイル内容に「echo」、「x」、「y」を同時に含む(ただし順番は任意)という意味になり、「echo y x」もヒットする。順番を指定して検索させたい場合には、前述のワイルドカード検索を使い「~"*echo y x*"」とする。

今回のタイトルネタは、1984年の映画、「Star Trek III: The Search for Spock」(邦題 スタートレックIII ミスター・スポックを探せ!)である。単純な「Search」つながりである。スタートレック映画の3作目。2作目と対になるストーリーである。テレビドラマシリーズの頃からスポックに関しては、知られざる秘密が関わるエピソードが多かったが、今回も「そうなのかよ」的な秘密がある。そのあたりが、ちゃんとしたドキュメントを出してくれず、やってみると「こういうこともできるのかよ」的な事実の分かるエクスプローラーの検索構文に似ている。