1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
http://wakabamac.blog95.fc2.com/blog-entry-887.html

QuickFileType : ファイルのクリエータコードとタイプコードを簡単に表示・編集
OS10.4以上(UB)
ドネーションウェア
ファイルのクリエータコードとタイプコード(ファイルタイプ)を簡単に表示・編集する「QuickFileType」の紹介です。

OSX は、そのファイルを開くアプリケーションをどうやって決定しているのか?
QuickFileType の説明の前に、「OSX は、そのファイルを開くアプリケーションをどうやって決定しているのか?」の仕組みを知らないと、この「QuickFileType」の機能をフルに使いこなすことができないので、説明したいと思います。
(と言っても、作者の栗田さんのホームページ「Script factory」の引用・・・というよりは、自分なりの解釈・自分の言葉にして書き写しただけなんだけど・・・)
creator_code
▶「クリエータコード」(クリエータともいう)
そのファイルを作成した(開く)アプリケーションを表すデータのこと。
4文字で表され、プレビュー.app なら 'prvw'、CotEditorで作成したファイルなら 'cEd1' という風になります。
例えば、「hoge1.txt」「hoge2.txt」という、2つの標準テキストファイルがあるとします。

そのファイルにクリエータコードを設定していないときは、たいていの場合「テキストエディット.app」で標準テキストファイルを開くと思いますが、「hoge2.txt」には 'cEd1' のクリエータコードを設定しているので、Finderでダブルクリックすると、CotEditor で「hoge2.txt」を開きます。
また CotEditor のように、そのドキュメントに専用のアイコンが付加されることがあるので、見た目でどのアプリケーションで開くファイルなのかを確認することもできます。
type_code
▶「タイプコード」(ファイルタイプともいう)
そのファイルの中身の種類を表すデータのこと。
4文字で表され、標準テキストなら 'TEXT'、JPG画像ファイルなら 'JPEG'、
PNG画像ファイルなら 'PNGf' という風になります。
Macはこの「タイプコード」のおかげで、拡張子なしでもそのファイルを正常に扱うことができます。
(今では「拡張子なし」のファイルを扱うことは滅多に無いけど・・・)
例えば、下のように「テスト1.png」「テスト」という2つのPNG形式の画像ファイルがあります。

「テスト2」の方は拡張子がありませんが 'PNGf' のタイプコードを設定しているので、アイコンに書かれているように「PNG」ファイルであることをがわかります。
(Finderの環境設定で拡張子を隠している訳ではない。)
これらの「クリエータコード」と「タイプコード」は、Mac独自のファイル属性で、ファイルに付いてる「おまけ情報」みたいなものです。
OSXでは、ファイルに「クリエータコード」と「タイプコード」が設定されてないことも多いです。
extension
▶「拡張子」
ご存知の通り、ファイル名の一番最後に「.」で区切られた3~4文字のことです。
「.jpg」や「.txt」などで、OSXでは、そのファイルの中身の種類として解釈されます。
タイプコードと意味がかぶり、ファイルに拡張子とタイプコード両方がある場合には拡張子が優先されます。
つまり、タイプコードは拡張子なしのときしか意味がありません。
ちなみにファイルがクリエータコードを持っている場合は、クリエータコードのアプリケーションがデフォルトアプリケーションに優先して使用されます。
(クリエータコードがあっても無視される場合がある)
知らない人も多いと思うけど、旧MacOSでは「クリエータコード」と「タイプコード」でファイルとアプリケーションの関連付けをやっていたので、「拡張子なし」のファイルは当たり前で、Windowsユーザとファイルのやり取りがある場合には、わざわざ自分で拡張子をファイル名に加えていました。
(栗田さんの解説を見て思い出したけど、OS9にあった「FileExchange」って、別のプラットフォームで作られたファイルを取り込むときに拡張子から判断して「クリエータコード」と「タイプコード」を割り振ってたんですよね。まあ当時はあまり意味が分からなかったけど・・・)
uniform_type_indentifier
▶「UTI」(Uniform Type Indentifier)
OS10.4から採用された、ファイルの中のデータの種類・型を識別する文字列のことで、JPEG画像なら "public.jpeg" 、HTMLデータなら "public.html" といった感じで、定義されています。
拡張子には「.html」と「.htm」、「.jpg」と「.jpeg」、「.tiff」と「.tif」とか、同じものにも複数のバリエーションがあったりします。
だから拡張子にデフォルトアプリケーションを直接関連付けるのはスマートなやり方ではないので、拡張子やタイプコードでファイルを UTI に関連付け、その UTI に対してデフォルトアプリケーションを関連づけています。
拡張子・タイプコード → UTI の関連付けは、一般的なものはシステムで、アプリケーション固有の拡張子を持つものなどは、そのアプリケーションバンドル内で定義されています。
UTI に対するデフォルトアプリケーションの関連付けを変更するには、Finder の情報ウインドウで「このアプリケーションで開く」でアプリケーションを設定し、
「すべてを変更」を実行します。

