Carbon (API)

Carbonとは



Carbonは、かつてMac OS Xで提供されていた主要なアプリケーションプログラミングインターフェース(API)の一つです。もう一つのAPIであるCocoaがNeXTSTEP(OPENSTEP)に由来するのに対し、Carbonは先代OSであるClassic Mac OSのToolbox APIを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からは完全に廃止されました。

Carbonの成り立ち



Carbonは、QuickTimeチームがAPIをMac OS Xに移植するために作成した互換レイヤーが元になっています。このレイヤーがスティーブ・ジョブズの目に留まり、汎用的な互換フレームワークとして採用されました。Toolbox APIの中でもレガシーなものやあまり使われていないものを整理し、内部構造は32ビットを前提に再設計されました。これは、Toolboxが16ビットコードであったためにPowerPCの性能を十分に引き出せていなかった点を改善するためでした。

Carbonアプリケーション



Carbon APIを利用したアプリケーションは「Carbonアプリケーション」と呼ばれます。Mac OS Xにはもう一つのAPIとしてCocoaがありますが、CocoaではObjective-Cのコードを書く必要があるのに対し、Carbon APIはClassic Mac OS由来のインターフェイスを持ち、C/C++からも利用できました。基本的にToolboxとのソースコード互換を目指しており、単純な移植であれば大きな設計変更は不要でした。

Carbonアプリケーションには、以下の2種類が存在しました。

PEF Carbon(CFM Carbon): 1つのバイナリでMac OS XとClassic Mac OSの両方で実行できるタイプ。
Mach-O Carbon: Mac OS X専用に最適化されたタイプ。

PEFはPreferred Executable Formatの略で、従来のフォーマットであるためClassic Mac OSとMac OS Xの両方で動作可能でした。ただし、実行にはCarbonLibと呼ばれる機能拡張書類が必要で、これがなければClassic Mac OSでは動作しませんでした。一方、Mach-O CarbonはMac OS X用に最適化されており、CFM Carbonよりも高速に動作しました。また、QuartzなどMac OS X特有のAPIを利用するためにはMach-O形式が適していました。この形式はdyldとも呼ばれます。

Mac OS Xの普及当初はCFM Carbonが大半でしたが、開発環境が最適化されるにつれてMach-O Carbonが主流となりました。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からv10.4にかけて、CarbonはCocoaを模したHIObjectの導入や、Core Foundationとの互換性強化など、Cocoa同等の開発基盤として近代化が図られました。しかし、Mac OS X v10.5での64ビット対応は見送られ、64ビットへの完全対応にはCocoaへの移行が必須となりました。AppleはGUIフロントエンドとしてのCarbonを徐々にフェードアウトさせ、Cocoaをメインとする姿勢を強めていきました。Mac OS X v10.6では、従来CarbonベースだったQuickTimeFinderがCocoaで作り直されました。

さらに、Mac OS XがIntel CPUへ移植されると、CocoaアプリケーションとMach-O Carbonアプリケーションは再コンパイルでネイティブに動作する一方、CFM CarbonアプリケーションはRosetta環境上での動作となりました。Rosetta環境はMac OS X Lionで廃止され、次のOS X Mountain LionではCarbon自体の利用が非推奨となりました。macOS Catalinaからは32ビットアプリケーションへの対応と共にCarbonも廃止され、Cocoaで作り直されていないCarbonアプリケーションは完全に動作しなくなりました。

このように、CarbonはMac OS Xの初期における移行を円滑に進めるための重要な役割を果たしましたが、技術の進歩と開発環境の変化に伴い、その役割を終えることとなりました。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。