すわ互換機の登場か? と思わせたこちらの新製品。明らかにEULA違反ですし、実物が世に出回るかどうか半信半疑ですが、こういう製品はキライじゃありません。かつてはUMAX製の互換機で、BeOSを動かしてましたから。

さて、今回は「アーカイバ」について。ブロードバンド時代のいまでこそ、やり取りするファイルのサイズはできるだけ小さくすべしという"作法"に神経をとがらせるユーザは減ったものの、ZIPやLZH、TGZといった拡張子のファイルはなお健在。PC雑誌で特集が組まれることはないにせよ、必要なことに変わりはないのだ。というわけで、Leopard時代のアーカイバについて考えてみたい。

BOMArchiveHelperから「アーカイブユーティリティ」へ

Leopardには、システム標準のアーカイバとして「アーカイブユーティリティ」が収録されている。OS X 10.3 (Panther) 以来利用されてきた「BOMArchiveHelper」に代わるもので、それまで同様/Applicationsではなく、FinderやDockと同じ/System/Library/CoreServicesに置かれている。

解凍はファイルをダブルクリックするだけ、圧縮はFinderのコンテキストメニュー経由、サポートされるフォーマットはzipやtar+gzip (tgz)、bzip2にcpio……と基本機能に大きな違いはないが、環境設定パネルの追加という決定的な違いがある。通常は圧縮 / 解凍の完了とともに自動終了してしまうため気付きにくいが、/System/Library/CoreServicesフォルダから単独で起動すると、メニューバーから[アーカイブユーティリティ]→[環境設定...]で開けるようになる。面倒な場合には、以下のコマンドを実行すればOKだ。

$ open -a "Archive Utility"

この環境設定パネル、展開 / 圧縮したあとの書庫ファイルを自動的にゴミ箱へ送るなど、アーカイブユーティリティの挙動を変更できるので便利。変更した情報は、デフォルトデータベース (om.apple.archiveutility.plist) に記録されるため、次回以降同じ設定で利用できる。

アーカイブユーティリティの環境設定パネル

おもしろいのは、アーカイブユーティリティのバンドル内部に「Archives.prefPane」という書類があること。それをダブルクリック、または以下のとおりコマンドを実行すれば、システム環境設定に「アーカイブ」ペインとして登録できる。

$ open /System/Library/CoreServices/Archive\ Utility.app/Contents/Resources/Archives.prefPane

足りない機能をどう補うか

圧縮時のフォーマットはzipで十分、解凍機能はzipのほかtar+gzip / bzip2に対応していれば特に不満なし、というユーザはともかく、実際のところアーカイブユーティリティの機能だけでは足りない。zipの解凍 / 圧縮はパスワード保護に未対応、lzhやrarといったフォーマットも扱えない。Macユーザには馴染み深い「sit」もサポートされていないため、StuffIt Expanderを併用しているユーザは少なくないはずだ。

ちなみに、Leopardにはzipファイルをパスワードで保護するためのコマンド「zipcloak」が用意されている。使い方はかんたん、コマンドの引数にzipファイルを与えて実行、あとはメッセージの指示どおりパスワードを入力すればOK。パスワードで保護されたzipファイルも、zipコマンドを利用すれば解凍できる。GUIはないものの、利用頻度を考えればこれで十分に思えるが、いかが?

zipcloakコマンドを使えば、zipファイルをパスワードで保護できる

OS Xの主流は「dmg」、そのあざとい使い方

zipだlhaだtar+gzipだというアーカイブフォーマットの分類は、他のOSを使うユーザを考慮したうえでの話。OS Xユーザ限定であれば、リソースフォークを扱える「ディスクイメージ (.dmg)」のほうが扱いやすく、実際ネット経由で配布されるOS X用アプリケーションの大半はdmg形式となっている。

便利に使えるdmgだが、1つ気になる点がある。マウント処理の遅さだ。Finderでdmgファイルをダブルクリックして操作可能になるまでは、一呼吸どころか三呼吸も四呼吸もかかるほど。せわしないこの時代、レスポンスのよさは重要なポイントだ。

残念ながらFinderから操作するときの対処策はないが、hdiutilコマンドを使うという手がある。チェックサムの照合を省き、そのぶん処理を高速化するというカラクリだ。使い方はかんたん、マウント時に使う内部コマンドのattachに続き、オプションの「-noverify」を指定すればいい。

$ hdiutil attach -noverify iphone_sdk.dmg

合理主義者 (横着者?) には、hdidコマンドがお勧めだ。こちらはチェックサムの照合を行わないため、オプションの指定は必要なし。引数としてdmgファイルを指定するだけでOKだ。なお、このコマンドは後方互換性維持のために置かれているコマンド。将来のバージョンでは廃止される可能性があるため、hdiutilコマンドのエイリアスを定義しておく、という使い方のほうがベターだろう。

$ hdid iphone_sdk.dmg