タイトル今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(5)初期状態での動きを見るカテゴリーユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング
作成日2001/12/21 18:12:53作成者新居雅行
まずはテンプレートのままの状態で動いているアプリケーションの動作を追って行く。実は、何のプログラミングをしなくてもここまで動くというのがフレームワークの強力なところなのである。アプリケーションメニューを見てみよう。英語ではあるが、終了もできるし、隠すこともできる。一部のメニュー項目がNewApplicationになっているが、これは後から変更しないといけない。ここで、About NewApplicationを選択すると、すでにデフォルトのアバウトウインドウが表示する。この内容は、プロジェクトファイルにあるCredits.rtfの中身である。このように、RTFファイルを用意すれば簡単なアバウトウインドウまでもサポートしてしまっているのである。

◇アプリケーションメニューは既に使える状態にある
 
◇アバウト画面のメッセージはRTFファイルで与えることができる
 

Fileメニューを見てみよう。こちらも、ほぼ、必要なメニュー項目が揃っているのが分かるが、ここで、Newを選択してもらいたい。もちろん、Command+Nでもかまわない。ショートカットも何もしなくても機能している。

◇Fileメニュー
 

Newを選択すると、新たにウインドウがいくつも作られる。ウインドウをいくつも作ってWindowメニューを見てもらいたい。すると、すでに作られたウインドウの項目が見えている。また、FileメニューのClose(Command+W)も機能している。これら、基本的なマルチウインドウ処理は、何もしなくてもアプリケーションに組み込まれてしまっている。もちろん、ウインドウのタイトルバーをドラッグして移動したり、サイズを変更するという処理も、特に何もしなくても組み込まれているのである。

◇Windowメニューのメンテナンスも自動的に行われている
 

ここで、FileメニューからSave(Command+S)を選択してみよう。すると、保存するファイルとフォルダを指定するシートが出てくる。File Formatを注目してもらいたいが、ここで、すでにアプリケーション設定の「書類のタイプ」で指定したタイプの名前がポップアップに並んでいる。実際に保存しようとしても、エラーメッセージが出る。これは正常な動作である。保存に際しては、データの取り出しを自分でプログラムしないといけないのだが、初期状態ではそうしたプログラムは含まれていないし、エラーが出るようになっているというわけだ。

◇ファイルへの保存をやってみる。すでに書類タイプを認識している
 
◇保存しようとしたがエラーになる。これは正常な動作だ
 

今度は、FileメニューからOpen(Command+O)を選択してみよう。ダイアログボックスが表示されるが、ここでもやはり書類タイプの認識が行われている。たとえば図に見えている拡張子が.txtのテキストファイルはTextEditによるもので、ファイルタイプは未設定だ。一方のJedit4書類のテキストは拡張子はtextなのだがファイルタイプはTEXTである。つまり、書類タイプで指定した拡張子やファイルタイプのあるものはグレーにならずに選択できるようになっており、定義に含まれないファイルはグレーとなって選択できないのである。ここでも書類タイプの認識をきちんと行っている。

◇ファイルを開く場合でもすでに書類の種類の認識が行われている
 

ここでファイルを開いても、ウインドウには何も出てこないが、ウインドウのタイトルだけは開いた書類のアイコンやファイル名が記載される。こうしてつらつらといくつかのファイルを開くと、FileメニューのOpen Recentに開いたファイル名が記録されていく。そして、選択すれば再度開くといったことが行われる。このOpen Recent(最近開いた書類)についても、実はフレームワークですべてメンテナンスしてくれるので、プログラマは何もしなくても(というのは大げさだけど)この機能が使えるというわけである。

◇Open Recentの追加は自動的に行っている
 

以上のように、一切プログラミングを行わない状態でも、マルチウインドウ、マルチドキュメントのアプリケーションとして動いてしまうほど、Cocoaの中で機能が作り込まれている。後は、必要なメソッドの組み込みなどをすればOKである。逆に言えば、どこまでが自動化されていて、どの部分を自分で組み込む必要があるのかを知るのが、Documentベースのアプリケーション作成のポイントであると言えるだろう。次回はユーザインタフェースを組み込むことにしよう。
(この項、続く)
関連リンク