2010年5月18日火曜日

気になるアプリ〔暫定メモ〕

ちょこちょこと気になったフリーウェアのメモ.使うかどうか現在不明.使い込むようであれば,後日アプリごとにエントリを作るかも.ここではとりあえず,暫定的にリストアップ.

■ subcommander Go
 ファイルの diff と merge ができる.マルチプラットフォームに対応

■ Find Any File Go
 ファイルの検索

■ IconDroplet 1.5 Go
 icns ファイルをこのアプリにドロップすると,そのデータを反映させたアイコンを持つフォルダができる.
  しかし,動かない.どういうこと?

■ LiteIcon Go
 システム指定のアイコンを一括で変更.楽ぅ〜〜
  ライムなブログにいくと,使い方が画像入りで詳しく説明されてる.
  

2010年5月8日土曜日

ファイルタイプとクリエータをまとめて変更

先のエントリ「プレビューが表示出来ないテキストファイル」で書いたように,拡張子 .tex のファイルのクリエータを MMKE,ファイルタイプを TEXT に変更する必要が生じたので,その方法について整理.

1.terminal でコマンド SetFile を使う

$ SetFile -c MMKE -t TEXT foo.tex

2.そういうユーティリティーを使う
ファイルタイプとクリエータが変更できるようなユーティリティーを貰ってきて使う.
例えば,QuickFileType.OS 10.5 に対応している.
この人は TeX Tools for mi の作者でもあったのだ.色々お世話になってます.ありがたやありがたや.
その他にも,以下の【参考】に挙げたアプリがあるらしいが,Leopard に対応しているかどうかは検証していないので不明.

3.コンテキストメニューのプラグインを使う オススメ
神子沢明氏が作った,コンテキストメニューからファイルタイプやクリエータの変更ができるプラグインがイチオシ.
変更のパターンを色々と登録できるのが良い.コンテキストメニューになっているのも使い勝手を大いに高めている.
AmSetFileTypeCMX ファイルタイプ・クリエータ・拡張子を変更
AmFileTypeCMX ファイルタイプ・クリエータ・拡張子を参照・コピー


さて,神子沢氏のプラグインはスマートフォルダにおいても使えるから,スマートフォルダで検索をかけて必要なファイルをリストアップしてやれば,一気にファイルタイプやクリエータが変更できると目論んだのだが,ここで思わぬ落とし穴にはまった.

拡張子 'tex',クリエータ 'MMKE' 以外,作成日2008年以降,という条件でファイルをSpotlight検索したら,ファイルが一つも出てこないのだ.実際には当該ファイルがちゃんと存在しているにもかかわらず.

という訳で,ここでまた本来の目的から逸脱し,話の内容も発散してしまう.ということで,続きは別エントリ「spotlightは検索条件が3つになるとバグる」にて.
 
 
【参考】OSX Freewaresというページの 「ファイル」>「属性」の箇所に,ファイルタイプやクリエータを変更するソフトがたくさん整理されていた.そこからめぼしいモノをピックアップして並べておく.

