タイトル【小池邦人のプログラミング日記】2000/9/5<Mac OS Xへの道 パブリックβ版に備えて>カテゴリーMac OS X, Carbon/CF, 小池邦人のプログラミング日記
作成日2000/9/6 12:1:15作成者小池邦人
待望のMac OS Xパブリックβ版がリリースされる直前ですが、ここで最新のCarbon SDKについてのおさらいをしておきたいと思います。と言っても2000年9月5日現在、Carbon SDKの最新GMバージョンは相変わらずv1.04のままです(涙)。これはv1.02からのバグフィックス版で、Appleから発売されたAppleWorks 6.0が安定して動くようにチューニングされた物です。よって今のところ、Metrowerks CodeWarriorでCarbon対応アプリケーションを開発するのには、この「Carbon 1.0.4 SDK」を用いるしかありません。しかし、CarbonLibの本当の姿と実力は、次期リリースのv1.1にあります。また、Mac OS 9の次期バージョンでもCarbonLib v1.1が標準添付されるという噂もあります。(この状況では無理じゃないかと思うのですが...)

9月5日現在、AppleのADCメンバーはメンバーサイトから「CarbonLib 1.1a4 SDK」をダウンロードすることができます。CarbonLib 1.1 SDKもd版がリリースされてから3ヶ月以上が経つのですが、相変わらずα版のままです(涙)。このSDKに含まれている「Universal Interfaces」はv3.4d8となっています。こちらもメンバーサイトから単独でダウンロードすることができますが、バージョンはv3.4a1ですので、少々新しくなっています。最新のSDKでの大きな変更点は「Carbon Support」フォルダ内に、Metrowerks CodeWarrior用のPreCompiled Headerを含んだ「CarbonHeadersPreCompiled」フォルダが追加されたことです。そのフォルダ内の「CarbonHeadersPCH」が、CodeWarriorでCarbonLib v1.1対応アプリケーションを開発する時に利用するPreCompiled Header本体です。

このフォルダには、CarbonHeadersPCHをMakeするためのプロジェクトも含まれています。これは、使用しているCodeWarriorのバージョンによっては、添付されているCarbonHeadersPCHをそのまま使えない場合があるためです。(Pro5ではダメでした)こうした場合には、「CarbonHeaders.mcp」を起動させ再度作り直す必要があります。プロジェクトからCarbonHeadersPCHを使うのには、まず「Carbon Support」フォルダをCodeWarrior環境の「Metrowerks CodeWarrior」や「MacOS Support」フォルダに入れ、CodeWarrior IDEのSettingsダイアログでリンク先のパスを変更してやります。そして、Settingsダイアログの「C/C++ Language」パネルのPrefix Fileカラムにその名称を入力すればOKです。

CarbonHeadersPCHの内容はとても単純で、Universal Interfacesに含まれている「Carbon.h」をコンパイルしただけです。これにより各Managerに対応したヘッダーファイルをいちいち大量に#includeする必要がなくなります。ただし、Carbon.hにはQuickTime関係のヘッダーファイルは含まれていないようなので、開発しているアプリケーションによっては、それらを別途リンクする必要があります。

v1.1 SDKに付属しているドキュメントは、「Carbon 1.1 technote 7/18/00.pdf」と「Carbon Porting.pdf 7/17/00」だけです。それ以外は、参照用として以下のCarbon Documentサイトへのリンクファイルが添付されています。
◇Carbon Developer Documentation
 http://developer.apple.com/techpubs/carbon/carbon.html

つまり、各自サイトからダウンロードして読めということですね(笑)。しょうがないので、デベロッパーは毎日このサイトをのぞき、最新ドキュメントが更新されていないかチェックする必要があります。(これが全然更新されない...)「Carbon Support」フォルダに入っているサンプルにも、v1.1で追加された「Carbon Event Manager」や「Multilingual Text Engine」に関連したプロジェクトが追加されています。しかし、うまく動かないサンプルも多々あり(α3よりは良くなっているが...)まだまだ消化不良の感が拭えません。

また、あまり知られていませんが、新しくサポートされた「DataBrowserコントロール」に関するサンプルプロジェクトも含まれています。これは、Finderのリストウィンドウと同じ機能を持つコントロール(なぜかList Managerの拡張ではない)を市販フレームワークを利用しなくても使えるようにするAPI群です。リストウィンドウのタイトルをスライドさせたり、タイトルの内容により並び替えをしたり、三角アイコンで階層表示したり、Finderが行っている機能はほとんどすべて実現できるようです。このDataBrowserコントロールのサポートも Carbon v1.1からとなっています。これに関係するドキュメントも、AppleのCarbon DocumentサイトのControl Managerの簡単なリファレンスだけのようです。
◇Control Manager
 http://developer.apple.com/techpubs/carbon/HumanInterfaceToolbox/ControlManager/controlmanager.html

UniversalInterfaces3.4d8の「ControlDefinitions.h」も参考になりますが、この状況のままでは、ソースコードでも解析しないと使用法CarbonHeadersPCHを習得するのは困難です。非常に便利な機能だけに、早急なドキュメントの整備を望みたいと思います。

さて、Mac OS Xのパブリックβ版がリリースされるというのに、開発環境の方がα版やd版というのは寂しいかぎりです。加えて、v1.1 SDK付属の「Carbon 1.1 technote 7/18/00」を読んでみると、Mac OS Xには実装されていないCarbon APIがまだまだ大量にあるようです(涙)9月13日のMac OS Xパブリックβ版のリリースと同時に、アプリケーション開発環境の方にも大きな進展があることを期待したいと思います。
関連リンクオッティモ