Uniform Type Identifier ( UTI ) は、 Apple Inc.が提供するソフトウェアで使用されるテキスト文字列で、特定のクラスまたはタイプのアイテムを一意に識別します。Apple は、一般的なシステム オブジェクト (ドキュメントまたは画像ファイル タイプ、フォルダとアプリケーション バンドル、ストリーミング データ、クリッピング データ、ムービー データ) を識別するための組み込み UTI を提供しており、サードパーティの開発者がアプリケーション固有の用途または独自の用途のために独自の UTI を追加できるようにしています。UTI のサポートはMac OS X 10.4オペレーティングシステムで追加され、ドキュメントを分類するために UTI を使用するSpotlightデスクトップ検索テクノロジーに統合されました。UTI の主な設計目標の 1 つは、ファイルのMIME タイプ、ファイル名拡張子、タイプ コードまたは作成者コードからファイルの内容を推測することに関連する曖昧さと問題を解消することでした。[ 1 ]
UTI は逆 DNS命名構造を使用します。名前には、ASCII文字 A~Z、a~z、0~9、ハイフン ("-")、ピリオド (".")、およびU+007F を超えるすべてのUnicode文字を含めることができます。 [ 1 ]コロンとスラッシュは、Macintosh およびPOSIXファイル パス規則との互換性のために禁止されています。UTI は多重継承をサポートしており、含まれるデータに応じて、任意の数の関連タイプでファイルを識別できます。UTI は大文字と小文字を区別しません。[ 2 ]
ユーザーがアクセスしやすいオペレーティングシステムを維持する上での難しさの一つは、データ型と、そのデータを効果的に利用できるアプリケーションやプロセスとの間の関連性を確立することです。例えば、特定の圧縮形式で画像データを含むファイルは、画像データを処理できるアプリケーションでのみ開いて処理できます。そして、それらのアプリケーションは、データを抽出して処理するために、どの圧縮形式が使用されているかを識別できなければなりません。初期のコンピュータシステムでは、ファイル拡張子によってファイルの関連付けが維持されていました。ファイル名の後に続く3~4文字のコードは、特定のアプリケーションでファイルを開くようにシステムに指示するものです。
システム 1以降、[ 3 ] Macintoshオペレーティングシステムは、ファイルメタデータの一部としてタイプ コードとクリエーター コードを追加しました。これらの 4 文字のコードは、ファイルを作成したアプリケーション (クリエーター コード) とファイルの特定のタイプ (タイプ コード) の両方を指定するように設計されており、他のアプリケーションがファイル データを簡単に開いて処理できるようにしました。しかし、タイプ コードとクリエーター コードによってシステムの柔軟性が拡張され (特定のタイプのファイルが特定のアプリケーションで開くことに限定されない) ましたが、ファイル拡張子と同様の多くの問題を抱えていました。タイプ コードとクリエーター コードが、Macintosh 以外のシステム (Unix ベースのサーバーなど) 間でファイルを転送すると失われる可能性があり、タイプ コードが多数存在するため識別が困難でした。
さらに、従来の Mac OS はファイル拡張子を全く認識しなかったため、DOS/Windows システムからファイルを転送すると認識されないファイルエラーが発生しました。Mac OS X の基盤となったOPENSTEPは拡張子を使用しており、初期の Mac OS X もそれに倣いました。これにより、NeXT や Windows から OS X に移行してきたユーザーや開発者がファイル拡張子の継続使用を主張し、従来の Mac OS から移行してきたユーザーが Apple にファイル拡張子をタイプや作成者で置き換えるか補完するよう求めるなど、論争が生じました。[ 4 ]
ファイル識別タイプは他にも存在します。例えば、MIMEタイプはWeb上で転送されるデータの識別に使用されます。しかし、AppleのUTIシステムは、データを階層的に記述し、より優れた分類と検索を可能にし、コンテキスト間でデータ記述を標準化し、データ型を拡張するための統一的な方法を提供する、柔軟なファイル関連付けシステムを作成するために設計されました。例えば、public.jpegとpublic.pngのUTIはpublic.imageのUTIを継承しており、検索で使用するUTIの特異性を変更するだけで、ユーザーはJPEG画像やPNG画像を絞り込んで検索したり、あらゆる種類の画像を広く検索したりできます。さらに、新しいデータ型を設計するアプリケーション開発者は、利用可能なUTIを簡単に拡張できます。例えば、企業が開発した新しい画像フォーマットは、com.company.proprietary-imageというUTIを持ち、 public.imageタイプを継承するように指定できます。
AppleのmacOSは、他の形式のファイル関連付けも引き続きサポートしており、それらの間の変換を行うユーティリティも備えているが、利用可能な場合はUTIを優先的に使用する。
Appleは、すべてのUTIの基本データ型としてpublic.*ドメインを維持しています。他のUTIは、クラス継承に似たシステムである適合性によって、これらの基本UTIに関連付けられます。他のUTIに準拠するUTIは基本型を共有し、一般的に、より汎用的なUTIのデータを扱うアプリケーションは、その汎用的なUTIに準拠する任意のUTIのデータを扱うことができるはずです。
Appleの階層構造における最も基本的な公開UTIは以下のとおりです。
UTIは、他のファイルタイプの識別子を識別するためにも使用されます。
動的UTIは、アプリケーションが必要とする場合に作成できます。これらは、プレフィックスdyn.を持ち、「本来は不明なファイル名拡張子、MIMEタイプ、OSタイプなどをラップするUTI互換のラッパー」の形式をとります。[ 1 ]
Appleは、システムで宣言された多数のUniform Type Identifier(UTI)を提供しています。サードパーティ製アプリケーションは、アプリケーションパッケージ内で宣言されたUTIを「エクスポート」することで、macOSが管理するデータベースにUTIを追加できます。新しいUTIは既存のシステムUTIに「準拠」するように宣言でき、宣言によって新しいUTIをファイル拡張子に関連付けることができるため、エクスポートされた宣言だけで、新しいファイルタイプのクイックルックを有効にするなど、新しい機能を有効にするのに十分な情報をオペレーティングシステムに提供できます。
特定のファイルの UTI を取得するには、ターミナルでmdls (メタデータ リスト、Spotlightの一部) コマンドを使用します。
mdls-namekMDItemContentType-namekMDItemContentTypeTree-namekMDItemKindFILE