さて今日も、MIDIWindにMIDI検索機能を追加すべく、いろいろやっているところです。
Macで検索と言えばSpotlightと言う事で、実際の作業としてはMIDIWindにSpotlightによる検索機能を追加ということになる訳ですが、そこにまたもや壁が立ちはだかる。
どうやらSpotlightはMIDIファイルをサポートしていない。
しかし、Spotlightに新たなファイルをサポートさせることはもちろんできる。Spotlight ImpoterというCFPluginを作ればよい。Spotlightがファイルからメタデータを収集するとき、そのファイルのUTIに対応したImpoterが自動的に呼び出されて、そのファイルを処理してくれる訳だが...
それ以前に、MIDIファイルはUTI自体が未定義だったりする。
UTI(Uniform Type Identifier)は、ファイルの種類を識別する値だ。ファイル拡張子(.mid)やファイルタイプコード(Midi)やmimeタイプ(audio/midi)などでもファイルの種類を識別できるが、Spotlight ImpoterではUTIのみが使用されるようだ。で、MIDIファイルに関して言うとこれがOS側で定義されていない。
もちろん、UTIを新規に定義することはできる。例えば、MIDIWindのInfo.plist内に新しいUTIの定義を書いたりできるらしい。しかし、このような方法は、そのアプリケーション独自の書類ファイルを定義するためのもの。MIDIファイルはあまりにも一般的なファイルすぎて、MIDIWind独自にUTIを定義するのがためらわれるところだ。
とは言っても、他の方法も思いつかないので、最終的にはMIDIWind独自に定義するしかないんだろうなぁ。