2010年5月6日木曜日

テキストファイルのプレビューが表示されない

今更言うまでもないが,カバーフローとクイックルックのアイディアは秀逸だ.フォルダ内のファイルをサクサクとブラウズできるから,ファイルの整理や探索にとっても便利だ.

ところが,この仕組みがうまく機能しないケースも幾つかあって,便利さがすっかり体に馴染んでしまうと,こういう不都合に出くわしたときに受けるストレスはかえって大きくなってしまう.

「慣れ」というのは困ったものだ.この能力が無かったら人間の脳や感覚や感情は絶えずストレスに晒されてとてもじゃないが生きていけないのだけど,こういう時は「慣れ」が逆にストレスを生んでしまう.

ちと横道に逸れてしまった.
カバーフローとクイックルックがうまく機能しないケースの話だった.

うまく機能しないのは TeX のソースファイル(拡張子 'tex').この中に「プレビューが表示されるもの」と「されないもの」があることに気づいたという訳.

僕は拡張子 'tex' に mi(ミミカキエディット)を割り当てている.だから拡張子が 'tex' のファイルを Finder は「mi テキスト書類」だとちゃんと認識しているのだが,それにもかかわらずプレビューが表示されないファイルがかなりあるのだ.

で,調べてみたところ,ファイルタイプとクリエータが指定されていないものはプレビューが表示されないことが判明.こういったファイルは
ファイルタイプ:TEXT
クリエータ:MMKE
と変更することにより,プレビューが表示できるようになった.

→変更方法については別エントリ「ファイルタイプとクリエータの一括変更」参照

これで一応問題は解決したが,しかしすっきりしない点がある.それは,TeX のソースファイルをコンパイルした際に生成される foo.aux と foo.log については,ファイルタイプとクリエータがセットされていないにもかかわらず,ファイルの種類がそれぞれ「Unix実行ファイル」,「Log File」と認識され,プレビューもちゃんと表示されるという現象.

これは拡張子 aux と log があらかじめ OS X のシステムに認知されていて,かつその中身がテキストファイルであることも了解済み,ということを意味しているのだろう.

ならば foo.tex の場合だって,個々のファイルのタイプとクリエータをいちいち設定しなくても,どこかの plist に「拡張子 tex はテキストファイルだよ」という情報を追記すれば一発で全ての foo.tex がプレビューできるようになるはずだ.

はてさて,どうすれば良いものやら.
取り敢えず,解決方法を考えようと QuickLook についてネット上であれこれ集めた情報をつらつらと書き留めておこう.

ファイルのプレビューは QuickLook のプラグイン(拡張子は '.qlgenerator')が作成する.規定の置き場所は
1. /System/Library/QuickLook
2. /Library/QuickLook
3. /System/Library/Frameworks/QuickLook.framework/Resources/Generators
4. $HOME/Library/QuickLook

システム標準のプラグインは上記の3番に置かれている.

OS X はファイルの種類を判別するために UTI (Uniform Type Identifier) と呼ばれる識別子を使用する.UTI は文字列で,ドットによって階層を連接する記法が用いられる.たとえばJavaのソースは「com.sun.java-source」
ファイルに対してQuick Lookを実行するアクションが指示されると,ファイルのメタデータにあるUTIが参照され,それに対応したQuick Lookプラグインが実行される,という.

【宿題】現時点では,ファイルのメタデータがどこにあるのか僕には分かっていない.terminal で GetFileInfo,mdls のいずれのコマンドを実行しても,その出力にそれらしいものはない.一体,どこにあるのだろう?

調べてみてわかったのは,Apple が OS 9 以前の偉大なる発明である「ファイルタイプとクリエータでファイルの種類を判別する方法」つまり「リソースフォーク」を捨て,拡張子でファイル種別を判別する方法の側へと大きくシフトせざるを得なくなった結果,UTI が生まれたという経緯.そして「ファイルタイプ」と「クリエータ」が時代の遺物となり,新参者のMacユーザーから厄介者扱いされているということ.

しかし,いまだに一つのマシンに Leopard,Tiger,OS 9 と3つの OS を載せ,必要に応じて使い分けている僕の立場からすれば,過去の話でもなんでもない.OS 9 でもダブルクリックで開ける状態になっていなければ困るのだ.噂では,Snow Leopard がファイルタイプとクリエータを完全に捨てたというから,こういう使い方をしている限り,Snow Leopard には移行できないのかもしれない.う〜〜む.

「qlmanage」
QuickLook の管理用コマンド.terminal で実行してプレビューやサムネイルを表示させることができる.

qlmanage -p -c <uti> -g <試したいジェネレータ> <プレビューを表示するファイル>

表: qlmanageコマンドの主要なオプション
オプション 説明
-c UTIを指定する
-f プレビューの表示倍率を指定する
-g 使用するプラグインを指定する
-m UTIと関連するQuick Lookのプラグインを表示する
-p ファイルをプレビューする
-r プラグインのデータを再読み込みする
-s プレビューエリアの幅をピクセル数で指定する
-t サムネイルを描画する

【参考】
Leopard解体新書(7) 〜Quick Lookをクイックハック〜@OS X ハッキング!〔マイコミジャーナル〕
QuickLook@開店休業中
Uniform Type Identifierの概念
 

0 件のコメント: