title1
navigation bar3



[ 1 | 2 | 3 |4 |5 | 6 | 7 | 8-p1 | 8-p2 | 8-p3 | 9 | 10 | 11 | 12 ] [日経マック連載Index ]


連載[8-2] 難攻不落?Photoshop自動化の秘密兵器


《 PhotoMaticでPhotoshopがオートマチックに 》
このソフトはどういう仕組みなんですか。表1には「Photoshop専用」とありますが。
先生
PhotoMaticは、Photoshopのプラグインとスクリプティング機能追加で構成される(図2)。これがプラグインとして組み込まれることで、Photoshopが直接いくつかのAppleScriptを受け取れるようになる。要するに「tell application "Adobe Photoshop"」 でスクリプトを書き始めることができるんだよ。
図2 PhotoMaticの仕組み
図2PhotoMaticの仕組み
それはすごいですね。早くスクリプトの書き方を教えてください。
先生
まぁ、そうあせらずに。まずこのスクリプトを見ていただこうか。 これは、PhotoMaticが自動的に作ったスクリプトなんだ。
PhotoMaticがスクリプトを書くんですか?
PhotoMaticが自動的に作ったスクリプト
TOP

《 実際に行った操作を記録/再生 》
先生
そうなんだ。PhotoMaticはPhotoshop上で実際に行った操作を記録してスクリプトにしてくれる「レコーディング機能」があるんだ。上のスクリプトは、実際にレベル補正を行った時の動作を記録したものだよ。
よくみると、select menuとかclickとか、それらしい操作が書いてありますね。
先生、このレコーディング機能はPreFab Playerにはないんですか。
先生
PreFab Playerにはない。だが逆に、PhotoMaticには座標やボタンIDを調べるような機能がない。
一長一短ですね。
PhotoMaticは操作の記録/再生が主たる目的、一方のPreFab Playerは自分であれこれ細工しながらスクリプトを作り上げていくのに向くね。
レコーディングはどうやって行うんですか。
先生
PhotoMaticプラグインがインストールされたPhotoshopは、こんなメニューが追加される。
PhotoMaticをインストールすると追加されるメニュー
「Start Recording」なんて項目がありますね。
先生
これを選択すると、それ以降のPhotoshopの操作が密かに記録されていくんだよ。そして「Stop Recording」を選択すると(レコーディング中は、「Start Recording」のメニューが「Stop Recording」に変わる)、記録した操作をAppleScriptのスクリプト・ファイルとして保存してくれる。
操作を再生するのは、もしかして「Play」ってのを選べばいいんでしょうか。
先生
その通りだ。「Play」で保存したファイルを選択するとスクリプトが実行される。AppleScriptを知らなくても再生できるんだから初心者にはいいよね。
「QuicKeys」という操作を記録するユーティリティーがありますが、それと同じですか。
先生
まぁ、イベントを記録/再生するという点では同じだが、AppleScript対応という点ではPhotoMaticの方が進んでいるね。単純に再生するだけでなくて、スクリプト編集プログラムでいろいろ加工できるからね。
どんな風に加工するんですか。
先生
こんな風にだ。
スクリプト編集プログラムで加工したスクリプト
TOP

《 一歩踏み込むと高等テクニックの世界 》
え〜! スクリプトが3倍に増えてますよ〜。さっきより全然難しいじゃないですか。
先生
大丈夫、大丈夫。レコーディングしたものにちょっと“おまじない”を付けただけだから。
そう言えばPhotoMaticがレコーディングしたスクリプトには「tell application "Photoshop 3.0J"」がないですよね。それなのに再生できるんですか。
先生
PhotoMaticの「Play」メニューで再生する限りは問題ない。でもレコーディングしたスクリプトをスクリプト編集プログラムで実行するためには、「tell appliation "Photoshop 3.0J"」が必要になる。それにいろいろと“おまじない”を付ける必要がある。
さっきから「おまじない」「おまじない」って、何が「おまじない」なんですか。
先生
まぁ要するに、レコーディングしたものをスクリプト編集プログラムで実行する時に付け足すスクリプトは、“おまじない”のように決まっているから、1回覚えれば後は簡単だってことさ。まず、このスクリプトが3つのサブルーチンからなるのは分かるよね。
え〜と、この3つですね。
 on Level_change 〜 end Level_change
 on run 〜 end run
 on WaitPatiently 〜 end WaitPatiently
