タイトル【小池邦人のプログラミング日記】2000/10/23<Mac OS XでCodeWarrior 6.0を使う>カテゴリーCarbon/CF, 小池邦人のプログラミング日記
作成日2000/10/24 10:0:33作成者新居雅行
バージョンアップを予約しておいたMetrowerks CodeWarrior 6.0が、10月の中旬にやっと届きました。10月20日に行われた、WORLD PC EXPOとMOSAの両セッションでは、このバージョンを利用してCarbonアプリケーションの開発に関するデモを行いました。
 

Metrowerks CodeWarriorは、今回のバージョンから付属のIDE 4.1やConstructorなどの開発ツール、それからフレームワークのPowerPlant、MSL CやMSL SIOUXといったスタンダードライブラリなど、開発環境とそれに付随するライブラリがすべてCarbon化されました。
 

よって、Mac OS Xパブリックβ上では、Classic環境ではなくMac OS X Native環境で利用することができます。また、ライブラリやフレームワークがCarbon化されたおかげで、安心してCarbonアプリケーションを開発できるようになりました。特にPowerPlantのCarbon化は大きな意義があります。これのおかげで、サードパーティーやシェアウエア作家の数多くのClassicアプリケーションが、続々とCarbon化されるのではないでしょうか。Project StationeryにもCarbon用が追加され、CodeWarrior Pro5ではCarbon SDKから持ってきたり自作していたCarbonLib用のPrecompiled Headerもちゃんと用意されています。
 
 

ただし、CodeWarrior自体はCarbonLib 1.04での動作環境を推奨しており、付属のUnversal Interfacesのバージョンも3.3.2となっています。
 

CarbonLib 1.1の環境を利用したい人は、StubLibraryをCarbonLib 1.1に、Unversal Interfacesを3.4に交換し、Precompiled Headerも作り直して使う必要がありますので注意してください。

今回のバージョンから、日本語版をダイレクトにインストールできるようになりました。英語版を使いたいユーザは、後から「English Tools Installer」で英語版のモジュールに差し替えるという方法を取ります。以前とは逆となりましたが「日本語版」であるという点を考えれば、こちらの方が正常なわけです(笑)。フォルダのアイコンもMac OS Xを意識して逆向きになっており、Mac OS 9上で使うのにはかなり違和感があります(笑)。ちなみに英語版のパブリックβ版上で起動しても、日本語の文字化けはほとんど起こりません。というわけで、最近発表された日本語版パブリックβでもまったく問題ないだろうと推測されます。いくつかの新機能も追加されたようですが、使い勝手はPro5からほとんど変わっていません。私としては、ソースコードの検索がローカルとグローバルに分離された点が納得いかないのですが、そっちの方が良いという意見が多かったのでしょう(涙)。また、Mac OS 9上で、コマンドキーを押しながらソースコード内のAPI名をダブルクリックすると「QuickView」等を起動して、その内容を検索できた機能が動かなくなりました。環境設定には残っているので、これはバグだと思ったら、どうもオプションキーに変更になったようです。ところが何故だか私の環境では起動しません?どうしてなんでしょうか?

ただ、私は使わないので気づかなかったのですが、Mac OS X上ではディバグ関係で問題が出るそうです。まあ、CodeWarrior 6.0自体の開発がMac OS X DP4を対象に行われていたのだろうと想像されますので、こうした不具合は少なからずあるでしょう。パブリックβ版に会わせて早急に改善してほしいものです。続いて、OSの違いでコンパイルやリンクのスピードに変化があるかどうか簡単にチェックしてみました。8万行ぐらいのソースコードをオプティマイズ・レベル4でコンパイル&リンクしてみたところ、Mac OS 9.04上ではPro 5もv6.0も23秒前後で終了しました。同じソースコードをMac OS Xパブリックβ上でコンパイル&リンクすると、26秒程度かかりました。時計的にはちょっと遅いのですが、OS自体がβ版であることを考えれば、ほとんど変化無しといったところではないでしょうか。

というわけで、一週間ぐらい継続してMac OS X上でCarbonアプリの開発に利用してみました。
 

自作のアプリがクラッシュしてもまったくOS側が影響を受けないのは最大のメリットです。また、メモリープロテクトのおかげで、イレギュラルなメモリアクセスをすると、すぐにアプリケーションが落ちます。Mac OS 9上ではバグがあっても「偶然」そのまま動き続けているといった状況が多々発生していましたが、今回はそうしたことは起こり難くなりました。また、別アプリケーションのメモリーリークなどのバグの影響が、開発中のアプリケーションに及ぶということも無くなりますから、バグを特定することも用意になります。他の環境に左右されずにメモリーアクセスが原因であるバグを見つけることができるわけです。こうした点から、Mac OS X上での開発はアプリケーションの「質」を向上させるのに大いに貢献するだろうと思われます。例えば、Mac OS XではCGrafPtr、WindowPtr、DialogPtrをきっちり区別して処理しなければなりません。Carbonアプリケーションであっても、Mac OS 9上で開発している状況では、今まで通りアバウトな区別であっても問題なく動いてしまいます。しかし、Mac OS X上ではこの区別を間違えると必ず何らかの問題が現れます。逆にMac OS X上で問題がなければ、Mac OS 9上で問題がでることはほとんど無いと考えられますので、そう言う意味でも、CarboアプリケーションはMac OS X上で開発した方が高品質になるでしょう。

まだまだ制限付きですが、Mac OS X Nativeのソフト開発環境が整備されてきたわけです。後は、旧石器時代のプログラマーとしては、誰かがResEditやResorcererをCarbon化してくれると嬉しいのですが(笑)。それはさておき、Mac OS Xパブリックβ日本語版は誰でも入手できますので、まずはMetrowerks CodeWarrior 6.0とMac OS Xパブリックβという環境でアプリケーション開発を体験してみてはいかがでしょうか?Carbon化が思ったより楽だということを実感できるかもしれません。
[小池邦人/オッティモ]
関連リンクオッティモ