これらの UTI に対するデフォルトアプリケーションの関連付けの設定情報は
~/Library/Preferences/com.apple.LaunchServices.plist
に保存されています。
「com.apple.LaunchServices.plist」を Property List Editor で開いて見ると、下のようにUTI「public.html」に対して Safari(Bundle identifier "com.apple.safari")が設定されています。

ファイルがクリエータコードを持っている場合、たいてい、そのクリエータのアプリが、UTIに関連付けされているデフォルトアプリケーションより優先してファイルを開きます。
しかしクリエータコードを持っているファイルでも、それを無視してデフォルトアプリケーションで開いてしまうケースもあります。
例えば、CotEditor である標準テキストファイル「hoge1.txt」を作成したとします。
CotEditor で作成したファイルは、クリエータコード 'cEd1' を持っています。
このクリエータコードを持つ「hoge1.txt」ファイルをFinderのインフォメーションウインドウで、「テキストエディット.app」で開くように変更し、「すべてを変更...」を実行します。

当然ながら、この「hoge1.txt」は、テキストエディットで開くようになります。
しかし、また CotEditor で「hoge2.txt」という(クリエータコードを持っている)ファイルを作成したとします。これをFinderでダブルクリックして開くと「テキストエディット.app」で開かれます。
このようにクリエータコードを持っているファイルに対して、Finderのインフォメーションウインドウで、「このアプリケーションで開く」を変更して、「すべてを変更...」を行うと、その UTI に関してクリエータコードを無視するという設定がシステムに登録されます。
「com.apple.LaunchServices.plist」を Property List Editor で開いて見ると、下のように「LSHandlerIgnoreCreator」にチェックされています。

詳しいことは知らないけど、英単語から読み解くと「クリエータを無視する」設定だとわかります。
ここの項目を削除して上書き保存し、再起動する(再ログインではダメ)と、「クリエータコードを無視する」設定が無くなりました。
QuickFileType ではこんな面倒なことをしなくても、簡単にクリエータコードを再度有効に設定できます。
UTI についての詳細
『Uniform Type Identifiers Overview: Introduction to Uniform Type Identifiers Overview』
『Uniform Type Identifierの概要』
usro_resource
▶ usro リソース
OSX では、まださらにファイルとアプリケーションの関連付けに「usro リソース」というものが関与しています。
これは、Finderのインフォメーションウインドウにて、「このアプリケーションで開く」のリストでアプリを設定したときに(ただし「すべてを変更」は実行しない)、そのファイルのリソースフォークに usro リソース としてアプリケーションのファイルパスが書き込まれます。

僕は今まで usro リソースのことは知らず、Finderでのファイルとアプリケーションの関連付けはクリエータコードを設定している訳でもなく、どうやっているんだろうと思っていましたが、アプリケーションのパスで関連付けを行っているとは、なんとも頼りない設定でガックリきました。
何が問題なのかと言うと、そのアプリケーションの保存場所や、アプリケーション名、上位フォルダの名前などを変更してしまうと、関連付けは無効になってしまいます。
usro リソース で設定したアプリケーションは、Finderでファイルをダブルクリックして開くときに、UTI や クリエータコード よりも優先されます。
この usro リソース を削除するには、Finderでそのファイルのインフォメーションウインドウを開いて「すべてを変更」を実行するしかありませんが、QuickFileType で usro リソース を削除することができます。
▶ Mac OSX でファイルを開くアプリケーションが決定される仕組み
Mac OSX でファイルを開くアプリケーションが決定される仕組みは、上記の各要素を踏まえて複雑に決定されます。
栗田さんのサイトからフローチャートをお借りして説明すると、下記のようになります。

