Carbon (API)

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

Carbon(カーボン)は、かつてMac OS X提供ていきょうされていた、ふたつあったC言語げんごベースの主要しゅようアプリケーションプログラミングインターフェース(API)のうちのひとつ。もうひとつのAPIであるCocoaがMac OS Xの技術ぎじゅつてき前身ぜんしんであるNeXTSTEP (OPENSTEP) に由来ゆらいするのにたいし、Carbonは先代せんだいOSであるClassic Mac OSToolbox 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-OUniversal 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ベースだったQuickTimeFinderが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