Spotlightには多少の不安はあるものの、実際には驚くほどのことができるのです。デジタル写真を考えてみましょう。撮影した画像には、豊富なデータが写真と共に記録されます。カメラがどのような情報を記録するかはメーカーによって異なりますが、絞り、焦点距離、露出(シャッタースピード)といった基本的な項目が含まれている場合がほとんどです。Macに写真を置くと、Spotlightはこれらの情報を読み取り、インデックス化します。これにより、興味深い検索が可能になります。
例えば、Spotlight に露出時間が長い画像、例えば露出時間が 1/3 秒程度を超える画像をすべて検索するように指示するとします。(通常の露出時間は 1/60 秒程度です。) これを実行するには、おそらく Finder に切り替え、Command + F キーを押して検索ボックスを表示し、プラス記号をクリックして条件を追加します。種類ポップアップで「その他」を選択し、長い選択肢の中から「露出時間」を選択します。次のポップアップで「より大きい」を選択し、その横にある入力ボックスに「.333」と入力します。完了すると、クエリは次のようになります。

しかし、検索を実行すると驚くでしょう。 露出時間の値を持つすべての 画像が検索されるのです。なぜでしょうか?Spotlightは整数ではない値、つまり.33を認識できないからです。クエリを実行する前に、この数値をゼロに変換します。つまり、露出時間が「0より大きい」すべての写真、つまりすべての写真が検索されるのです。
これは1未満の値の場合に限ったことではなく、画像関連のフィールドで非整数値を検索しようとすると常に発生します。Spotlightは入力値を次の整数に切り上げることもせず、整数部分のみを取得します。そのため、あるフィールドで2.99、2.50、2.25という値を検索しようとした場合、Spotlightは単に2.0を検索値として使用します。
画像関連のSpotlightデータを検索するときに、この問題を回避するにはどうすればよいでしょうか? Raw Queryを使用する必要 があります。つまり、Spotlightのネイティブ言語でクエリを作成する必要があります。何かを検索するたびに、Spotlightは自然なクエリをこの言語に変換します。例えば、「Exposure Time Greater Than 2」という検索文字列でファイルを検索すると、Spotlightはその文字列を次のような数式に変換します。
kMDアイテム露出時間秒数 > 2
ビット は 、露出時間を保持する 実際のフィールド (またはメタデータkMD…) の名前です 。
整数問題を解くRaw Queryを作成するには、「新規検索」ウィンドウ(Command-F)を開き、「種類」ポップアップメニューから「その他」を選択します。表示されるリストで「Raw Query」を選択し、「OK」をクリックします。

([お気に入りに追加] オプションを選択したことに注意してください。これにより、Raw Query エントリが種類ポップアップ メニューの項目リストに直接表示されるため、今後アクセスしやすくなります。)
「Raw Query」テキストフィールドに「」と入力します kMDItemExposureTimeSeconds > 0.333。数値を入力するとすぐに検索が実行されます。検索が完了すると、以前の検索文字列で得られた結果とは大きく異なる結果が表示されます。

下のウィンドウを見るとわかるように、露出時間が 3 分の 1 秒を超える画像は、一番上のウィンドウの結果に示されている 8,152 枚ではなく、私のマシンには 15 枚しかありません。
というわけで、これで問題は解決しました。ところで、 kMDItemExposureTimeSeconds Spotlightが「露出時間」の代わりに使っている奇妙な用語( )はどうやって見つけたのでしょうか?これは知っておいてよかったです。もちろん、Raw Queryモードは整数値の問題を回避するためだけでなく、あらゆる検索に使えるからです。検索可能なメタデータを確認する最も簡単な方法は、ターミナル(/アプリケーション -> ユーティリティ)を開き、画像を含むディレクトリ( ユーザーフォルダ -> ピクチャ、または ユーザーフォルダ -> iPhoto ライブラリフォルダなど)に移動することです。
ピクチャ フォルダでこれを行うには、ターミナルに次のように入力し、Return キーを押します。
cd ~/Pictures
写真を見つけて、その写真にどのようなメタデータが含まれているかを確認しましょう。このコマンドを実行すると、 ls フォルダ内の内容が表示されます。ファイルでクエリできるSpotlightフィールドを確認するには、 ( mdls “somephoto.jpg”は somephoto.jpg 確認したい写真の名前)と入力してください。
Returnキーを押すと、文字「 」で始まる項目の長いリストが表示されます kMDItem…。これらは、生のクエリで使用できるメタデータ項目です。例えば、写真内の時間に関連する項目を検索する場合、知っておく必要があるのは以下の3つのフィールドです。
-
kMDItemAperture– 絞り設定。 -
kMDItemExposureTimeSeconds- 曝露時間。 -
kMDItemFocalLength– 焦点距離。
これらのキーワードをRaw Queryで使用すれば、整数以外の値に基づいて写真を検索できます。一度検索を実行したら、「保存」ボタンをクリックすれば、後で簡単に同じクエリを呼び出すことができます。このような検索を頻繁に行う場合は、フィールドごとに1つずつ、合計3つのクエリを保存することを検討してください。必要なときに保存した検索を開き、比較条件と値を編集して、実行する検索に合わせて検索を実行できます。これらのフィールドは標準のSpotlightインターフェースで完全に検索できるようになるため、今後のOS Xのアップデートでこの問題が修正されることを期待しています。
興味がありますか?Raw Queriesの使い方について詳しくは、「Cut Through the Clutter(不要な情報を切り抜ける)」をご覧ください。Spotlightメタデータについて詳しくは、「Spotlightを使いこなす」をご覧ください。