タイトルWWDC 2001で配布が開始されたCodeWarrior 7 Early Accessを使ってみるカテゴリーCarbon/CF, Cocoa, 開発ツール
作成日2001/5/25 0:36:1作成者新居雅行
WWDC 2001の参加者には開発ツールのCodeWarrior 7の開発バージョンが配布された。実費による配布も始まっている。CodeWarrior Pro6のリリースは、Mac OS X Public Beta発売前だっただけに、今回のVer.7が真の意味でのMac OS X対応版だと言えるだろう。設定画面を交えて、どのように変更されているのかを紹介した。

まずはIDEがVer.4.1系列からVer.4.2になっているが、ソフトウエアの操作自体は全く同じように利用できる。プロジェクトのテンプレートを見ると、Cocoaアプリケーションや、Mach-Oを利用するタイプのものが増えているのが分かる。Toolboxを使うタイプのアプリケーションでは、すでにMulti-Targetは存在せず、PowerPCだけのプロジェクトテンプレートしか用意されていない。

◇プロジェクトの種類を選択するダイアログボックス
 

◇MacintoshのCアプリケーションのステーショナリ
 

Toolboxを使うMach-Oタイプのプロジェクトを作ってみた。もちろん、これはCarbonアプリケーションとなる。プロジェクトウインドウは次の図だ。ライブラリにはMW_Runtime.a、crt1.oが組み込まれている。そして、Cのソースや、従来型のリソースファイルが組み込まれている。なお、このリソースを編集するには、Classic環境でResEditを動かすのが代表的な手段となっている。

◇Toolboxを使うMach-Oタイプのプロジェクト
 

ライブラリにあるMW_Runtime.aは、CodeWarriorのフォルダ内に実体があり、ソースも用意されている。newの扱いや例外の処理などの処理が組み込まれたランタイム時に必要なライブラリとなっている。ソースもあるので、もちろん修正して使うこともできる。一方、crt1.oというのは、/usr/lib、つまりFinderでは通常は見えない箇所にあるライブラリで、Mach-Oのバイナリをアプリケーションとして起動したり、あるいはコマンドラインの処理をするものとなっている。

プロジェクトの設定パネルを見ていこう。まず、Target Settingだが、LinkerにApple Mach-O PowerPCが選択できるようになっている。Mach-Oのリンカが使えるということだ。

◇TargetのTarget Setting
 

生成するアプリケーション名やファイルタイプなどの設定は、PPC Mach-O Targetのパネルで行う。ここでは、Output Resources to Separate Flatted Fileという設定があり、リソースをフラットなファイル、つまりデータフォークにデータとして入れるということができるようになっている。実際、パッケージに作られたファイルを見ると、データフォークだけのファイルになっている。プロジェクトにあるリソースデータをこうしてフラットなファイルに展開される設定ができるようになっている。

◇TargetのPPC Mach-O Target
 

パッケージ化についての設定は、Mac OS Packagerで行うが、この機能はCodeWarrior Pro6にもあったもので、基本的には大きな変化はないようだ。PPC Mach-O Linkerもあるが、こちらは細かな設定になっている。通常はそのままの設定で使い始めるだろうが、必要に応じてオプションなどを変更することになるだろう。

◇LinkerのMac OS Packager
 

続いて、Cocoaアプリケーションのプロジェクトを見てみよう。CocoaアプリケーションとしてはObjective-Cで製作されるものがサポートされるようだ。Cocoa-Javaについてはテンプレートなどが用意されていないため、簡単には行かないだろう。また、Interface Builderのドキュメントであるnibファイルを使う必要があるが、そのnibファイルがどういった形で出てくるかもポイントになる。
Cocoaアプリケーションの選択肢が新規にプロジェクトを作成するときに出てはくるが、製品に添付されているテンプレートは、Hellow Worldという文字の書かれたウインドウを表示するだけのものである。このテンプレートを作成した状態では、次のようになっている。ソースファイルとライブラリしか見えない。

◇Cocoaアプリケーションのプロジェクト
 

main.mは、Project Builderのテンプレートでもおなじみの、NSApplicationのインスタンスを生成するだけの短いものだ。拡張子は.mであり、Objective-Cで記述したものである。InfoPlist.stringsは、プロパティリスト形式のデータファイルであり、アプリケーション名などいくつかの定義がリスト形式で書かれている。libobjc.A.dylibは解説が見あたらなかったのだが、おそらくはメモリ管理などの基本的な機能を提供するライブラリだろう。crt1.oはCarbonアプリと同様に組み込まれている。起動やパラメータ設定の処理をするライブラリだ。

◇LinkerのPPC Mach-O Linker
 

ちなみに、プロジェクトの設定で、C/C++ LanguageのところにEnable Objective-Cの設定があり、CのコンパイラがObjective-Cにも対応したことが分かる。このパネルでは、この設定や、Prefix Fileの設定がポイントになるだろう(以下の図はCarbonアプリケーションのもの)。

◇Language SettingsのC/C++ Lnaguage
 

ここでコンパイルしてみると、きちんとウインドウが出てくる。特にウインドウを生成するプログラムは作っていない。そのからくりは、プロジェクトのテンプレートにもともとnibファイルが存在するというところにある。このプロジェクトは、ビルドをしたときにパッケージのフォルダを作るというよりも、最初からパッケージのフォルダが作られているのである。そして、Contents/Resources/Englith.lprjにMainMenu.nibというnibファイルがあり、そこに起動したときに表示されるウインドウが定義されている。このnibファイルをロードするという設定は、Info.plistに定義されているようだが、こうした定義はCodeWarriorの中ではロードするnibファイルを設定する箇所がない。また、nibファイルがプロジェクトファイルに最初から入っていないのは、まだ、nibファイルを統合的に扱う機能は組み込まれていないということだろう。つまり、プロジェクトにnibファイルを登録することで、ビルド時に生成したパッケージの適切な箇所にインストールするということまでが簡単にはできないのだろう。正式版までにそうした機能まで入っていれば、Cocoaアプリケーション作成もよりやりやすくなると考えられる。現状では、パッケージの中身を開いて、nibファイルを直接ダブルクリックして編集をするという方法になるだろう。
いずれにしても、Cocoaアプリケーションではnibファイルは避けて通れないが、これについてはAppleが提供しているInterface Builderを使って作成や修正を行うというのが基本となるようだ。これは、CodeWarriorだけでなくJBuilderでも同様な方針になっているようである。nibファイルの編集エディタまでを独自のものを用意するのは、相当先になるか、あるいは手をつけていないかということだと考えられる。

Pure Javaの開発環境としての機能は、以前のバージョンからは基本的には大きくは変わっていない。もっとも、Java2対応しているという大きな違いはあるが、RADツールでは、AWTあるいはSwingのコンポーネントをウインドウに配置する形式であり、ツールの種類はJBuilderに比べると少ないものになっている。ただし、Mac OS X向けのバンドルされたアプリケーションの生成はできるようになっている。
今回紹介したCodeWarrior 7は、まだ開発リリースであり、10月の使用期限までに正式版がリリースされるとしている。従って、正式リリースまでに仕様が変更されることもあるだろう。また、今回の記事では紹介できなかったが、ダイナミックライブラリの生成やフレームワーク対応、さらにはライブラリを含めたデバッグが可能な点など、ほかにも多くの進化した点がある。無償で配布されるProjet Builderに対して、CodeWarriorは有償だし、Pro6の価格は一般的なアプリケーションからすると高めでもある。そうした対価に見合った機能が提供できるのかというのが、Mac OS X向け開発ツールのこれまでにはなかった課題になっているとも言えるだろう。
関連リンクMetrowerks