タイトル今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(10)保存結果と文書ファイルカテゴリーユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング
作成日2001/12/28 16:25:4作成者新居雅行
保存ができるようになったところで、保存のときの動作をチェックしよう。しつこいようだが、ここまでのプログラムは、単に「ウインドウに表示されているテキストをNSData型で戻した」という部分を作っただけである。以下、検討する動作はCocoaのフレームワークが提供している動作なのである。
まず、Command+Sなどとにかく保存の作業をすると、最初はシートで保存するフォルダとファイル名を指定する必要がある。別に、何の変哲もないシートではあるが、以下の図は単に「x4」という名前(いい加減な名前で申し訳ない…)を入力している。そして、Saveボタンをクリックしている。

◇保存するフォルダとファイル名を指定する
 

さっそく保存したファイルをFinderでチェックしたいのだが、実はアイコンの反映はすぐには行われない。知り得ている情報では、Mac OS Xを起動するときにはハードディスク内をさらってアプリケーションを調べて、そこにある文書情報から、拡張子やファイルタイプとアイコンの対応、つまりデスクトップデータベースを更新しているということである。一方、ログイン後はApplictionsフォルダだけをしらべてデスクトップを更新しているということになっている。ところが、プロジェクトのフォルダの中にアプリケーションがある場合再起動でアイコンが反映される場合もあるかもしれないが、変更結果が反映されないこともあるようである。一番確実なのは、アプリケーションを/Applicationsフォルダにコピーして、ログインをしなおすか再起動することのようである。
というわけで、再起動してから、今保存したx4というファイルを見ると、Finderでも同じ名前であるx4が見えている。しかしながら、Finder情報を見ると、ファイル名は、文書タイプで指定した拡張子が付けられたx4.meditとなっている。もちろん、「拡張子を隠す」の属性にチェックが入っている。

◇保存したファイルをFinderで見てみた
 

いずれにしても、アイコンは指定したグラフィックスが表示されているのでいいとしよう。ファイル名には自動的に規定の拡張子が付けられ、拡張子は非表示の状態になる。とにかくこれが基本的な動作である。
また、Finderでみる文書の種類は、「MOSAEditor Document」となっていて、つまりは文書タイプの「名前」(もちろん、File Formatのポップアップで見られる文字列)がそのまま確認できるようになっている。
同じように、今度は、File FormatでText Documentを選択すると、これもやはり文書タイプでの設定とおり.txtの拡張子が自動的に付けられる。Finder上では拡張子は隠される。ただ、.txtファイルは、TextEditの文書となってしまって割り当てたアイコンにはならない。おそらく、システム側での.txtファイルに対する定義があってそれはどうやっても書き変わらない気がするのである。

◇テキストで保存したファイルをFinderで見てみた
 

適当なツールで、ファイルタイプやクリエイタが設定されているかを確認してもらいたいが、この状態では文書ファイルにはまったくクリエイタやファイルタイプは設定されていない。独自のファイル形式で独自の拡張子を使う限りはそれも大きな問題にならないかもしれない。ファイルタイプが設定されていないとMac OSでのファイルの利用に問題があるとは言え、CocoaのアプリケーションはいずれにしてもMac OSでは稼働しない。それに、ファイルタイプを設定しなくてもアイコンは表示される。ただ、Carbonのアプリケーションでも読み込めるようにしたい場合に、そのアプリケーションがファイルの種類をファイルタイプだけで得ているような場合には問題があるだろう。その場合はいずれにしても、別途プログラムを追加して、ファイルタイプやクリエイタを自分で設定しないといけなくなる。(この方法については別途説明したいが、いい方法をいま探し中である。)
ちなみに、ここでのテキストファイルで独自にアイコンを設定したいとかいった場合には、ファイルタイプとクリエイタを設定することでおそらく可能だと思われる。今のままだとMOSAEditorで作成したテキストファイルをダブルクリックすると、TextEditで開いてしまうが、ファイルタイプなどを設定すればおそらくはMOSAEditorで開くことができるようになると思われる。

ここでファイルを保存するとき、たとえば「x5.medit」のように、規定の拡張子を付けた場合もチェックしてもらいたい。このとき、Finderではx5.meditのように拡張子も含めたファイル名が表示される。また、「拡張子を隠す」のチェックには、チェックが入らない。つまり、ユーザが明示的にキータイプした場合には、拡張子は表示するという規則になっているわけだ。
さらに、保存時に「x6.mydoc」のように、アプリケーションで登録されていない拡張子を付けた場合は、実際のファイル名は「x6.mydoc.medit」のように、規定の拡張子を自動的に付ける。そして拡張子は隠す設定となり、Finder上では「x6.mydoc」となるのである。
ファイル名を指定して保存した後、文書のウインドウのタイトルバーを見てもらいたい。Finderで表示されているアイコンで文書が表示され、Finderで表示されている名前がタイトルバーに表示されている。だから、拡張子が非表示なら、タイトルバーにも拡張子は表示されないのである。

ところで、2001/12/8に開催されたMOSAのMacintosh Software Meetingで、Appleからのセッションにおいてこうした拡張子の話が説明されたが、そこでの質問で、拡張子に関する動作のお手本はないのかということが出された。そこでは「ない」と答えられたものの、ある意味では、CocoaのDocument-basedアプリケーションは、独自の拡張子を付ける上ではまさに手本であると言えないだろうか。ただ、問題は.txtや.jpgなどの汎用的な拡張子を付けたときにどういった動作を意図するかといったところだろう。これについては、ガイドライン的なものは確かに見られないが、逆にガイドライン化しにくいのかもしれない。結果的にはアプリケーションを作る人次第ということなのではないだろうか。
(この項、続く)
関連リンク