タイトル【小池邦人のプログラミング日記】2001/2/16<NibベースのCarbonアプリを作る その1>カテゴリーProjectBuilder/Interface Builder, Carbon/CF, 小池邦人のプログラミング日記
作成日2001/2/17 10:13:48作成者新居雅行
今回から、数回に分けて「NibベースCarbonアプリケーション」の開発にチャレンジしてみます。本当ならば、Mac OS Xの新β版が手元に届いてから試してみたかったのですが、そうした噂はあれども姿は見えません(涙)。このままず〜と待っていると製品発売日(2001年3月24日)が来てしまいそうなので、観念して始めることにしました。

ところで、気になるCarbonLibの状況はどうなっているのでしょうか? まだ一般には公開されていないようですが、数日前にADCのメンバーサイトには「CarbonLib 1.2.5 SDK」のGM版が登録されました。

 

リリースノートを読んでみると、今回はCarbonLib 1.2のバグフィックスバージョンのようで、新たな機能は何も追加されていません。CarbonLib 1.2でも未実装のままだったCarbon Event関連の機能についても進展は無いようです。これらに関しては、CarbonLib 1.3で実現されることを祈るしかありません。とりあえず、今回のバージョンが早急に一般公開され、CarbonLib 1.2のバグに苦しんでいたユーザやデベロッパーの問題解決の糸口になってくれればと思います。

さて、「NibベースCarbonアプリケーション」の「Nibベース」とは何を指しているのでしょうか? Nibとは「Next Interface Builder」の3つの単語の頭文字を列べたものです。Mac OS X Public Beta版のDeveloper Tools CD-ROMに含まれているInterface Builderで作成、保存したファイルを「Nibファイル」と呼びます。また、そのファイルの拡張子も「.nib」となります。Interface Builderで作成したウィンドウやメニューやコントロールといたユーザインターフェース・オブジェクトの情報は、すべてこの形式のファイルに保存さます。これらはアプリケーション自身に付加されているわけではありませんが、それをアプリケーションから呼び出す利用形態は、旧Mac OSのResourceと同じ仕組みです。ただし、旧Mac OSのResourceファイルとは、まったく異なるファイル形式であることは言うまでもありません。このNibファイル、Next時代の名残がそのままファイルの拡張子に残っているわけですが、Apple社はMib(Macintosh Interface Builder)という名称に変更する気はなさそうです(笑)。

最近、NibベースCarbonアプリケーションを開発する時の参考書にもってこいの技術資料が、以下のApple Carbon Documentサイトサイトに登録されました。90ページ程度のPDFドキュメントです。

Moon Travel Tutorial:Creating a Carbon Application
 http://developer.apple.com/techpubs/carbon/carbon.html

ダウンロード後のファイル名は「MoonTravel.pdf」となります。日本語に訳すと「月旅行のための手引き書」ですか...(笑)。「おおっ、なんだかすごいぞ!」と一瞬驚くのですが、読んでみると、月まで飛行機や車や徒歩で行くと何日掛かるを換算する単純なアプリ「Moon Travel Tutorial」を開発する過程の説明でした。つまり、Mac OS X上でProject BuilderとInterface Builderを連携させて、Mach-O&NibベースのCarbonアプリケーションを開発するためのチュートリアルなのです。このチュートリアル、Apple社が出すドキュメントの中では、割とできが良い方だと思いますので、Mac OS XのNative開発環境を堪能してみたい方は一読されることをお薦めします。ただし当然ですが、このチュートリアルに従って開発したCarbonアプリケーションは、Mac OS 9環境では起動できませんので注意してください。

今回は、このチュートリアルに従い、Carbonアプリケーションを開発してみることにします。チュートリアルの最初には、本文中で以下の作業内容がカバーされていることが明記されています。

  • Project Builderで新規プロジェクトを作成する
  • Interface Builderを使いウィンドウとメニューのリソースを作成する
  • Carbon Event Handlerルーチンとそのインストールルーチンを記述する
  • Interface Builderを使いインターフェースにPICT画像を追加する
  • Radio Buttonコントロールグループを作成し現在値を得る
  • ウィンドウに固定テキスト(編集不可)を表示する
  • ローカライズ文字列ファイルから表示用の文字列を得る
  • アバウトボックスを作りアプリ名とバージョン番号を表示する
  • アプリケーションウィンドウのDockへの出し入れを行う
  • アプリケーションに関する情報をアプリケーションバンドルに書き込む
  • アプリケーションにヘルプ用ドキュメントを追加する
  • アプリケーションのHelpメニューからHelp Viwerを起動する

こうして見てみると、さすがに大規模なアプリケーションを開発するためには役不足なのですが、ちょっとした小物を開発するのにはもってこいのチュートリアルです。OOP(Object-oriented programming)環境が苦手で、Cocoa用のInterface Builderの手法を取っつき難いなぁと思ってる人にとっては、手頃な開発環境になるかもしれません。

とりあえずは、どんな感じで開発を始めるのか?その導入部分を見てみることにします。アプリケーションのNibファイルはInterface Builderだけで作成できますが、アプリ開発のためには、先んじてProject Builderでプロジェクトを作成しておく必要があります。Project Builderを起動すると、最初にプロジェクトの種類を選択するダイアログが表示されます。その中から「Carbon Application (Nib Based)」を選びます。

 

すると、Project BuilderがNibベースCarbonアプリケーションを開発するためのテンプレート(雛形)を準備してくれます。「Groups & Files」一覧に表示されているResourcesフォルダの中を見ると、「main.nib」というファイルがすでに用意されていることが分かります。

 

このファイルをダブルクリックすると、今度はInterface Builderが起動し、main.nibファイルの中身を編集することができます。

 

NibベースCarbonアプリケーションでは、このようにProject BuilderとInterface Builderの連携プレーで開発を進めることになります。

ところで、「Moon Travel Tutorial:Creating a Carbon Application」ドキュメントに話しを戻しますが、私は、このドキュメントに準拠した「Moon Travel Tutorial」というサンプルがどこかに存在していると思っていました。ところが、Apple DeveloperサイトやDeveloper Tools CD-ROMの中を色々と探してみましたが、どうしても見つかりませんでした(涙)。どなたか有り場所をご存じの方はいらっしゃらないでしょうか? もし無いとすれば、ドキュメントだけ提供してサンプルプロジェクトを準備しないとは、さすがAppleであります(笑)。そこで、代用サンプルを探したところ、Mac OS XのDeveloper/Exampls/InterfaceBuilderの中に「IBCarbonExample」というサンプルプロジェクトを発見しました。

 

プロジェクトを起動してみると、Mac OS X Public Beta版でもちゃんとコンパイル&リンクができ、起動も問題ありません。次回はチュートリアルドキュメントを参考にしながら、このサンプルのソースやリソースの中身を調べてみることにします。
[小池邦人/オッティモ]
関連リンクオッティモ