[小ネタ] QuickLookJSON を拡張子”template”に対応させよう

2015.11.17

はじめに

こんにちは、川原です。

MacにはQuick Lookというファイルの内容をチラ見するための機能があることは、訓練されたMacユーザーの方は言うまでもなく、訓練されていないMacユーザーの方もご存知のことと思います。 http://code.google.com/p/qlcolorcode/ この機能はデフォルトでは、スクリプトファイルなどテキスト系ファイルはそのまま無味乾燥に表示するだけなのですが、プラグインを導入することで色々なファイル形式を表示できるように拡張できたりします。

(下の画像はQLColorCodeプラグインを使ってrubyスクリプトを表示した例)
スクリーンショット 2015-11-14 23.11.54

で、プラグインの1つにQuickLookJSONというものがあるのですが、これはJSON形式のファイルをチラ見できるようにするものです。 JSONファイルをこんな感じ↓で表示できるようになります。

スクリーンショット 2015-11-14 23.12.54

折り畳みとかもできて中々イイ感じなのですが、このプラグインには1つ行けていない所があります。
拡張子が"json"のファイルしか表示できません

普通、JSONファイルの拡張子は"json"になっていることが多いと思いますが、AWSをよく使う人はそうでないJSONファイルを扱う機会があると思います。
そうです、CloudFormation のテンプレートファイルです。テンプレートファイルの拡張子は名前の通り"template"です。
なので、QuickLookJSONで表示できません(泣。。

今回、拡張子が"template"なJSONファイルをQuickLookJSONで表示する方法を紹介します。

方法

結論だけ記載します。
QuickLookJSON プラグイン("QuickLookJSON.qlgenerator"というディレクトリ)中の"Info.plist"というファイルに1行追加します。
このファイルの中に<string>public.json</string>という記載があるのですが、その直後に<string>com.apple.iWork.Pages.sfftemplate</string>という記載を追加してください。 変更前後の差分は下記のような感じになります。

>diff -u ./変更前/QuickLookJSON.qlgenerator/Contents/Info.plist ./変更後/QuickLookJSON.qlgenerator/Contents/Info.plist
--- ./変更前/QuickLookJSON.qlgenerator/Contents/Info.plist    2013-10-31 09:17:17.000000000 +0900
+++ ./変更後/QuickLookJSON.qlgenerator/Contents/Info.plist    2015-10-25 13:47:54.000000000 +0900
@@ -22,7 +22,6 @@
             <key>LSItemContentTypes</key>
             <array>
                 <string>public.json</string>
+                <string>com.apple.iWork.Pages.sfftemplate</string>
             </array>
         </dict>
     </array>

補足

本対応のポイントを補足します。

  1. Quick lookはUTI(Uniform Type Identifiers)1を見て、どのプラグインを実行させるか判断しているっぽい。
  2. UTIは拡張子で決まるっぽい。UTIと拡張子の紐づけは"/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist"というファイルで定義されているっぽい。
  3. 拡張子"template"に対応するUTIは"com.apple.iWork.Pages.sfftemplate"らしい。

(↓こちらは、上記Info.plistファイルをXcodeで開いた際のキャプチャです) mod_スクリーンショット_2015-11-17_10_57_25

まとめ

CloudFormationのテンプレートファイルのチラ見はQuickLookJSONを使ってみましょう。

QuickLookJSONを拡張する手順だけであれば簡単ですが、UTI等の本対応の背景的な知識を追っていくと深みにはまっていきそうな予感がしたので深追いはしていません。


  1. UTIについては、このサイトが参考になります。