한국   대만   중국   일본 
Carbon (API) - Wikipedia コンテンツにスキップ

Carbon (API)

出典: フリ?百科事典『ウィキペディア(Wikipedia)』

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アプリケ?ションは完全に動作しなくなった。

脚注 [ 編集 ]

  1. ^ CFMやMach-Oは ABI (Application Binary Interface) のことで、 API (Application Programming Interface) とは無?係。
  2. ^ Choosing a Development Path for Your Carbon User Interface