「Mac OS Xアプリケーションのデプロイメント」として金子貴寛氏よりの講演が行なわれた。従来のアプリケーションの1ファイル形態での限界を示し、Mac OS Xではフォルダを1つのアプリケーションに見せるパッケージを導入し、複数のバイナリ、複数の言語などに対応できるようになった。パッケージの内容としては、.appという名前のフォルダがトップになり、Contentsの中に、Info.plist、Resources、PkgInfo、MacOSといったファイルやフォルダがある。フォルダがパッケージとして見えるには、特定の拡張子がついていてPkgInfoファイルがある場合、カタログ情報の特定のビットが立っている場合、アプリケーションでの指定(アプリケーション設定の書類設定)がある場合の3つがある。Info.plistはアプリケーションの情報をシステムに伝えるために使われる。シングルファイルのアプリケーションでは、plst(0)リソースで同じ情報を指定する。そうしないと128ビットアイコンはサポートされない。 Pure Javaアプリケーションを作ると、Resourcesフォルダ下にJavaフォルダができてjarファイルが作成される。メインクラスを特定できれば、.jarファイルダブルクリックできるが、MRJAppBuilderを使ってアプリケーションパッケージを作成することもできる。MRJAppBuilderの設定ダイアログについての説明が行われた。Javaのプロパティについても一部が解説が行われた。 ローカライズについても説明が行われた。言語地域名についても拡張され、たとえばen.lprojフォルダでもよく、8か国以外の言語にも対応している。Project Builderで新たなローカライズは可能だが、差分アップデートができない。そこで、AppleGlot 3という内部で使われていたツールを公開した。リソースのテキスト部分をXMLファイルで書き出す。それを手作業で翻訳し、新たな言語のフォルダやリソースが出来上がる。差分アップデートにも対応しているが、アプリケーションはサイトからダウンロードする。 ドキュメントのバインディング(文書をダブルクリックしたときに起動するアプリケーション)についての話になった。昔はクリエイタとファイルタイプだけでよかったが、DOSファイルや拡張子ファイルも扱うようになっていろいろな仕組みが作られたが、最終的には拡張子をOSで理解するようにするという方針になった。拡張子は最後のドットに続く文字列で、12バイトまでという制限がある。数字のみはだめで、大文字小文字は区別しない。そのルールは、まずFinderの情報ウインドウでユーザが設定したものが最優先となる。2番目はクリエイタに対応したもの、3番目が拡張子、4番目がファイルタイプとなる。複数のクリエイタがある場合は、Classicよりネイティブ、より最新バージョン、更新日時の新しい方を選択する。さらに、ViewerよりEditorの設定が優先される。書類を新規作成するときには、Mac OS用にタイプとクリエイタ、そして拡張子も付けるようにする。 Finderに更新するにはポーリングしていないので、FNNotifyを利用する。ただし、ナビゲーションではこの処理は不要となる。ワイルドカードは、FinderのOpenDocumentでは適用されない。バインディングは、アプリケーションフォルダをログイン時にチェックする。その他のフォルダは起動時にしかチェックをしない。 拡張子についてはMac OS X 10.1では隠すという機能が追加された。拡張子を隠す意図は、ユーザには拡張子の存在を意識させないようにしたいからである。ファイルごとに表示するかどうかを設定できる。外部から持ち込まれたファイルは、拡張子は表示されるが、全体をリネームしても、拡張子は保持される。また、拡張子を入れてリネームするとそれが反映されて拡張子は表示される。アプリケーション側でファイル名を表示する必要がある場合には、専用のAPIを使う。そうすれば、現在Finderで表示されている名前を得ることができる。ドキュメントを作成するときには拡張子の非表示をデフォルトにする。保存時に、ユーザが指定した場合や指定しない場合、間違った場合などの対処についてデモを交えて解説された。拡張子を付けないで名前を指定した場合や、間違った拡張子を付けた場合など、それぞれ考慮された結果になるものである。Windowsのような単純な拡張子の利用にはなっていないのがポイントでもある。 アプリケーションをインストールすると、アプリケーションのエイリアスを引数にとってApplEventが発生される。一番のお勧めは、dmgファイルでのドラッグコピーによるインストールである。デベロッパーツールについているPackageMakerを使うとアプリケーションバンドル以外にファイルをコピーする場合やルート特権での処理が必要な場合、前処理や後処理を行う場合のインストーラが作成できる。 |