タイトル【Mac OS 9シリーズ】「パッケージ」を作成してみるカテゴリーMac OS 9, Mac OS 9
作成日1999/11/1 15:22:1作成者新居雅行
Mac OS 9から新しく導入された「パッケージ」という仕組みがある。ファイルやフォルダがつまった1つのフォルダを、Finder上ではあたかも1つのアイコンとして、1つのファイルのように扱うことができる。中身がアプリケーションなら、パッケージ化したフォルダはあたかもアプリケーションのように扱える。ダブルクリックして起動したり、ドラッグ&ドロップが可能となるわけだ。
パッケージは、言わば特別なフォルダだ。そのために、フォルダ情報のフラグの使っていなかった1つのビットを利用する。フォルダをパッケージにするには、単にその1つのビットをセットするだけである。パッケージについては、以下のTechnoteに詳細が書かれてある。
http://developer.apple.com/ja/technotes/tn1188.html

フォルダをパッケージにしたり、あるいは戻すユーティリティは、アップルから配付されているサンプルプログラム「Package Tool」(以下のアドレス)にあるので、それを利用すれば良いだろう。おそらく、いずれはCodeWarriorでも自動的にパッケージ作成に対応するようになると思われるが、現状ではこうしたツールを利用して、独自にパッケージ化しなければならない。
ftp://ftp.apple.com/developer/Sample_Code/Human_Interface_Toolbox/PackageTool.sit

まずはパッケージを作ってみよう。パッケージであるためには、フォルダの最上位レベルに、実行するアプリケーションのエイリアスがあればよい。基本的な要件はそれだけなのだ。つまり、わざわざパッケージ向けのアプリケーションを作る必要はなく、既存のアプリケーションでも、パッケージ化することができる。ここでは、FaceSpanで作ったアプリケーションを次のように、「ファイル名変更」フォルダに配置した。内部にappフォルダを作り、その中にアプリケーションを配置し、ルートレベルにはそのアプリケーションのエイリアスを作成しておいた。
figs/macos9/04/file0001.gif

この「ファイル名変更」フォルダを、Package Toolに含まれている「Package Tool」というアプリケーションにドラッグ&ドロップする。すると、次のようなダイアログボックスが表示される。最初はFolderが選択されているが、ここでPackageのラジオボタンをクリックすると、ドラッグしてきたフォルダがパッケージに変換される。日本語が文字化けしているが、ソフト自体の動作は問題ないようだ。
figs/macos9/04/file0007.gif

作成されたパッケージは次の図のように、1つのアイコン、つまり、1つのファイルのように見える。アプリケーションパッケージのアイコンは、起動されるアプリケーションのアイコンが自動的に設定される。パッケージの中身はアプリケーションなので、このもともとフォルダだったアイコンは、Finder上ではアプリケーションとしてふるまうのである。ファイルの種類としては「アプリケーションパッケージ」となっている。
figs/macos9/04/file0003.gif

このパッケージはアプリケーションと同等なので、フォルダだったパッケージをダブルクリックしたり、あるいはファイルをパッケージにドラッグ&ドロップすることで、パッケージ内部のアプリケーションが起動する。
figs/macos9/04/file0004.gif

つまり、フォルダが1つのアプリケーションとして機能しはじめたわけだ。パッケージのフォルダにドラッグ&ドロップすると、背後では、フォルダの中にあるアプリケーションに対してOpen DocumentsのAppleEventが正しく発行される。

パッケージは、今後のMac OS X向けアプリケーションの標準形態という意味合いもあるが、まだ、Mac OS Xがリリースしていない現在ではそのような利用はほとんど望めない。むしろ、ユーザーによってフォルダ内部を見られたり、あるいは修正されて困るような場合に、こうしたパッケージという形態が利用できるということになる。
ナビゲーションサービスなどでのファイルを開く時のダイアログボックスでは、パッケージはフォルダとしてはもはや見えない。アプリケーションのパッケージは、一般ユーザーからは単に1つのアプリケーションとしてしか見えないということになる。
一方、プログラムレベルではどうだろうか? AppleScriptで試してみたところ、パッケージ内のテキストファイルは、パッケージをフォルダのように指定することで、パス名を与えて開き内容を読むことはできた。これはパッケージ内部からも、外部からも同様に行えた。しかしながら、パッケージあるいはその内部フォルダについてはfilesやfoldersといった属性の出力は得られないので、ファイル一覧を取得することはできなくなっている。つまり、フォルダ構成とファイル名を知っている者しか、パッケージ内はアクセスできないということになる。

パッケージは確かに便利であるが、現実的な利用には問題点もある。Finder以外のアプリケーションが対応していないことで一括できる。パッケージをDropStuffで圧縮すると、確かに圧縮できる。しかし、それをStuffIt Expanderで解凍しても、正しくアプリケーションパッケージとして解凍できないのである。図のように、圧縮して解凍した「ファイル名変更.1」は、白いアイコンとなり情報で見た種類は単に「パッケージ」とししかなっておらず、ダブルクリックしても起動しない。つまり、StuffItシリーズはMac OS 9に含まれているものでも、パッケージ処理に対応していないのだ。
figs/macos9/04/file0005.gif

なお、解凍して元に戻らなくなったパッケージは、Mac OS 9のCD-ROMの「ユーティリティ」フォルダにあるPackage First Aidを利用すればよい。このユーティリティにドラッグ&ドロップすれば、おかしくなったパッケージを元のフォルダに戻すことができる。この作業はPackage Toolではできない。
figs/macos9/04/file0006.gif

パッケージの転送ができないのは、電子メールでも同様だ。Outlook Express 5では自動的に圧縮してしまうので、圧縮ファイルの解凍でサポートされない限りはパッケージの送受信ができない。また、フォルダ構成を記録してメールできるソフトがあったとしても、パッケージであることを示すビットを正しく保存することは、現状ではできないと思われるので、その意味でもパッケージの送信はできないだろう。また、Webサーバーへのパッケージのアップロードは、ほとんど無理と言えるだろう。異なるOSを経由することが多くなるし、仮にMac OSのWebサーバーを使ったとしても、ブラウザなどが対応していない。結果的にパッケージは、現状ではCD-ROMなどに納めて配付するような形態でしか使えないと言えるかもしれない。
パッケージをたとえばAppleShareサーバー経由でMac OS 8.Xで参照した場合は、単にフォルダに見えるだけだ。もちろん、パッケージとして見えないのは当然としても、パッケージ作成前のフォルダの状態として見える。
関連リンク