|
《 PhotoMaticでPhotoshopがオートマチックに
》
|
|
|
」
|
このソフトはどういう仕組みなんですか。表1には「Photoshop専用」とありますが。 |
|
先生
|
PhotoMaticは、Photoshopのプラグインとスクリプティング機能追加で構成される(図2)。これがプラグインとして組み込まれることで、Photoshopが直接いくつかのAppleScriptを受け取れるようになる。要するに「tell application "Adobe Photoshop"」 でスクリプトを書き始めることができるんだよ。 |
|
図2 PhotoMaticの仕組み
|
|
|
、
|
それはすごいですね。早くスクリプトの書き方を教えてください。 |
|
先生
|
まぁ、そうあせらずに。まずこのスクリプトを見ていただこうか。 これは、PhotoMaticが自動的に作ったスクリプトなんだ。 |
|
」
|
PhotoMaticがスクリプトを書くんですか? |
![]() |
|
|
《 実際に行った操作を記録/再生
》
|
||
|
先生
|
そうなんだ。PhotoMaticはPhotoshop上で実際に行った操作を記録してスクリプトにしてくれる「レコーディング機能」があるんだ。上のスクリプトは、実際にレベル補正を行った時の動作を記録したものだよ。 | |
|
、
|
よくみると、select menuとかclickとか、それらしい操作が書いてありますね。 | |
|
」
|
先生、このレコーディング機能はPreFab Playerにはないんですか。 | |
|
先生
|
PreFab Playerにはない。だが逆に、PhotoMaticには座標やボタンIDを調べるような機能がない。 | |
|
、
|
一長一短ですね。 PhotoMaticは操作の記録/再生が主たる目的、一方のPreFab Playerは自分であれこれ細工しながらスクリプトを作り上げていくのに向くね。 |
|
|
」
|
レコーディングはどうやって行うんですか。 | |
|
先生
|
PhotoMaticプラグインがインストールされたPhotoshopは、こんなメニューが追加される。 | |
|
||
|
、
|
「Start Recording」なんて項目がありますね。 | |
|
先生
|
これを選択すると、それ以降のPhotoshopの操作が密かに記録されていくんだよ。そして「Stop Recording」を選択すると(レコーディング中は、「Start Recording」のメニューが「Stop Recording」に変わる)、記録した操作をAppleScriptのスクリプト・ファイルとして保存してくれる。 | |
|
」
|
操作を再生するのは、もしかして「Play」ってのを選べばいいんでしょうか。 | |
|
先生
|
その通りだ。「Play」で保存したファイルを選択するとスクリプトが実行される。AppleScriptを知らなくても再生できるんだから初心者にはいいよね。 | |
|
、
|
「QuicKeys」という操作を記録するユーティリティーがありますが、それと同じですか。 | |
|
先生
|
まぁ、イベントを記録/再生するという点では同じだが、AppleScript対応という点ではPhotoMaticの方が進んでいるね。単純に再生するだけでなくて、スクリプト編集プログラムでいろいろ加工できるからね。 | |
|
、
|
どんな風に加工するんですか。 | |
|
先生
|
こんな風にだ。 | |
![]() |
||
|
《 一歩踏み込むと高等テクニックの世界
》
|
|
|
」
|
え〜! スクリプトが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には、複数のスクリプトを連続して再生するバッチ機能もあるから、そういう利用方法は作業時間の低減につながるね。 |
|
《 あらゆるソフトを自動化するTempo
II plus 》
|
|
|
、
|
でもPhotoMaticってPhotoshop専用ですよね。同じようなことが、ほかのアプリケーションでもできるといいんですけど。 |
|
先生
|
Tempo II plusがまさにそれなんだ。このソフトはPhotoMaticのようなことをすべてのアプリケーションで行うもの、と考えればいいんじゃないかな。Tempo II plusをインストールすると、Commandキーのマークがメニューに現れる。PhotoMaticの「Record」メニューと同じようなもので、ここから操作の記録開始/終了/ 再生を行える。 |
![]() |
|
|
、
|
操作を記録すると、AppleScriptのスクリプト・ファイルが作成されるんでしょうか。 |
|
先生
|
いや。Tempo II plusで記録した結果は、このように独自のマクロ・ファイルになる。英語版なんでちょっと文字化けし てるけどね。 |
![]() |
|
|
、
|
ここに書いてあるコマンドはAppleScriptなんですか。 |
|
先生
|
そうではなくて、Tempo II plus独自のマクロ言語だ。AppleScriptとは全く関係ないもので、Tempo II plusでのみ編集/再生できる。 |
|
」
|
それでは、AppleScriptの立場はどうなるんですか。 |
|
先生
|
僕らはAppleScriptでもって、記録/保存したマクロを実行してくれるようTempo
II plusにお願いするんだ。 例えば「level_change」という名前のマクロを再生する場合は、こんなスクリプトになる。 |
![]() |
|
|
」
|
あれっ、ここでは「!Tempo Assist」とかいうアプリケーションに命令を送っていますよ。 |
|
先生
|
!Tempo Assistはシステム機能拡張として組み込まれたTempo II plus本体とAppleScriptとの間をとりもってくれるアプリケーションなんだ。 |
|
、
|
なるほど。Do Scriptを用いて「お願いする」というのはPhotoMaticに似ていますね。 |
|
先生
|
そう、AppleScriptにとってみれば、後は処理が終わるのを待つだけというわけだ。実はAppleScriptも楽をしてるね。 |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp