Apple のプラットフォーム(macOS / iOS)では、コンポーネントの識別に Windows の COM のような GUID(Globally Unique Identifier)は一般的に使用されません。
代わりに、Bundle Identifier, Uniform Type Identifier (UTI), CFUUID などの識別子が使われます。
Apple のエコシステムでは、アプリケーション、フレームワーク、サービス、プロセス、ファイル形式などを識別するために異なる方式が採用されています。
識別方法 | 用途 | 例 |
---|---|---|
Bundle Identifier | アプリやフレームワークの識別 | com.apple.Safari |
Uniform Type Identifier (UTI) | ファイルフォーマットやデータ型の識別 | public.jpeg |
CFUUID(Core Foundation UUID) | ユニークなオブジェクト識別 | 550e8400-e29b-41d4-a716-446655440000 |
Process Identifier (PID) | 実行中のプロセスの識別 | 12345 |
Mach Port Name / XPC Name | プロセス間通信(IPC) | com.apple.security |
- macOS/iOS では、アプリケーションやフレームワークはバンドル(.app, .framework など)として管理される。
- 各バンドルには一意の Bundle Identifier(バンドル識別子) が割り当てられる。
- Windows の CLSID(COM クラス識別子)に近い役割を果たす。
<key>CFBundleIdentifier</key>
<string>com.apple.Safari</string>
com.apple.Safari
は Safari の一意な識別子。com.mycompany.myapp
のように、逆ドメイン名形式を使用。
✅ macOS / iOS のアプリやフレームワークの識別
✅ アプリ間通信(AppleScript, URL Scheme, XPC など)で利用
✅ macOS の launchd
や iOS の App Extensions
で使用
📌 結論:
「Apple では COM の CLSID のように、アプリやフレームワークは Bundle Identifier で識別される。」
- ファイルフォーマット、データ型、コンテンツの種類を識別するための仕組み。
- Windows の MIME Type + COM のファイル拡張子管理に相当。
- 例:
public.jpeg
(JPEG 画像)、com.adobe.pdf
(PDF)
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.mycompany.mycustomtype</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
</dict>
</array>
✅ ファイル拡張子(.jpg
, .png
, .docx
など)の識別
✅ ドキュメントハンドリング(macOS の Finder, iOS の Open In...)
✅ アプリ間でのデータ共有(Copy & Paste, Drag & Drop)
📌 結論:
「Windows の COM ではファイル拡張子をレジストリで管理するが、Apple では UTI(Uniform Type Identifier)を使ってファイルタイプを管理する。」
- Apple の Core Foundation フレームワークには CFUUID(UUID を扱う API)が用意されている。
- Windows の GUID に最も近い。
- ただし、主に一時的な識別子として使われるため、アプリ間での統一的なコンポーネント識別には使われない。
import Foundation
let uuid = UUID()
print(uuid.uuidString) // "550e8400-e29b-41d4-a716-446655440000"
✅ ユニークなオブジェクト識別(デバイス ID、セッション ID)
✅ ネットワーク通信(Bonjour サービスなど)
✅ 一部の macOS/iOS API での一意な識別子の生成
📌 結論:
「Apple にも UUID(CFUUID)があるが、Windows の GUID のように COM コンポーネントの識別には使われず、主に一時的な識別に使用される。」
- プロセス間通信(IPC)のための識別子。
- macOS では Mach カーネルが提供する
Mach Port
を利用してプロセスを識別。 - XPC(Cross-Process Communication)では、サービスごとに一意な名前(XPC Name)がある。
let connection = NSXPCConnection(serviceName: "com.apple.security")
com.apple.security
は XPC サービスの識別子。
✅ プロセス間通信(macOS/iOS のシステムサービス)
✅ サンドボックス環境でのセキュアな IPC
📌 結論:
「Windows の DCOM では CLSID や APPID を使うが、macOS では XPC Name や Mach Port Name でプロセスを識別する。」
識別方法 | 用途 | Windows の対応する概念 |
---|---|---|
Bundle Identifier | アプリやフレームワークの識別 | CLSID |
Uniform Type Identifier (UTI) | ファイルフォーマットの識別 | MIME Type / COM のファイル拡張子 |
CFUUID (UUID) | 一時的な識別子(セッション ID など) | GUID |
Mach Port Name / XPC Name | IPC(プロセス間通信) | DCOM の APPID |
- Windows の COM は、レジストリで GUID を一元管理し、システム全体でコンポーネントを識別。
- アプリケーションごとに異なる COM コンポーネントを使えるが、統一的に管理される。
- Bundle Identifier はアプリやフレームワークの識別。
- UTI はデータ型の識別。
- CFUUID は一時的な識別。
- XPC Name や Mach Port Name は IPC の識別。
📌 結論:
✅ Windows は「COM の GUID で全てを一元管理」、Apple は「用途ごとに異なる識別方法を採用」している。
✅ Apple では GUID のような統一的なコンポーネント管理は行わず、各システムごとに適切な識別方式を提供する。
✅ Apple の識別方式は、COM よりもシンプルで直感的だが、統一的な管理が難しいという側面もある。
💡 最終結論:
「Apple は COM のような統一的な GUID ベースのコンポーネント識別を採用せず、用途ごとに異なる識別方式を提供することで、より分かりやすく直感的なシステム設計を採用している。」