Carbon
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Carbon(カーボン)は、旧来のMac OSのToolbox API(Application Programming Interface)をMac OS X用に整理・移植したAPIであり、従来のMac OS用アプリケーションをMac OS X向けに移植しやすくするために開発された。
[編集] 概要
元々はQuickTimeチームがAPIをWindowsに移植するために互換レイヤーを作成したものが元型となっている。それがスティーブ・ジョブスの目に留まり、汎用の互換フレームワークのアイディアとして採用される事となった。Toolbox APIの中で明らかにレガシーな物、使われていない物を廃し、また内部構造が32bitを前提として再設計されている(Toolboxは16bitコードで、PowerPCの性能の足枷となっていた)。
Carbon APIを利用したアプリケーションのことをCarbonアプリケーションと呼ぶ。Cocoa は同じ Mac OS Xに搭載されているほぼ等価な機能をもつ API であるが、Cocoa API を使うためには Objective-C のコードを書かなければならないのに対して、Carbon API は旧来のインターフェイスを持っており C/C++ からも使うことができる。基本的にToolboxとソースコード互換を目指しており、単に移植を行なうだけであれば、それほど大きな設計変更は必要ない。
Carbonアプリケーションには、
- 一つのバイナリでMac OS Xでも旧来のMac OSでも実行できる『PEF Carbon』
- Mac OS X専用の『Mach-O Carbon』
の2種類が存在する。 PEFとはPrefered Executable Formatのこと。CFM(Code Fragment Manager) Carbonともいう。PEFは従来から使用されてきたフォーマットであるため新旧両方のオペレーティングシステムで動かせる。 Mach-O CarbonはMac OS X用に最適化されているのでCFM Carbonより幾分高速に動作する 。また、QuartzをはじめとするMac OS X特有のAPIを利用するためには、Mach-O形式が最も適する。このフォーマットはdyldとも呼ばれる。 Mac OS Xが普及してしばらくはCFM Carbonが大半だったが、開発環境が最適化されていくにつれてMach-O Carbonがほとんどとなってきた。(Xcodeの利用による)Mach-O化はUniversal Binary化には必須である。
※CFMやMach-OはABI (Application Binary Interface) のことで、API (Application Programming Interface) とは無関係。
Carbonにより、旧来のMac OSのアプリケーションのMac OS Xへの移植が容易になり、新旧両方のオペレーティングシステムでアプリケーションの実行が出来るため、最も普及している。CarbonアプリケーションはMac OS Xにもネイティブになり、その多大なる恩恵を受けることが出来る。 ただし、CFM Carbonのアプリケーションでも、実行にはCarbonLibと呼ばれる機能拡張書類が必要であり、これがなければ旧来のMac OSでは動作しない。逆に言えば、CarbonLibがあればMac OS 8.6から最新のMac OS X上で実行できるようになる。
CFM Carbonでは一つのプログラムで新旧両方のOSで実行できるが、CarbonLibが欠かせない。Mach-O Carbonは、一つのプログラムだけの場合、Mac OS X以外では実行できない。これらの欠点を補うため、Mac OS 9から導入されたアプリケーションパッケージを利用して一つのフォルダの中に CarbonアプリケーションとClassicアプリケーション(Mac OS 9まででしか動作しないアプリケーション)の両方を入れ、一つのアプリケーションのように見せかけ、新旧両方のOSで確実に実行できるようにすることがある。
[編集] 現状と将来
当初のAppleの説明では、Carbonに対応したアプリケーションは、CarbonLibをインストールしたMac OS 9とMac OS Xで(それぞれのOSに特有の機能を除けば)同じように動作可能というものであった。しかし実際には、CarbonLibには問題も多く、デベロッパはMac OS 9とMac OS X用にコードを書き分けねばならない場面も多かった。そのため、Mac OS Xへの移行も完了した今日では、Mac OS 9とMac OS Xの両方で動作可能な実行環境としてのCarbonは役目を終えたとも言える。
現在のCarbonはCocoaを模したHIObject(カスタムコントロールを作成する為の機能セット)の導入や、Mac OS X全体の共有基盤といえるCore Foundationとの互換性強化など、徐々に構造の近代化が計られている。
Mac OS X v10.5でのAPIの64bit化に関して、当初CarbonはCocoa同様に64ビット化されると発表されていたが[1]、その後Carbonは64bit化されないことが公言されており[2][3]、QuickTimeの64ビット機能はCocoaベースのQT Kitからしか利用できず、OS XベースのiPhone/iPod touchではCocoaは利用できるがCarbonはない[4]など、最新の機能追求面でCarbonの切り捨てに掛かっているという見方が生まれている[5]。なお、アップルからはCarbonからCocoaに移行を推奨するとのアナウンスはなく、iTunes、FinderもCarbonでの実装になっているが、Adobe Reader、EGWORDなどサードパーティーのアプリケーションではCocoaへの移行が進みつつある。
なおMac OS XはPowerPC CPUのみならず、Intel CPU上へも移植された。Intel版Mac OS XではCFM Carbonのアプリケーションはネイティブには動作せず、Rosettaと呼ばれる環境の上で動作することになる。CocoaアプリケーションとMach-O Carbonアプリケーションは再コンパイルすることでネイティブに動作する。
[編集] 脚注
- ^ WWDC 2006 - Vistaを迎え撃つMac OS X 、"Leopard"の新機能は……
- ^ 【WWDC 2007】これが“Leopard”10の新機能だ!(前編)
- ^ アップル - Mac OS X Leopard - テクノロジー - 64ビット
- ^ iPhone Dev Center
- ^ Mac OS X 10.6 code named Snow Leopard, may be pure Cocoa
|
---|
アプリケーション |
Automator - Backup - Chess - Dashboard - DVD プレーヤー - Finder - Front Row - Grapher - iCal - iChat - iSync - iTunes - Mail - Photo Booth - QuickTime Player - Safari - Sherlock - アドレスブック - 計算機 - 辞書 - スティッキーズ - スクリプトエディタ - テキストエディット - プレビュー |
ユーティリティ |
AirMac 管理ユーティリティ - Audio MIDI 設定 - Bluetooth ファイル交換 - BOMArchiveHelper - AppleScriptユーティリティ - Classic - ColorSync ユーティリティ - Crash Reporter - DigitalColor Meter - DiskImageMounter - Font Book - iPod ソフトウェアアップデート - Java Web Start アプリケーションマネージャ - Java アプリケーションキャッシュビューア - Java 環境設定 - Java プラグイン設定 - NetInfo マネージャ - ODBC アドミニストレータ - Universal Access - VoiceOver - X11 - アクティビティモニタ - 移行アシスタント - イメージキャプチャ - インストーラ - インターネット接続 - キーチェーンアクセス - グラブ - コンソール - システム環境設定 - システムプロファイラ - ソフトウェアアップデート - ターミナル - ディスクユーティリティ - ディレクトリアクセス - ネットワークユーティリティ - ファームウェア・アップデート - プリンタ設定ユーティリティ - フォルダアクション設定 - ペアレンタルコントロール - ヘルプビューア |
テクノロジーおよびインタフェース |
Apple Advanced Typography - AppleScript - Aqua - ATSUI - Audio Units - Bonjour - Boot Camp - Carbon - Cocoa - ColorSync - Core Animation - Core Audio - Core Data - Core Foundation - Core Text - Core Image - Core Video - CUPS - Darwin - Dock - Exposé - FileVault - Inkwell - Keychain - Mach-O - MLTE - OpenGL - plist - Quartz - Quick Look - QuickTime - Rosetta - Spaces - Spotlight - Time Machine - Uniform Type Identifier - Universal Binary - WebKit - Xgrid |
開発ツール |
Apple Developers Tools - Dashcode - Interface Builder - Xcode |