Leopard以降の標準アーカイブフォーマット「XAR」

海上忍
2010-07-20 17:42:05
  • このエントリーをはてなブックマークに追加

 比較的地味なカテゴリのため言及される機会は少ないが、Mac OS XデフォルトのアーカイバはLeopard以降オープンソースの「XAR」に変更されている。Tigerまでは、Installer.appが使用するパッケージ(XXX.pkg)にはCPIOが使用され、バンドル内部に拡張子「.pax」のファイルとして書庫化されていたが、Leopard以降でサポートされた新形式ではバンドルが廃止(後方互換性によりバンドル形式のパッケージも引き続き利用できる)、すべてのコンテンツがXAR形式で書庫化されている。

 このXARへのシフトはパッケージ限定かと考えていたが、どうやらそうではないらしい。Safari 5の機能拡張機構(Safari Extension)では、拡張子「.safariextz」のファイルが機能拡張書類とされているが、実体は同じXARアーカイブだ。その証拠に、○○○.pkgも△△△.safariextzも、xarコマンドで展開、閲覧できる。ZIPやGZIPが普及しているユーザランドはともかく、システム内部ではすでにXARが標準アーカイバの位置を占めつつあると考えてよさそうだ。

 XARが採用された理由だが、その名前(eXtensible ARchiver)にヒントが隠されている。開発者の1人であるRob Braun氏が書いたドキュメントによれば、メタデータを含むファイルハンドリングの容易さと、XMLによる拡張性が挙げられている。ファイルひとつひとつを異なる形式で圧縮したり、暗号化を施したりといった処理も可能になることから、Safari Extensionのような安全性を求められる場面に用いられることもうなずける。

・xarコマンドでSafari Extensionの内容を表示する

$ xar -tf ~/Library/Safari/Extensions/ClickToFlash.safariextz 
ClickToFlash.safariextension
ClickToFlash.safariextension/.DS_Store
ClickToFlash.safariextension/actionButton.png
  ・
  ・
xarコマンドで確認できる
パッケージ内容も確認できる パッケージ(.pkg)の内容もxarコマンドで確認できる

 XARプロジェクトのウェブサイトには、Mac OS XでXARを利用するためのさまざまな情報が掲載されている。APIのドキュメントのほか、実験的なプログラムもいくつか紹介されているので、機会があれば一読するといいだろう。

 たとえば、以下の手順でコマンドを実行すると、XARアーカイブの内容を表示するQuickLookプラグインをインストールできる。これからSafari 5の機能拡張を開発しよう、と検討中のデベロッパーにはお勧めのユーティリティだ。

$ svn checkout http://xar.googlecode.com/svn/trunk/ xar-read-only
$ cd xar-read-only/xarql/
$ xcodebuild
$ mv build/Release/xar.qlgenerator ~/Library/QuickLook/
$ qlmanage -r
(このあと再ログインを実行)
画像名 Safari 5の機能拡張書類をQuickLookできるプラグインも提供されている
  • 新着記事
  • 特集
  • ブログ