こうして見ると、かなり複雑です。
栗田さんも書いてるけど、Finderのインフォメーションウインドウで「このアプリケーションで開く」の設定のときは、usro リソース を使わず、クリエータコードの方がユーザにとって分かり易いんじゃないかと思います。
上記説明は栗田さんのサイト「Script factory」の『2009.01』から引用させて頂いております。
【 QuickFileType - 使い方 】
前置きが長くなったけど、QuickFileType の使い方の説明です。
Finderでファイルを選択した状態で、QuickFileType をDockなどのランチャから起動すると、そのファイルを対象としてウインドウを開きます。
ファイルを QuickFileType のアイコン上にドラッグ&ドロップしてもOKです。
Finderで何も選択していない状態で、QuickFileType を起動すると、Openダイアログでファイルを選択します。

基本的には「クリエータコード」「タイプコード」に適用させたいものを入力して「OK」ボタンをクリックすると、そのファイルにそれが設定されます。
既にクリエータコード・タイプコードが設定されているものなら、「取り除く」ボタンで入力欄を空白にして設定して、クリエータとタイプを「なし」にすることもできます。
「ファイルから選ぶ...」で、他のファイルを選択して、それと同じようにクリエータコード・タイプコードを設定することもできます。
i ボタンでドロワーが開き、そのファイル情報を表示します。
上部は、タイプコードとクリエータコードに新しく入力した内容を適用した場合に予想される情報です。
下部は、現在のファイルの情報です。
「よく使うクリエータとタイプ」のリストには、予めよく使う設定を登録しておいて、そのリスト項目をダブルクリックすることによって、そのファイルに簡単にクリエータコード・タイプコードを設定することができます。
(※ダブルクリックすると、ファイルにそのクリエータコード・タイプコードを設定してウインドウを閉じる or 終了します。ただ単にこのリストの項目を選択して「OK」ボタンをクリックしても、その設定は適用されません。)
ここへの登録は、参考ファイルをリスト上にドラッグ&ドロップするだけで簡単に登録できます。


「+」ボタンから、ダイアログで入力して登録することもできます。

そのクリエータコードに対応するドキュメントアイコンが用意されているなら、「更新」ボタンでそのアイコンを読み込むこともできます。
usroリソース の削除
QuickFileType は usroリソース を削除することができます。
上記でも説明したけど、もう一度 usro リソース についておさらいすると、
例えば、「Test.mov」というQuickTime形式の動画ファイルがあるとします。

このファイルを QuickFileType の情報ドロワーで見てみると、クリエータコードは QuickTime Player を指す 'TVOD' となっており、QuickTime Player がデフォルトアプリケーションになっています。

これをFinderのインフォメーションウインドウ( command+I(アイ))で、
「このアプリケーションで開く」で NicePlayer を設定します。
(ただし「すべてを変更」は実行しない)

これでFinder上で「Test.mov」を見てみると、ドキュメントアイコンも NicePlayer のものに変わります。

QuickFileType の情報ドロワーで改めて確認してみると、クリエータコードが 'TVOD'(QuickTime Player のもの)にも関わらず、デフォルトアプリケーションは NicePlayer になっています。

これは usroリソース が、このファイルに設定されているからです。
ちなみに、僕は
/Applications/NicePlayer folder/NicePlayer.app
の場所に NicePlayer を保存しています。
ここで、上位フォルダの名前を「NicePlayer_folder」と変更してみます。
これでFinderで「Test.mov」をダブルクリックしてみると、QuickTime Player で開きます。
このように usroリソース はパスによって、ファイルとアプリケーションの関連付けを行っているので、これしきのことで簡単に関連付けが壊れてしまいます。
しかもやっかいなことに、ドキュメントアイコンをカスタムアイコンとして貼付けてしまうので、新たにFinderのインフォメーションウインドウで「QuickTime Player」で開くように設定し直しても、ドキュメントアイコンは NicePlayer のままです。

アイコンがこれなので、紛らわしいこと、この上ないです。
そこで、QuickFileType で「Test.mov」ファイルを開き、
クリエータコード 'TVOD'、タイプコード 'MooV'
と設定し直して「OK」ボタンをクリックすると、下のようなダイアログが表示されます。

また「OK」すると、「Test.mov」ファイルに貼付けられたカスタムアイコンも元に戻り、usroリソース を削除します。

