Cocoaでいこう! Macらしく 第2回
Yoshiki(DreamField)
この記事は、MOSAが発行するデベロッパ向けのデジタルマガジンMOSADeN 第61号(2003年4月8日発行)に掲載された記事です。2〜3ヶ月遅れで、ここに掲載して行きます。

前回はDocument-based Applicationのプロジェクトを作り、とりあえずそのままビルドして実行してみました。この時、用意された雛形のソースを眺めてみた方はいますか?眺めてみた好奇心旺盛な方は、驚いたんじゃないかと思います。何と、コメントや空行を除きますと、全部合わせて30行もありません。CodeWarriorでPowerPlantを使っていた時は、何百行もある雛形を読めば、おおよその構造が分かりました。フレームワークのソースも公開されていましたから、そちらを見ることも出来ました。ところが、Cocoaでは雛形を見ても、何をやっているのかさっぱり分かりません。初めてこれを見た時、私は途方に暮れてしまいました。

ウィンドウをデザインしよう(前編)

雛形のままのTinyViewのウィンドウの中身は、「Youre document contents here」という文字列が表示されるだけです(fig.01)。

ProjectBuilderのアイコン
[fig.01] ウィンドウ表示が雛形のままの TinyView

作ろうとしているのは画像ビューアですから、ここにイメージを表示出来るようにしましょう。まずは前回作成したプロジェクトを開いて下さい。TinyViewという名前でプロジェクトを作成しましたから、その名前のフォルダーが出来ているはずです。その中にTinyView.pbprojという名前のファイルがありますから、これをダブルクリックして開いて下さい(fig.02)。

ProjectBuilderのアイコン
[fig.02] プロジェクトを開く時は TinyView.pbproj というファイルを開く

DOCKにProject Builderを保存している方は、直接これを起動し、「ファイル」メニューの「最近使ったプロジェクト」からTinyView.pbprojを選んだ方が楽かもしれません(fig.03)。

ProjectBuilderのアイコン
[fig.03] ファイルメニューの最近使ったプロジェクトには TinyView が自動的に登録されている

開いたら、プロジェクトウィンドウを選んで下さい。「プロジェクト」メニューから、「プロジェクトを表示」を選んだ時に前面に来るウィンドウがプロジェクトウィンドウです(fig.04)。

ProjectBuilderのアイコン
[fig.04] プロジェクトウィンドウ

これがプロジェクトの中心となるウィンドウで、これを閉じるとプロジェクト全体を閉じることになります(ただし、環境設定の「全般」で、「プロジェクトウィンドウを閉じる時に全体を閉じる」のチェックが入っていないと閉じません。デフォルトではこれは入っています。)。CodeWarriorで言う所のProject Windowといっしょですね。

なお、本連載での説明は、環境設定の「タスクテンプレート」の「基本設定」で、「いくつかのウィンドウ」を選んでいることが前程になっています(fig.05)。インストールして最初に起動した時に表示された設定を、何も変更しなければこうなっていますが、他を選んでいる場合は、表示が説明と異なりますのでご注意下さい。

ProjectBuilderのアイコン
[fig.05] タスクテンプレートの基本設定

それでは、さっそくウィンドウのデザインを変更しましょう。プロジェクトウィンドウの「ファイル」タブを選んで一覧を出して下さい。一覧の中に「Resources」グループがありますから、それを開いて下さい。その中にMyDocument.nibがありますので、これをダブルクリックしてInterface Builderを起動します(fig.06)。

ProjectBuilderのアイコン
[fig.06] MyDocument.nibを開く手順

Interface BuilderはPowerPlantで言う所のConstructorにあたります。ただし、これで扱うnibファイルはMac OSのリソースとは一味違います。インスタンスオブジェクトを固めておいたり、オブジェクト間の関係を定義できたり、よりオブジェクト指向プログラム寄りの強力な構造を持っています。今回はそこまでの説明は出て来ませんが、今後徐々にその真価が分かって来ると思います。

Interface Builderが起動し、MyDocument.nibが開いたら、ウィンドウが3枚表示されたと思います(fig.07)。

ProjectBuilderのアイコン
[fig.07] Interface Builder で MyDocument.nib を開くと3枚のウィンドウが表示される

この中でタイトルバーにMyDocument.nibと書かれているのが、Nibファイルウィンドウと言い、開いたNibファイルそのものを表しています(fig.08)。

ProjectBuilderのアイコン
[fig.08] Nibファイルウィンドウ

このNibファイルウィンドウの中に「Window」というアイコンがありますが、これがTinyViewを起動していた時に開いていたウィンドウです。これをダブルクリックしますと、デザインウィンドウが開き、デザインの変更が出来ます(fig.09)。

ProjectBuilderのアイコン
[fig.09] デザインウィンドウ

もっとも雛形を作った直後は、このウィンドウは最初から表示されていますので、最前面に来るだけです。そして、パーツが色々乗っているのが、パレットウィンドウです(fig.10)。

ProjectBuilderのアイコン
[fig.10] パレットウィンドウ

パレットウィンドウのパーツをデザインウィンドウにドラッグすることにより、ウィンドウに色々なコントロールを付加することが出来ます。ただし、パーツはウィンドウ上に置くものだけでは無いので、ウィンドウ上にドラッグ出来ないものもあります。

ここで一つやっておいて欲しいことがあります。Interface Builderの「Preferences...」を開いて下さい。「General」タブを選ぶと一番下に、「Nib File Compatibility」という項目があると思います。これを「10.2 and later format」にして下さい(fig.11)(最初からなっているかもしれませんが、その場合はそのままにしておいてください。)。実は、10.2以降とその前ではnibファイルの構造が変わりました。10.2よりも前のMac OS Xでも動かしたかったら、「Pre-10.2 format」にしておかないといけませんが、そうすると10.2以降にサポートされたパーツが使えなくなります。今回はどちらでも良いのですが、今後作る新しいプログラムは「Mac OS X 10.2以降」を条件とすることが多いと思いますので、とりあえずはこちらにしておいてください(実は次の説明に必要です。)。

ProjectBuilderのアイコン
[fig.11] Nib File Compatibilityを10.2 and later formatにする

上記変更を行ったら、「File」メニューから「Save」を選んで、一度nibファイルを保存してみてください。すると「Save Document」というパネルが現れたと思います(fig.12)。

ProjectBuilderのアイコン
[fig.12] nib ファイルのフォーマットが Preference と違う時に表示されるパネル

パネルの趣旨は、「ドキュメント(ここではこのnibファイルのこと)のフォーマットがPreferenceで選択されているものと一致しないが、どちらで保存するのか」、というものです。実は、Project Builderで雛形を作った時点では、用意されるnibファイルは「Pre-10.2 format」になっています。ところが、Interface BuilderのPreferencesで「10.2 and later format」と指定したために、どちらで保存するのか聞いてきたわけです。今回は「10.2 and later format」で保存して欲しいので、「Save with Default Format」と書いてある方のボタンを押してください。なお、どちらのフォーマットを選んだにせよ、一度保存すると、そのnibファイルに関しては、このパネルは出て来なくなります。

ちょっと横道にそれました。さて、やっとウィンドウのデザインを変更する準備が整ったところではありますが、今回は説明が長くなってしまいましたので、この続きは次回とします。まとめ読みでない方は、一度ここでInterface BuilderとProject Builderを終了させて、後半をお待ち下さい。

前頁目次次頁