FileInfo(タイプ/クリエータ/ロック/可視属性/拡張子を隠す設定等を一括変更)
FileUtilsCM(Finder 情報更新/パスコピー/ファイル属性変更等のCMM;Universal
File Wrench(ファイルの詳細情報表示/編集リスト型ツール;タイプ/アクセス権/フラグ/コメント等々)
FileBrowser(タイプ/クリエータ/可視属性等も変更できる簡易ファイルブラウザ)
FileShaper(ファイル名/タイプ/ロック/所有者/グループ/アクセス権/作成,修正日を表示/変更;一括処理も可)
Modifier Lite(ファイルのアクセス権/タイプ/作成,修正日等を変更)
MuchoFileInfo(タイプ/クリエータ変更;ファイルのフラグ(可視属性など)も変更可)
Spoook(タイプ/クリエータ/可視属性変更)
basicProperties(ファイルタイプ/可視属性を変更;フォルダをドロップすると内部の全ファイルを表示)
Drop CreatorType(タイプ/クリエータを一括変更)
Type Changer(タイプ/クリエータを一括変更)
CreCon(タイプ/クリエータを一括変更)
TypeChanger_X(フォルダ内のファイルのタイプ/クリエータを一括変更するAppleScript)
Typeator(タイプ/クリエータ変更するAppleScript)
QuickFileType(タイプ/クリエータを編集;Universal
DropCT(タイプ/クリエータ変更;要Apple Developer Tools)
iLikeYouMore(タイプ/クリエータ変更;Universal
FileType(タイプ/クリエータ変更;複数ファイル一括変更はできない)
FileWIZ(タイプ/クリエータ変更;2ファイルを比較して変更できる;複数ファイル一括変更はできない)
Quick Change(タイプ/クリエータ/拡張子変更;Universal
MacCT(タイプ/クリエータ変更;バンドルタイプのアイテムも変更可能)
TextCreator2(タイプ/クリエータ確認/変更)
SE-FileCreator(タイプ/クリエータ変更;主に画像やテキストファイル用のいくつかのプリセットあり)
ChangeInfo(タイプ/クリエータ変更)
tcset(タイプ/クリエータ変更)
TypeSetter(タイプ/クリエータ変更)
FileMatch(タイプ/クリエータ一括変更)
AmFileTypeCMX(タイプ/クリエータ/拡張子を表示/コピーするCMM;Universal
AmSetFileTypeCMX(タイプ/クリエータを変更するCMM;Universal
File Adopter(タイプ/クリエータをInternet Config初期設定に従い変更;タイプ/クリエータの消去も可)

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の概念
 

2010年5月3日月曜日

OS X でファイル同士を比較する

OS 9 には『DODO DIFF』という優れたテキストファイルの比較ユーティリティーがあった.
Tiger の時は Classic 環境でこのアプリを使っていたんだけども,Leopard に移行したら Classic 環境が使えなくなってしまったので,DODO DIFF に変わるアプリを探してこなくちゃいかん、、、

と思って調べてみたら,『Developer Tools』の中に『File Merge』というユーティリティーがちゃんと準備されていることが判明.

結論からいうと,比較結果が色を使って分かりやすく表示される他,相違箇所への移動もスムースなので,『DODO DIFF』に優るとも劣らぬ使い勝手の良さ.なかなかいいんでないの.

ただ,日本語への対応が十分でないので,そこをいじってやる必要があるとのこと.
【参考】FileMerge.app でテキストエンコーディング自動判別@ヘチマ_BLOG
   OSXでdiff16bps
   FileMergeで日本語を@Side-B
   OSXでテキストの差分表示アプリケーション@MJ::Blog

やるのは,日本語の文字コードを変換するUNIXコマンド「nkf」のインストールと,『File Merge』の環境設定で読み込んだファイルを nkf で変換するようフィルタを設定すること.
なお,『File Merge』のフィルタ設定はファイルの拡張子ごとに行うことになっているため,『File Merge』で扱いたいファイル種別ごとにフィルタを設定してやらなきゃいけない.これがちょっとばかり面倒かな.

以下,具体的な作業手順.

■ nkf のインストール

nkf Network Kanji Filter をインストール.
今回利用したのはnkf-2.1.0.tar.gz

〈インストール手順〉
$HOME にnkf-2.1.0.tar.gzを置き,$HOME の下にディレクトリ src があるものとして.

→ nkf-2.1.0.tar.gzを作業用ディレクトリ $HOME/src に展開
↓  $ cd
↓  $ tar zxvf nkf-2.1.0.tar.gz -C ./src
→ $HOME/src/nkf-2.1.0 でコンパイル
↓  $ cd ./src/nkf-2.1.0
↓  $ make
→ 生成バイナリのコピー(/usr/binに置く場合)
↓  $ sudo cp nkf /usr/bin/.

■ FileMerge のフィルタ設定



Extension の列に新しい拡張子を登録し,Filter の列に/usr/bin/nkf -sLu $(FILE) と入力.Display の列は Filtered,Apply は yes.