タイトル【小池邦人のプログラミング日記】2000/6/7<Mac OS Xへの道 Carbonの現状>カテゴリーCarbon/CF, 小池邦人のプログラミング日記
作成日2000/6/9 15:54:51作成者小池邦人
現状のアプリケーションをMac OS X環境へ移植する作業を容易にするために、Appleは「Carbon」というAPI(Application Program Interface)セットを導入しました。Mac用アプリケーションを開発されている方は、Carbonの意味について正しく理解されていると思います。でも、そうでない方は、感覚的にはなんとなく理解できても「説明してみろ」と言われると、困ってしまうかもしれません。

我々調理人(プログラマー)は調理場(Mac OS)で、手に馴染んだ道具や食材(API)を用いて料理(アプリケーション)を作っています。古い道具ですと15年以上も愛用しています。5年ぐらい前になりますが、Jobsが「みなさん、もっとモダンな調理場と道具、そして素敵な食材を沢山用意しました。ぜひ、こちらへ移って料理を作ってください!」と訴えました。(その調理場はビルの20階にあったそうです)それが「Rhapsody」(現在のMac OS X Server)だったわけです。ところがどっこい、職人肌の頑固な調理人は、慣れ親しんだ道具や、使い方を熟知した食材を手放してまで、ほいほい調理場を変えるほど甘くはありませんでした(笑)。

メジャーな調理人達からまったく賛同の声が上がらないのを見て、Jobsは作戦を変更しました。「みなさんが愛用している道具や食材を、新しい調理場でも使えるよう確約しましょう!」 Jobsが言うところの新しい調理場が「Mac OS X」であり、その約束が「Carbon」なのです。新しい調理場に設置不可能ないくつかの古い道具は、結局捨てられる運命でしたが、「それなら、そちらも使ってみようか?」と思った調理人も多かったようです。Jobsの作戦は見事に成功したと言うわけです。では、Jobsの約束はどの程度実現されたのでしょうか? 現在では、AppleWorks 6.0程度のアプリケーションが開発できるレベルに到達しています。Mac OS 9環境では完全に実用的なレベルになりました。ただし、肝心の新しい調理場の完成が遅れ気味なのが気になります(笑)。

Carbon APIは、機能拡張フォルダに入っているCarbonLib(ライブラリ)により提供されています。プログラマーは、開発中のプロジェクトにCarbonLibをリンクすることでCarbon APIを利用できます。CodeWarrior IDEで、Carbonアプリケーションを作成するプロジェクト(Metrowerks C)を見てみましょう。リンクするライブラリの数を比較してみてください。Mac OS 9用アプリケーションでは、最新のOS機能を利用しようとすると、数多くのライブラリをリンクする必要があります。
 figs/koike/fig0001.gif
 figs/koike/fig0001.png

それと比較してCarbonアプリケーションの場合には、「MSL RuntimePPC.Lib」以外にリンクするのは「CarbonLib」だけです。
 figs/koike/fig0001.gif
 figs/koike/fig0001.png

これを見ると、Mac OSが15年の間に、いかにグチャグチャになっていたのかが良く分かります(笑)。Cabonは、そうした混沌の「リセット」でもあるわけです。

Appleは、ここ数年でToolbox APIを大量に増やしてきました。増強されたAPIを調べてみると、彼らがMac OS Xを視界に入れていたことは間違いありません。OSのバージョンが新しくなりAPIが増強されると、アプリケーションから利用できる便利な機能が増えます。このこと自体は悪いことではありません。しかし、バージョン変更に伴うAPIの変遷が激しいと「自分のアプリケーションは、どのOSバージョンまでサポートすべきなのか?」という「問題」をプログラマーに突きつけます。つまり、より最新の機能をアプリケーションに盛り込めば、古いOSがインストールされたままのMacはサポートから除外されることになります。

「古いOSを使っているユーザも考慮すべきか?」「古いOSを無視し最新機能を優先するのか?」例えば、いにしえの「Standard File Package」と、最新の「Navigation Service」の使い分けに苦慮された方も多いでしょう。こうした事態は、OSによる機能差を吸収したフレームワークを使えば、そこそこ解決できます。でも、そうした物を使わない(使えない)場合には、Gestalt()ルーチンでクライアント環境(OSバージョンやQuickTImeバージョン)を細かくチェックし、利用できる機能とできない機能を切り分ける必要があります。そして、もし利用できない機能があれば、それを(OSの機能を使わず)独自で実装する必要があります。当然、この作業はプログラマーの負荷を増やします。

嬉しいことに、CarbonLibを用いたアプリケーションは、この悩みをかなり軽減してくれます。CarbonLib v1.04をインストールしたMac OS 8.1では、Carbonアプリケーションを起動することができます。つまり、Carboアプリケーションを開発すれば、Mac OS 8.1からMac OS Xまでの幅広いクライアントに、最新機能を有したアプリケーションを提供できるわけです。まあ、将来的に「Mac OS XI」や「Mac OS XII」が出てくれば、元の木阿弥になることは目に見えていますが、「プログラマーしばし休息」と言ったところでしょうか(笑)。

次回は、「CarbonLib」と「Coorbon SDK」(Carbonアプリケーション開発キット)をお話しする予定です。
関連リンクオッティモ