先生
Level_chageの中身は、さっき記録したスクリプトそのものだ。
本当だ。そっくりそのままですね。
先生
ほかの2つがミソなんだな。
サブルーチンばかりで本体がありませんが。
先生
おっとっと、実はon runというサブルーチンが本体のスクリプトなんだ。この名前のサブルーチンがあると、それが最初に呼び出される。この話は今までしなかったかな。
そのスクリプト本体を見ると、PMGrabSemaphoとか訳の分からない命令が並んでいますね。こんなの僕には理解不能ですよ。
先生
よし分かった、意味は説明しない。PhotoMaticで記録したスクリプトを「Play」を使わないで実行できるよう改良するには、いつもこのように書くんだと覚えてくれ。黙ってこのスクリプトを写して、記録した部分だけ置き換えれば、とにかくちゃんと動くものが出来上がる。ただPhotoMaticにはちゃんと解説やサンプルが付いているから、追々ちゃんとした意味とかも勉強してくれよ。
 on 記録したサブルーチン()
  (記録した内容)
 end 記録したサブルーチン
 on run
  tell application "Adobe Photoshop 3.0J"
   activate
   PMGrabSemaphore
   my WaitPatiently()
   do script 記録したサブルーチン
   my WaitPatiently()
   PMGiveSemaphore
 end tell
 end run
あのう、「do script Level_change」ってのは、サブルーチンを呼び出すのと違うんですか。
先生
うっ、ここがミソ、高等テクニックなんだな。このように書くと、サブルーチンはスクリプト編集プログラムではなくて、Photoshop(PhotoMatic)内で処理されるんだ。例えば「type」のように、AppleScript標準とPhotoMaticとで同じ名前コマンドある場合、普通だとAppleScript標準が優先されてしまう。それを防ぐための措置だよ。それにこうすると、サブルーチン内の命令がまとめてPhotoshop(PhotoMatic)に送られるので、速度も上がるんだ。
???
先生
まぁ、こうした動作原理を完璧に理解するには、プログラマー・レベルの知識が必要だけどね。
その辺にしておきましょうよ。結論としては、PhotoMaticはAppleScriptが使えるものの、単純に「Play」した方がはるかに簡単だってことが分かりました。
先生
そうだね。Photoshopを実際に使用しながら、同じ作業を繰り返す時に便利だと言える。同じフィルターをいくつもの画像にかけるとかね。例えば低解像度データでフィルターをテストして、決定したフィルター操作を記録して、複数の高解像度画像に適用するとかね。PhotoMaticには、複数のスクリプトを連続して再生するバッチ機能もあるから、そういう利用方法は作業時間の低減につながるね。
TOP

《 あらゆるソフトを自動化するTempo II plus 》
でもPhotoMaticってPhotoshop専用ですよね。同じようなことが、ほかのアプリケーションでもできるといいんですけど。
先生
Tempo II plusがまさにそれなんだ。このソフトはPhotoMaticのようなことをすべてのアプリケーションで行うもの、と考えればいいんじゃないかな。Tempo II plusをインストールすると、Commandキーのマークがメニューに現れる。PhotoMaticの「Record」メニューと同じようなもので、ここから操作の記録開始/終了/ 再生を行える。
TempoUPlusをインストールするとCommandキーのマークがメニューに現れる
操作を記録すると、AppleScriptのスクリプト・ファイルが作成されるんでしょうか。
先生
いや。Tempo II plusで記録した結果は、このように独自のマクロ・ファイルになる。英語版なんでちょっと文字化けし てるけどね。
 
Tempo II plusで記録した結果
ここに書いてあるコマンドはAppleScriptなんですか。
先生
そうではなくて、Tempo II plus独自のマクロ言語だ。AppleScriptとは全く関係ないもので、Tempo II plusでのみ編集/再生できる。
それでは、AppleScriptの立場はどうなるんですか。
先生
僕らはAppleScriptでもって、記録/保存したマクロを実行してくれるようTempo II plusにお願いするんだ。
例えば「level_change」という名前のマクロを再生する場合は、こんなスクリプトになる。
level_changeマクロを実行するAppleScript
あれっ、ここでは「!Tempo Assist」とかいうアプリケーションに命令を送っていますよ。
先生
!Tempo Assistはシステム機能拡張として組み込まれたTempo II plus本体とAppleScriptとの間をとりもってくれるアプリケーションなんだ。
なるほど。Do Scriptを用いて「お願いする」というのはPhotoMaticに似ていますね。
先生
そう、AppleScriptにとってみれば、後は処理が終わるのを待つだけというわけだ。実はAppleScriptも楽をしてるね。

TOP

AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp

主催 株式会社フォーサイト   後援 アップルコンピュータ株式会社

(c)1996-2010 The ForeSight Inc. All rights reserved.Appleは、米国アップルコンピュータ社の登録商標です。
AppleScriptは、米国アップルコンピュータ社の商標です。
その他記載の会社名・製品名・ソフトウェア名は一般にその会社の登録商標または商標です。