ちなみに NicePlayer のクリエータコードは 'nIcE' なので、これを QuickFileType で、タイプコード 'MooV' と共に設定すると、Finderでダブルクリックして開くアプリケーションは NicePlayer になります。
「クリエータコードを無視する」設定を無効にする
Finderのインフォメーションウインドウで、ファイルとアプリケーションの関連付けを行っていると、ときどき「クリエータコードを無視する」設定が行われてしまうことがあります。
クリエータコードを持っているファイルに対して、Finderのインフォメーションウインドウで、「このアプリケーションで開く」を変更して、「すべてを変更...」を行うと、その UTI に関してクリエータコードを無視するという設定がシステムに登録されます。
QuickFileType は、その無視する設定を無効にして、UTIよりクリエータコードを優先する設定に戻してくれます。
例えば「hoge1.txt」という、クリエータコード 'cEd1'(CotEditorのクリエータ)を持つファイルがあるとします。

この「hoge1.txt」ファイルをFinderのインフォメーションウインドウで、「テキストエディット.app」で開くように変更し、「すべてを変更...」を実行します。

設定するときには、下ように警告ダイアログも表示されます。

当然ながら、「hoge1.txt」はFinder上でダブルクリックすると、テキストエディット.appで開くようになります。
QuickFileType の情報ドロワーで見ると、クリエータは 'cEd1' になっていても、それを無視する設定になっています。

しかし、また CotEditor で拡張子「.txt」を持つ新たなテキストファイルを作成しても、そのファイルを開くデフォルトアプリケーションは「テキストエディット.app」になります。
この「クリエータコードを無視する」設定を元に戻したいとき、そのテキストファイルを QuickFileType で開き、
クリエータコード 'cEd1'、タイプコード 'TEXT'
を設定して「OK」をクリックします。
そのときに「クリエータコードを有効にするかどうか」のダイアログが表示されるので、「OK」をクリックします。

これでこれ以降に CotEditor で作成した「.txt」ファイルは、CotEditor で開くようになります。
複数のファイルを一度に設定する
QuickFileType は複数のファイルを一度に、クリエータコード・タイプコードの設定をすることができます。
Finderで複数ファイルを選択した状態で QuickFileType を起動する、もしくはドラッグ&ドロップすることによって、複数ファイルを対象にします。

「よく使うクリエータとタイプ」で設定したものリストから選択して、「OK」ボタンをクリックすれば、すべての対象ファイルにその内容が設定されます。
リストをダブルクリックしても設定されます。
また、このウインドウでも、対象ファイルをのところをダブルクリックすると、個別のウインドウを開いて各種設定できます。
【 クリエータコード の調べ方 】
クリエータコードを調べるには、実際にそのアプリケーションでファイルを作成・保存してみて、そのファイルを QuickFileType などで調べて、クリエータコードを調べる方法が確実だと思います。
ただ、作成したファイルにクリエータコードを設定しない場合が多いので、クリエータが分からないことがあります。
そう言う場合は、そのアプリケーションのパッケージを開いて「Info.plist」ファイルを見ると分かります(こういう方法が正しいのか、よく分からんけど・・・)。
例えば Smultron のクリエータコードを調べるとします。
Smultron.app/Contents/Info.plist
を「Property List Editor」(要Developer Tools)で開きます。

ここの「Bundle creator OS Type code」の「SMUL」が Smultron のクリエータコードになります。
長い説明になったけど、QuickFileType は単にクリエータコード・タイプコードを変更するだけでなく、usroリソース の削除、「クリエータコードを無視する」設定を無効にする、といった機能を持っている気の利いたアプリケーションです。
AmOpenUsingCMX で「QuickFileType」を登録すれば、Finderのコンテキストメニューから実行できて便利です。
ファイルとアプリケーションの関連付けに関して、全体的には RCDefaultApp、個別のファイルごとには この QuickFileType を使うといいと思います。
version 3.1.1 では、一部バグがあったのですが、フィードバックのメールを作者さんに送ると、わずか2日で直して頂きました。
お忙しい中ありがとうございました。
ちなみに「QuickFileType」のアイコンは僕が作ったものを採用して頂きました。
アプリケーションのアイコンなんて、普段でっかく見ることはないだろうから、でっかく載せておきます。

QuickFileType の機能を理解できたなら、アイコンの絵柄の意味が解るはず・・・
この記事では QuickFileType 3.1.2 を使用しています。
(ダウンロードリンク)
Site top page : Script factory
Download page : QuickFileType
▽同じ「タグ」が付いた関連記事