DigitalColor Meterの小ネタ+Xcodeのスクリプトメニュー


iPhoneOS3.0の発表でiPhoneアプリデベロッパの方はwktkしてる所でしょうが、昨日、初めて知った小ネタエントリ。

Mac上の色をアプリで使いたい

僕はちょくちょく、「このサイトのここの色をアプリに使いたいなぁ」とか思ってアプリに反映させたりしています。
その時にDigitalColor Meterというアプリを使っています。
マウスカーソルの位置のカラーコードを表示してくれるツールでしてMacにデフォルトで入っているアプリです。

/Applications/Utilities/DigitalColor\ Meter.app

このアプリを使ってShift+Cmd+Cとかしてテキスト形式でコピーしたカラーコードをXcodeに貼り付けて、255.0 で割ったりする感じにコードを書いていました。

色を再現できると言う意味でこのアプリは便利なのですが、コードにするのが微妙に怠かったりしました。

こんな機能がついてたのかよ

そこでふと環境設定を見てみると面白そうな設定がありました。



上の環境設定をOnにして



ウインドウ真ん中の小窓をクリックするとペーストボードに
[NSColor colorWithDeviceRed:0.043137 green:0.062745 blue:0.137255 alpha:1.0]
という形式で取り込まれます。

おお! これって完全にプログラマ向けじゃないですか!

iPhone開発に使う

でも、このままだとiPhone開発では使えないのでこんなダサイRubyで修正

#!/usr/bin/env ruby

print `pbpaste`.sub(/NSColor/, "UIColor").sub(/colorWithDeviceRed/, "colorWithRed")

これを実行すると下のようなUIColorのクラスメソッドに置換します。

[UIColor colorWithRed:0.043137 green:0.062745 blue:0.137255 alpha:1.0]

上記スクリプトをそのままTerminal.appやQuickSilverから実行しても標準出力に書き出されるだけで使えません。
あのようにprintにしているのはXcodeで実行することを想定しています。

Xcodeのスクリプトメニュー

Xcodeのメニューバーの右の方に巻物のようなアイコン*1があります。

ここにはデフォルトでも様々なスクリプトが入っています。
以前書いたコメントアウトのショートカットキーもこの中のコメントアウトスクリプト*2が実行されているんです。
見てもらえばわかりますが、スクリプトメニューにはシェルスクリプトPerlPythonRubyAppleScript、Automatorのワークフローなんかも
突っ込んで実行可能です。
ショートカットキーも設定可能です。

ぶちこむ

ということで上記Rubyスクリプトをスクリプトメニューに登録してみます。

スクリプトメニュー内の「ユーザスクリプトを編集」をクリック。
プラスボタンから「新規シェルスクリプト」をクリック。
お好みの名前を付けます。

テーブルの右側の「入力」を”選択部分”にする。
「ディレクトリ」を”ホームディレクトリ”にする。
「出力」を”選択部分の後に挿入”にする。
「エラー」を”警告に表示”にします。

テキストエリアに先ほどのRubyスクリプトをコピペ。

上のスクショのように任意のショートカットキーを設定してみたりも良いかもしれません。


これでサクッとDigitalColor Meterで得たコードをXcodeに貼り付けられるようになります。

*1:スクリプトメニュー

*2:Perlスクリプト