Mac OS X 10.2に付属していた開発ツールは「Developer Tools」と呼ばれていましたが、Mac OS X 10.3(Panther)からは「Xcode Tools」と名称変更されました。これは、今まで付属していたProject BuilderがXcodeと改名されたためでしょう。ただし、もうひとつメインツールであるInterface Builderの方は旧名のままであり(改名するほど大きく改良されていないため?)、Xcode ToolsをインストールするとDeveloperフォルダ内のApplicationsフォルダに保存される点も以前とまったく同じです。Mac OS X 10.2に付属していたInterface Builderのバージョンは2.3.2でしたが、Mac OS X 10.3に付属している最新バージョンは2.4となっています。
最新バージョンで追加された機能一覧は、Helpメニューから「Release Notes」を選択することで確認することができます。残念ながら説明の内容は英語のままであり、アプリケーション本体のメニューやダイアログについても日本語化はされていません。改良点の一覧項目は「General」「Cocoa Specific」「Carbon Specific」の3つに分類されており、Cocoa用として拡張された機能内容は「Cocoa Specific」に、Carbon用として拡張された機能内容は「Carbon Specific」に記載されています。今回は、筆者が常時利用しているCarbon用についてのみ新機能をピックアップしてみたいと思います。Cocoa用に拡張された機能も沢山あるのですが、そちらはRelease Notesを参照してみてください。
ユーザインターフェースパレットから新しく追加可能になったコントロール(HIView)オブジェクトは 、HISearchField、 HIImageView、 HITextView、HIComboBox、HIView、Help Buttonの6種類です。作成するのためにはソースコードからHIView APIを呼ばなければいけなかったHIImageView、HITextView、HIComboBoxなども、ドラッグ&ドロップでウィンドウに配置してnibファイルとして保存できるようになりました。また、これらに加えてHIImageViewと HITextViewを埋め込んで(Embedして)使えるHIScrollViewも用意されました。ウィンドウにHIScrollViewを登録するのためには、先んじてHIImageViewかHITextViewを配置しておき、それを選択した後に、Layoutメニューの「Embed in」から「Scroll View」を選びます。すぐ下には「Split View」という項目もあるのですが、こちらはまだ利用できません。同様に、Cocoa編集モードには存在しているWeb ViewについてもCarbon編集モードには存在しません。
インスペクターウィンドウから設定できるコントロールのオプションやアトリビュートも種類が増えています。例えば、Edit Textコントロールにはアトリビュートとして「Single line」が追加され、不用意なリターンキーの入力でカラム内のテキスト入力に弊害が出るのを避けることができます。Data Browserコントロールでは、カラムの種類としてスライダーが新たに追加され、各カラムにおいてはType-SelectオプションのON/OFFも可能になりました。また、ほとんどのコントロールはサイズとして「Mini」が利用できるようになっています(今まではNormalとSmallの2種類のみ)。狭い範囲に数多くのコントロールを配置したい場合には便利でしょう。加えてコントロールに表示される文字に対してフォントスタイルが設定できるようになりました。
今回のバージョンでの一番大きな改良点は、インスペクターウィンドウに「Layout」というページが追加され、コントロールの配置位置をウィンドウ(親HIView)の領域に対して相対的に決定できるようになったことです。つまり、レイアウトの仕方によってはボタン位置もダイナミックに動かすことができるわけです。例えば、ウィンドウをリサイズしても必ず一番下に「キャンセル」や「OK」ボタンを配置させたいケースなどに対応できます。この機能はHIView APIにも追加されており、ソースコードから設定することも可能です。Cocoa Frameworkでは最初から実装されていた機能ですが、Carbonでは不可だっただけに、これからのユーザインターフェース設計において非常に有用な機能となるでしょう。ただし、Mac OS X 10.3以降でないと設定したレイアウトは有効になりませんので、アプリケーションのターゲット環境にはくれぐれも注意してください。
今回のバージョンでは、以前のバージョンで遭遇していた「編集時にTabやData Browserコントロールの表示がおかしくなる」「特定のコントロールの編集スピードが極端に遅くなる」といった不具合は改善されているようです。また、特定のオブジェクトをカット&ペーストで別ウィンドウに張り込むと、そのデータ内容が破壊されるといったバグもフィックスされていると思われます。具体的な例としては、オブジェクトのペースト後にTabに埋め込んでおいた別コントロールが消えるとか、Data Browserに設定しておいたカラム情報が消えてしまうといった不都合が旧バージョンでは発生していました。そういう意味では随分と安定したツールへと成長を遂げたように思われます。
しかし、実際の開発作業で利用してみると、旧バージョンでは遭遇しなかった新たなバグ(だと思う)に悩まされることになりました。まず、旧バージョンで作成したTabコントロールを配置したnibファイルをオープンし、何らかの編集をした後に保存したとします。すると、その操作をする度にTabに埋め込んだすべてのコントロールが4ピクセルずつ下へ移動してしまいます。この現象に初めて気づいた時には既に手遅れ...大量のコントロールがTabの中から半分ぐらい消えてしまっていました(笑)。CompositingアトリビュートをONにしたウィンドウに配置されたTabコントロールでは問題ないようですので、どうも旧nibファイルのフォーマットを解釈する時点で何か問題が発生しているようです。
それから、Interface Builderのメモリ消費の状況をMac OS X 10.3の「アクティビティモニタ」で観察していると、編集のためTabを切り替えただけで2M Byte、別アプリケーションからウィンドウを切り替えただけで1MByte、Tab内に埋め込んだコントロールをセレクトしたでけで1MByteと、どんどんInterface BuilderとWindowServerのペアが実メモリを消費していきます。そして最後にはWindowServerがマウスクリックなどのイベントにまったく反応しなくなり、ウィンドウの切り替え、Dockの表示、メニュー選択などを含めシステム全体が完全にストールしてしまいます。同業者として、「こいついったい何をしているんだ?」と首をひねりたくなる現象です。このような状態になるとInterface Builder自体の強制終了も困難になりお手上げ状態となってしまいます。
現象が起きるのは、Carbonモードで旧データを編集している時だけなのかもしれません。Mac OS 9時代のリソース編集するツールの場合と異なり、nibファイルを編集するためのツールはInterface Builderが唯一です。ですから、このツールの出来が悪いとなるとMacintosh用ソフトの開発作業に深刻な弊害が出ます。何と言ってもXcodeとInterface Builderは(Xfaceになるか?)Apple社純正開発ツールの両輪なのですから、ToolBarやSegmentコントロールなど、まだサポートされていないオブジェクトへの早期対応を含め、完成度の高いツールとして世に送り出して欲しいと思います。
copyright 2003 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp