Carbon
(カ?ボン)は、かつて
Mac OS X
で提供されていた、二つあった
C言語
ベ?スの主要な
アプリケ?ションプログラミングインタ?フェ?ス(API)
のうちの一つ。もう一つのAPIである
Cocoa
がMac OS Xの技術的前身である
NeXTSTEP
(
OPENSTEP
) に由?するのに?し、Carbonは先代OSである
Classic Mac OS
の
Toolbox
API
(Application Programming Interface) を
Mac OS X
用に整理?移植したものであり、Classic Mac OS用アプリケ?ションをMac OS X向けに移植しやすくするために開?された。
Carbonは??のClassic Mac OS用アプリケ?ションの迅速な移植を可能にし、初期のMac OS Xの普及を支える重要な役割を果たしたが、後年アプリケ?ションのCocoaへの移行が進むとCarbonの重要度は低下し、徐?にフェ?ドアウトすることになった。Mac OS Xの
64ビット
??が進んでもCarbonは64ビット化から取り?され、
OS X Mountain Lion
からは使用が非推?とされ、
macOS Catalina
からは完全に?止された。
?要
[
編集
]
QuickTime
チ?ムがAPIをMac OS Xに移植するために互換レイヤ?を作成したものが元型となっている。それが
スティ?ブ?ジョブズ
の目に留まり、汎用の互換フレ?ムワ?クのアイディアとして採用された。Toolbox APIの中で明らかにレガシ?なもの、あまり使われていないものを?し、また?部構造が
32ビット
を前提として再設計されている(Toolboxは
16ビット
コ?ドで、
PowerPC
の性能の足枷となっていた)。
Carbon APIを利用した
アプリケ?ション
のことを
Carbonアプリケ?ション
と呼ぶ。Mac OS Xに搭載されているもう一つのAPIであるCocoaが
Objective-C
のコ?ドを書かなければならないのに?して、Carbon APIはClassic Mac OS由?のインタ?フェイスを持っておりC/C++からも使うことができる。基本的にToolboxとソ?スコ?ド互換を目指しており、?に移植を行なうだけであれば、それほど大きな設計?更は必要なかった。
Carbonアプリケ?ションには、
- 一つのバイナリでMac OS XでもClassic Mac OSでも?行できる『
PEF Carbon
』
- Mac OS X?用の『
Mach-O
Carbon
』
の2種類が存在した
[1]
。
PEFとは
Preferred Executable Format
のことで、CFM(Code Fragment Manager)Carbonともいう。PEFは??から使用されてきたフォ?マットであるため、Classic Mac OSとMac OS X、?方で動作させることができた。ただし、CFM Carbonのアプリケ?ションでも、?行にはCarbonLibと呼ばれる
機能?張
書類が必要であり、これがなければClassic Mac OSでは動作しない。
Mach-O CarbonはMac OS X用に最適化されているのでCFM Carbonより幾分高速に動作する。また、
Quartz
をはじめとするMac OS X特有の
API
を利用するためには、Mach-O形式が最も適する。このフォ?マットはdyldとも呼ばれる。そのままではClassic Mac OSでは動作しないが、
Mac OS 9
から導入された
アプリケ?ションパッケ?ジ
を利用して一つの
フォルダ
の中に Carbonアプリケ?ションとClassic Mac OS用アプリケ?ションの二つを同梱し、一つの
アプリケ?ション
のように見せかけてClassic Mac OSとMac OS Xの?方で?行できるようにしたものもあった。
Mac OS Xが普及してしばらくはCFM Carbonが大半だったが、開?環境が最適化されていくにつれてMach-O Carbonがほとんどとなってきた。(
Xcode
の利用による)Mach-O化は
Universal Binary
化には必須である。なお、CocoaはCarbonと必ずしも?立するものではなく、?初はCarbonベ?スのライブラリをラップしてCocoaアプリケ?ションとして??したもの、Cocoaベ?スのコンポ?ネントが組み?まれたCarbonアプリケ?ションなど、??な??形態のソフトウェアが存在していた。
?態と終焉
[
編集
]
?初の
Apple
の?明では、Carbonに??したアプリケ?ションは、CarbonLibをインスト?ルしたMac OS 9とMac OS Xで(それぞれのOSに特有の機能を除けば)同じように動作可能というものであった。しかし?際にはCarbonLibには問題も多く、デベロッパはMac OS 9とMac OS X用にコ?ドを書き分けねばならない場面も多かった。ユ?ザ?のMac OS Xへの移行も迅速に進んだため、結局?方のOSで動作可能というメリットが活かされることはあまりなかった。
Mac OS X v10.2
から
Mac OS X v10.4
にかけて、CarbonはCocoaを模したHIObject(カスタムコントロ?ルを作成するための機能セット)の導入や、Mac OS X全?の共有基盤といえる
Core Foundation
との互換性?化など、?初はCocoa同等の開?基盤として徐?に構造の近代化が計られた。
しかしながら
Mac OS X v10.5
での
64ビット
??はUI部分が見送られ
[2]
、64ビット完全??にはCocoaへの移行が必須となるなど、AppleはGUI
フロントエンド
としてのCarbonを徐?にフェ?ドアウトさせ、Cocoaをメインとする姿勢を?めていった。
Mac OS X v10.6
では??Carbonベ?スだった
QuickTime
と
Finder
がCocoaで作り直されている。
さらにMac OS XはPowerPC CPUのみならず、
インテル
CPU上へも移植され、
Intel Mac
ではCocoaアプリケ?ションとMach-O Carbonアプリケ?ションは再コンパイルすることでネイティブに動作するとされていた一方、CFM Carbonのアプリケ?ションはネイティブ動作せず、
Rosetta
環境上での動作となった。
Rosetta環境は
Mac OS X Lion
で?止され、次の
OS X Mountain Lion
ではCarbon自?の利用が非推?となった。
macOS Catalina
からは32bitアプリケ?ションへの??と共にCarbonも?止されたため、Cocoaで作り直されていないCarbonアプリケ?ションは完全に動作しなくなった。
脚注
[
編集
]
- ^
CFMやMach-Oは
ABI
(Application Binary Interface) のことで、
API
(Application Programming Interface) とは無?係。
- ^
Choosing a Development Path for Your Carbon User Interface
|
---|
バ?ジョン
| | |
---|
アプリケ?ション
|
|
---|
ユ?ティリティ
|
|
---|
テクノロジ?および
インタフェ?ス
|
|
---|
開?ツ?ル
| |
---|
|