見出し画像

Cocoa Scripting Course #7 NSColor執筆中

電子書籍の執筆や企画に行き詰まったら? もちろん「別の本を書く」! これが絶対正義(当社比400%増しの大正解)。 


Cocoa Scripting本シリーズ

Piyomaru Software、いえ、四六時中書いているのでPiyomaru Publishingだなどと言っておりますが……その中で「たぶん、一番むずかしい」と言われているのが「Cocoa Scripting Course」シリーズ。

ここで誤解していただきたくないのは、「挑んでいるテーマ」が難しいということだけで、「本の内容が難解」というわけではないということです。

各書には冒頭に「入門編」と「実践編」を用意し、各巻どの本から読み始めても内容を理解できるように構成しています。

また、なるべく文章で説明せず、「図」で説明しています。長々と文章で説明したりはしません。

そして、各APIの説明もわかりやすく表記。AppleのWebサイトに掲載されているような専門用語の塊で、かつ気取ったレイアウトにしているせいで「さっぱりわかんねえよ?!」なAPI解説はいたしません。

各APIのパラメータはまる付き数字で記述。長々と記述しないで、さっぱり表記。

そのうえ、すぐに試して動かせるかんたんなサンプルコードをもれなく掲載。本にもアーカイブ収録しているので、手で入力しなくてもすぐ動かして試せます

NSColorについての解説を行う7冊目の内容は?

「なにそれ、ただの色指定じゃーん」と思ったそこのあなた。絶対に違います! 甘すぎです。NSColorを使えるというのは、そんな生やさしいことではないんです。

しかも、AppleScriptから使える。このすごさを伝えるためにこの1冊はあるんです。

いいですか? AppleScriptからNSColorが使えると、色の計算ができるんです。

Aという色とBという色の色差、色の違い、色同士の距離が測れます。専門用語で「ΔE」(デルタイー)と言うのですが、色同士の距離が測れるなんてすごくないですか?

色の距離が測れるということは、「近似色がどれかを計算できる」ことになります。適当に「だいたいこれかな」と思った色が、何かの色見本帳のどの色に近いかという計算ができてしまいます。近似色というのは、「一番距離が近い色」にほかなりません。色の距離が計算できれば、どれが一番近いかは、総当たりで距離計算して数字が小さい→大きい順に並べ替えれば一目瞭然です。

さらに、色から明度を求める計算ができます。これも「大した内容ではない」と思いましたね? いいですか? ランダムで選んだ5色で、見ず知らずの塗り絵(5色を指定する)を塗ることになったらどうします?

え、適当に塗っておけばいいじゃん、どうせランダムなんだろ? ですって???

何を舐めた真似してくれるんです? そんなことしたら、ひよこさんの目玉が真っ赤に塗られて、瞳の部分が真っ黒ですよ!! 悪魔のひよこさんになって、お子様ガン泣きですよ!!!

見ず知らずの塗り絵に対して、ランダムな塗り方をすると生理的に気持ち悪い塗り方になったりする(左) 双方の明度を計算して、明度順にならべかえて塗ると、納得できる塗り方(右)に!


ランダムxランダムで塗ったら不自然で気持ち悪い塗り方にしかならないので(上図左)、そんなものを一般ユーザーに見せられるわけないじゃないですか!

そこで、塗り絵の方で期待している色の明度をあらかじめ計算しておき、ランダムで取得した色についても明度を計算。明るい順から暗い順に並べ替えておきます。この順番を合わせて塗ることで、どんな気持ち悪い色の組み合わせでも、なんとなくそれっぽい仕上がりになるんです。

これが、色の明度を計算できるということなんです。

さらにさらに、NumbersやExcelといった表計算ソフト(AppleScriptに対応していればどんなものでもいいのですが)で、色の名前とRGB値を入力しておいて、その内容をAdobe Swatch Exchangeファイルに書き出せます。

おおぜいで作業を行なって、使用色の統一をしなければならない場合に、このASEを書き出して共有することになるわけですが(InDesign、Illustrator)、それを表計算ソフトから直接AppleScriptで書き出せます。これが何十、何百、何千もの色指定がある場合でも、手作業などは必要ありません。

Adobe Swatch Exchangeファイル書けるんだ、超スゲーと叫んでしまいました(Cocoaの機能だけでは完結しないのですが)。

こうした内容も、サンプルScriptつきですべて収録しています。

NSColor初級用途、上級用途

色処理(基礎)

choose colorコマンドで表示されるカラーピッカーの使い方
choose colorコマンドで指定したRGB色でNSColorを作成
Numbers書類上に記入したRGB値を色プレビュー
NSColorからRGBAの各要素を取得
RGB色からHSBA色に変換
NSColorからHSBAの各要素を取得
NSColorから色空間名を取得
鉛筆(クレヨン)ピッカーに登録されている色名を取得

色処理(上級)

色から明度情報を取得
画像の指定座標のピクセルの色情報を取得
AppleScriptの構文色分け設定の書式情報読み取り
HTML色コードの取り扱い
CIColorを作成してCoreImageフィルタを実行
ざっくりとした色判定(カラードメイン処理)
色差(ΔE)を計算する
色名を推定(dbColNamesKit)
色のポスタライズ
頻出色の抽出(ColorCube)
2つの色の合成
輝度をMAXにした色を取得(Colours)
Adobe Swatch Exchangeファイル作成
画像の空白判定

いたれりつくせりの資料編

NSColorの内容だけ説明して、その他の本を買わないとAppleScriptの内容なんかわからないようになってるんじゃないの? と思ったそこのアナタ! いいでしょう、数百ページにおよぶ資料編の内容もリストアップします。

Cocoa Scripting関連のAppleScript命令

Cocoa ScriptingとScript Object

AppleScript Droplet
サードパーティ製FrameworkやAppleScript Librariesを呼ぶ

AppleScript mini reference

macOS搭載 AppleScript関連ドキュメント
AppleScript関連の情報源
macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説(変更点、バグなど)
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
Claris FileMaker Pro上のAppleScriptランタイムの特徴
FileMaker Pro上でのCocoa Scriptingの注意点

AppleScript 各種ランタイム環境および関連ツール

AppleScript予約語一覧

エラーコード表

仕上がりページ数は?

毎度毎度、こんなすごい内容を書き上げるので(1、2章と資料編は各書共通です)、1冊書くと干上がってしまうのですが、だいたい400〜500ページぐらいです。



この記事が気に入ったらサポートをしてみませんか?