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

前回はウィンドウのデザインを変更してイメージを表示する場所を作りました。次は何をすべきでしょうか。TinyView.pbprjを開き、今まで同様、「ビルドと実行」ボタンを押して、TinyViewを起動してみて下さい。起動しましたら、「File」メニューから「Open...」を選んで、Open Panelを開いてみて下さい。ファイルの一覧が表示されたと思います。その中に開けるファイルはあるでしょうか(fig.01)。

ProjectBuilderのアイコン
[fig.01] 選択出来るファイルが一つも無いOpen Panel

そう。今のままでは、ファイルは一つも選択出来ません。それはそうですよね。どんなファイルが開けるのか、誰も教えていないのですから。

ファイルを開けるようにしよう

今回はJPEGファイルを開けるようにします。と言っても、画像を表示出来るようにするという意味ではありません。Open Panelからファイルを選べるようにして、データを読み込めるようにしようと言うわけです。

さっそく始めましょう。既にTinyView.pbprjは開いていますね。先程確認のために起動したTinyViewが起動したままでしたら、まずはそれを終了させて下さい。次に、プロジェクトウィンドウを選択して下さい。そして、「ターゲット」タブを選んで下さい(fig.02)。

ProjectBuilderのアイコン
[fig.02] 「ターゲット」タブ

左側の一覧がターゲットに関するものに切り替わります。この一覧から、「ターゲット」の中の「TinyView」を選んで下さい(fig.03)。

ProjectBuilderのアイコン
[fig.03] 「ターゲット」の中の「TinyView」

すると、右側が切り替わります。ここでは、コンパイルのオプションを設定したり、Info.plistの中身を編集出来ます。Info.plistというのは、プログラムが参照する情報が入っているファイルの一つです。Mac OSで言う所のリソースの一部とでも思ってください。表示されている色々な項目に興味はあるでしょうが、とりあえず今は、「Info.plistのエントリー」の中の「シンプルビュー」の中の「書類のタイプ」を選んで下さい(fig.04)。

ProjectBuilderのアイコン
[fig.04] 書類のタイプ

拡張子等を設定出来る画面が現れたと思います。ここで、TinyViewが開けるファイルの種類を設定するわけです。Mac OSで言う所の'FREF'や'BNDL'リソースにあたるでしょうか。

では、JPEGを開けるように値を設定しましょう。ここでの操作は、上の表から一行選ぶと、その行の各項目の値が下に表示され、編集出来るというものです。では、入力していきましょう。「名前」の初期値が「DocumentType」になっていますので、これを「JPEG」にします。すぐ下の「拡張子」が"????"になっていますので、これを「jpg JPG jpeg JPEG」とします。ここで大文字と小文字の二つを入れるのは、Cocoaでは内部的には大文字と小文字を見ているからです。従いまして、Jpgのように、大文字と小文字が混在している拡張子を持つファイルがあったら、それも指定しないと開けません。でも、こんなことやっていたらきりがないですから、とりあえずは全部小文字と全部大文字があれば良いと思います。続いて、「OSタイプ」を指定します。このOSタイプと言うのは、Mac OSのFile Typeのことです。ここは「JPEG JFIF」にします。「JFIF」は無くても良いかもしれませんが、昔の画像ファイルの中にはこれになっているものもありますので、一応指定しておきます。「アイコン」はとりあえず今回は良いでしょう。「書類のクラス」は、「MyDocument」のままにしておきます。最後に、今回作るのは画像ビューワですから、画像の編集は出来ません。そこで、「役割」を「Editor」から「Viewer」に変更します(fig.05)。

ProjectBuilderのアイコン
[fig.05] JPEGを開けるようにするための書類のタイプの設定内容

指定は以上ですが、もしあなたが「December 2002」よりも前の「Developer Tools」を使っている時は、ここで「変更」ボタンを押さないと実際には反映されませんので、ご注意下さい(fig.06)。

ProjectBuilderのアイコン
[fig.06] December 2002よりも前のDeveloper Toolsの「変更」ボタン

これは良くやる失敗でしたが、「December 2002」で改善されました。ただし、「December 2002」には一つ問題がありまして、テキストの入力項目を変更した後、他のテキストの入力項目を選んでターゲットを外さないと、入力した内容が反映されずに、元に戻ってしまいます。もう一度、「OSタイプ」の内容を見て下さい。ひょっとしたら「役割」を「Viewer」に切り替えた時に、「"????"に戻っているかもしれません。その場合は入れ直して、他の項目を選んで確定させて下さい。

さて、ここまで出来たら、左上のアイコンの中から「ビルドと実行」ボタンをクリックして、ビルドして実行させてみましょう。前回と違って、TinyViewの起動と同時に、空のウィンドウが開かなくなっていると思います。これは、書類のタイプで「役割」を「Editor」から「Viewer」に変更したからです。おそらくは、編集も出来ないのに空のウィンドウを開いても意味が無いので、こうなっているのだと思います。では、「ファイル」メニューから「Open...」を選んでOpen Panelを開いてみましょう。前回と違って、JPEGファイルが選択出来るようになっているはずです(fig.07)。

ProjectBuilderのアイコン
[fig.07] JPEGを選択できるようになったOpen Panel

一つ選んで開いてみて下さい。ウィンドウが表示されました。まだ、表示する部分を作っていませんから、ウィンドウの中身はいっしょです。ですが良く見ると、タイトルバーにアイコンとファイル名が入っていますし、ナビゲーションサービスもちゃんと働きます(fig.08)。つまり、データを読み込んでウィンドウを開く所までは、これで出来ているのです。

ProjectBuilderのアイコン
[fig.08] TinyViewでJPEGファイルを開いたところ

ところで、このようにならず、前回と結果がまったく同じになってしまった場合は、次のことが考えられます。

  1. 以前のTinyViewが起動しっぱなしになっていて、新しいのが起動していない。
  2. ターゲットの内容を変更したことを、ビルドする時にProject Builderに気付いてもらえなかった。
  3. ターゲットの内容が適切に変更されていない。

1.は良くやるミスで、この場合、エラーも何も表示されません。一度TinyViewを終了して、再度起動し直してみてください。2.は、どんな時に起こるのか特定出来ていないのですが、結構頻繁に起こります。こういう場合は、PrljectBuilderの左上のボタンの中から「クリーニング」ボタンをクリックして、クリーニングが終わってから、再度「ビルドと実行」ボタンをクリックして下さい。このクリーニングはCodeWarriorで「Remove Object Code...」を行うようなものですから、ビルドに凄く時間がかかってしまいます。出来れば、なるべくやりたく無いのですが、変更したのに反映されていない時には、試してみる価値はあります。これでも駄目な場合は、3.を疑って、もう一度冷静に、変更した内容が正しいのか、再度見直してみましょう。なお、コンパイルオプションを変更した時には、必ずクリーニングする必要があるようです。

さて、今回もプログラムは書きませんでしたが、ファイルを開く所までは出来てしまいました。TinyViewに対して、ドラッグ&ドロップも出来るようになっています(実行ファイルはbuildという名前のフォルダーの中にありますので、試してみて下さい。)。この様に、Cocoaは標準的なプログラムを組んでいる限り、かなり広範囲な部分まで面倒をみてくれます。でも、それでは融通が効かないのでは?と危惧される方がおられるかもしれませんが、ご安心下さい。そういう場合は、自分で実装することも出来ます。でも、特別な理由が無い限りは、準備されているものを使った方が賢いでしょう。

では、今日はここまでとしまして、次回はいよいよソースの中身を見て行きます。

前頁目次次頁