こんにちは、イマジカデジタルスケープの伊藤和博です。
今回のブログは、今年最後のブログとなりました。1年間ブログを見ていただき、またトレーニングをご受講いただいたみなさま、誠にありがとうございました。
今年最後のブログは、JavaScriptを使用して、Photoshop上での操作を自動化するAdobe Extendscript Toolkit CCについてご紹介します。なお、同様の操作は、Illustrator等、他のAdobe製品でも使用可能です。JavaScriptの学習にもなるはずですので、ぜひこの機能を使ってみてください。
なお、PhotoshopやIllustratorでJavaScriptを使用する場合、Webサイト上で使用するJavaScriptのメソッド等やその使い方を理解している方でも、PhotoshopやIllustratorで使用する独自オブジェクトや独自メソッドを覚える必要があります。ただし、JavaScriptを使ったことがある方であれば、すでに用意されているマニュアル等を参考に、自分で作っていくこともそう難しいことでは無いかと思います。サンプルのソースには、非常に便利な機能も用意されているため、ぜひ使い方を覚えてみてください。


●さっそくやってみよう!


まずは、JavaScriptそのものを書ける方、さらにPhotoshopやIllustrator上で出てくる独自オブジェクトや独自メソッドの理解がある方は、通常のテキストエディタで書いて保存し、そのままPhotoshopやIllustratorでJavaScriptを読み込んでしまえばよいですが、今回は、アプリケーションフォルダの中にAdobe Extendscript Toolkit CC、というアプリケーションを使用して実行してみます。
このアプリケーションを使用すると、ソースの入力、保存、事前のデバッグ、各アプリケーション上で実行させた場合にどのように動作するかをこのアプリケーション側からコントロールすることが可能です。
なお、CS6をお使いの方は、アプリケーションフォルダ→ユーティリティフォルダ→Adobeユーティリティ-CS6の中に、Adobe Extendscript Toolkit CS6が入っています。
まず、アプリケーションを起動すると以下のような画面になります。




左上のプルダウンメニューから、JavaScriptを実行させる対象のアプリケーションを選択し、JavaScriptを書いた後、再生ボタンをクリックすると、対象のアプリケーション上で、JavaScriptが実行されます。




このJavaScriptをファイルとして保存し、各アプリケーション側から読み込むと、そのJavaScriptが実行される、というように使用します。
なお、実行するアプリケーションは事前に立ち上げておく必要があります。




●どのようなことができるか?


サンプルとしていくつかのJavaScriptをご紹介します。Adobe製品独自のJavaScriptオブジェクトや独自メソッドがありますが、これらは以下のリファレンスにその意味が掲載されています。すべて英文ですが、JavaScriptの学習をされたことがある方は、どの部分をどのように書き換えればどのようになるか?のおおよその見当はつくかと思います。


以下がサンプルのソースです。Adobe Extendscript Toolkit CCとPhotoshopを起動し、以下のソース部分をコピーペーストして実行してみてください。

○幅200px、高さ100px、解像度72dpiの「練習用」というRGB画像を新規作成する。



app.documents.add(200, 100, 72, "練習用", NewDocumentMode.RGB);




○その画像にレイヤーがいくつあるかをカウントし、アラートで返す。

※複数のレイヤーがある画像を開いた状態で実行します。


var layerNum = app.activeDocument.layers.length;
alert(layerNum);




○カラーサンプラーツールで設定したサンプルポイントを全て削除する。

※カラーサンプラーツールで、画像の任意の箇所でクリックし、サンプルポイントがある画像を開いた状態で実行します。


app.activeDocument.colorSamplers.removeAll();





○カウントツールで入れたカウンター番号を、全て削除する。

※カラーサンプラー同様、カウントツールでカウンターがある画像を開いた状態で実行します。


app.activeDocument.countItems.removeAll();




○Photoshopで使用できるフォントの数をアラートで返す。



alert(app.fonts.length);





○全ての画像を保存せずに閉じる(保存しますか?で、いいえを選択して閉じた場合と同じ扱い)

※複数の画像を開いた状態で実行します。


while (documents.length > 0){
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}





○「あいう」という名前のレイヤーカンプに、「かきく」というコメントを自動入力する。

※レイヤーカンプとは、レイヤーの表示状態に対して名前をつけて保存したもののことをいいます。複数のレイヤーがある画像で、いくつかのレイヤーのみを表示しておき、ウインドウメニューからレイヤーカンプを選択してレイヤーカンプパネルを表示し、そのレイヤーカンプに「あいう」という名前を設定しておきます。


var layercompRef = app.activeDocument.layerComps.getByName("あいう");
layercompRef.comment = "かきく";




○パスパネルに作成した「作業用パス」を、選択した状態にする。

※ペンツール等で任意のパスを作成し、パスパネル上にある作業用パスが選択されていない状態で実行します。


var currentPathItem = app.activeDocument.pathItems.getByName("作業用パス");
currentPathItem.select();




○パスとブラシを使って水平線を描く(functionを使った例)

※幅800px、高さ200px程度の新規画像を作成した状態から実行します。
現在の画像の、X座標Y座標各100pxのところから、X座標500px、Y座標100pxのところまで作業用パスを作成し、「水平線」という名前でパスを保存した後、パスの境界線をブラシツールで(現在選択しているブラシの形状と直径サイズ、描画色で)作成し、その後パスを削除する。


function drawLine(doc, start, stop) {
var startPoint = new PathPointInfo();
startPoint.anchor = start; startPoint.leftDirection = start;
startPoint.rightDirection = start; startPoint.kind = PointKind.CORNERPOINT;
var stopPoint = new PathPointInfo();
stopPoint.anchor = stop; stopPoint.leftDirection = stop;
stopPoint.rightDirection = stop;
stopPoint.kind = PointKind.CORNERPOINT;
var spi = new SubPathInfo();
spi.closed = false;
spi.operation = ShapeOperation.SHAPEXOR; spi.entireSubPath = [startPoint, stopPoint];
var line = doc.pathItems.add("水平線", [spi]); line.strokePath(ToolType.BRUSH); line.remove();
}
drawLine(app.activeDocument, [100,100], [500,100]);





●アクションとの違い


Photoshopにはアクションとバッチの機能があるため、この機能を使用しなくても一連の操作を自動化することは可能ですが、Adobe Extendscript Toolkit CCを使ってJavaScriptで処理するメリットは、反復処理やループ処理にあります。
どのような動作でもそうですが、例えば、「同じ動作を」「1つの画像に」複数回繰り返す、ということをする場合、アクションで行った場合は、一度録画しておいたアクション上での操作をアクションパネル上でその回数分だけ複製する(またはその回数分だけ実際にやってみて録画する)ということが必要です。JavaScriptで処理すると、for文の繰り返し条件を指定するだけで指定回数の繰り返しができ、またwhileループ文に書くことで無限ループも可能です。仮に無限ループになった場合でも、ブラウザと違って暴走することはなく、Adobe Extendscript Toolkit CC上の停止ボタンをクリックするだけで、いつでも手動で処理を中断することも可能、ということになります。

年末年始にお時間のある方は、ぜひどのようなことができるか、ぜひチャレンジしてみてください。

それでは、今年一年間、ブログを読んでいただいてありがとうございました。
ぜひ楽しいクリスマスを!そして2014年、よいお年をお迎えください!
また来年も、よろしくお願い申し上げます。



JavaScriptやPhotoshop CCの使い方をもっと詳しく知りたい方は
JavaScriptの基礎知識
Photoshop CC の使い方・基本トレーニングの受講がオススメです!

▼JavaScriptの基礎知識

▼Photoshop CC の使い方・基本トレーニング





イトウ先生が、Twitterを始めました!
みなさんもぜひ、フォローしてくださいね!

http://twitter.com/itoh_sensei




■■イトウ先生のTipsNote(実践・新機能コンテンツ)アーカイブ■■


基本トレーニングの受講後に、さらに学習しておきたい内容やTips、新機能を、隔週1回(月2回)で公開しています。


●Macintosh基本操作編(意外と知らない操作も多い!?)
○入力モードや変換のショートカット
○デスクトップで使えるショートカット
○階層やファイルパスの把握に便利な機能

●Illustrator(AI)
○アウトライン化と孤立点の削除について
○データを軽く作る方法について
○シンボルの親子関係について・その1
○編集モード
○シンボルの親子関係について・その2
○カラーパネルの「使えるショートカット」
○カラー一括変換のグローバルスウォッチとは
○配置した画像のすばやい編集方法
○CS5新機能01:すべてのアートボードにペースト
○CS5新機能02:内側描画と背面描画
○CS5新機能03:Web・インタラクション用のデザイン
○CS5新機能04:遠近描画
○CS5新機能05:線パネルと線幅ツール
○AIのテキストのアピアランス
○SVGインタラクティビティ
○CS6の新機能:線へのグラデーションと不透明マスク・矩形以外のパターン図柄登録
○Illustrator CS6のCreative Cloudメンバー限定機能
○Illustrator CCの新機能
○Illustrator CCの新機能:CSSプロパティ

●Photoshop(PS)
○消しゴムツールの活用
○ななめの画像をまっすぐにする方法
○自然な合成テクニック・角版
○自然な合成テクニック・切り抜き画像
○画像合成後の便利なショートカット
○調整レイヤー
○レイヤーパネルの不透明度と塗りについて
○不透明度のショートカット
○CS5新機能01:「コンテンツに応じる」機能
○CS5新機能02:絵筆ブラシと混合ブラシ
○CS5新機能03:人の記憶に近い画像・HDRについて
○CS5新機能04:パペットワープ
○CS5新機能05:3Dオブジェクトとアニメーション
○美しいモノクロ画像の作り方
○境界部分をきれいにカラー変更する方法
○Photoshop CS6 特集・その1(全3回)
○Photoshop CS6 特集・その2(全3回)
○Photoshop CS6 特集・その3(全3回)
○2つの画像の違いを調べる、差の絶対値
○Photoshop CS6だけで作るビデオ・その1
○Photoshop CS6だけで作るビデオ・その2
○Photoshop CS6だけで作るビデオ・その3
○CSSの読み込み(スウォッチカラー)と、 CSS書き出し(CSSをコピー)について
○条件付きアクション
○Photoshop CCの新機能
○Photoshop CCの新機能:Generator(ジェネレーター)
○PhotoshopをJavaScriptで操作するAdobe Extendscript Toolkit CC

●FLASH(FL)
○Illustratorだけでできる、Flashアニメ
○CS5新機能01:IKボーンスプリングでバネアニメ
○CS5新機能02:コードスニペットパネルで簡単ActionScript3.0
○CS5新機能03:パターン描画ツール
○CS5.5新機能01
○CS6の新機能01:Toolkit for Create JS・その1
○CS6の新機能01:Toolkit for Create JS・その2

●InDesign(ID)
○CS5新機能01:マルチステートを使った、IDからFlashアニメの作り方
○CS5新機能02:アニメーションパネルとタイミングパネルを使った、IDのモーションプリセット
○CS5新機能03:キャプションの自動作成機能
○CS5新機能04:オブジェクトの間隔と配置
○CS5新機能05:画像一括貼り替え
○CS5.5新機能01:EPUB書き出し
○CS5.5新機能02:アンカー付きオブジェクト
○データ結合(メールマージ)
○CS6の新機能1:レイアウト・リキッドレイアウトと、ePub書き出し
○CS6の新機能2:コンテンツ収集ツール・コンテンツ配置ツール・リンクとして配置
○CS6の新機能3:「HTMLを挿入...」の機能からGoogleMapの読み込みについて
○InDesign CCの新機能:QRコードを生成
○InDesign CC :タグを割り当て

●Dreamweaver(DW)
○CS5新機能01:新しいサイト定義と、CSSスターターレイアウト
○CS5新機能02:HTML5 Pack
○CS5新機能03:スマートフォン検証・CSS3のメディアクエリー
○CS5新機能04:ブラウザ検証便利ツール・Adobe BrowserLabについて
○CS6の新機能1:可変グリッドレイアウト
○CS6の新機能2:jQuery Mobile 1.0 と jQuery Mobile スウォッチ
○CS6の新機能3:CSSトランジション
○CS6の新機能4:HTML5ビデオ
○CS6の新機能5:Webfontsの使い方
○Dreamweaver CCの新機能:jQuery UI
○Dreamweaver CCとCS6での、CSSの作り方の違い

●Edge
○Adobe Edge(Preview版)
○Adobe Edge Code(プレビュー版)のご紹介
○Adobe Edge Reflow(プレビュー版)のご紹介

●AfterEffects(AE)
○CS5新機能01:ロトブラシ
○CS5新機能02:新しい便利なショートカット
○CS5 パペットアニメーションと、時間反転キーフレーム
○CS5 ビデオや画像の型抜きについて「トラックマットとステンシルアルファ」
○CS5 動画の動きを捕らえて、他のレイヤーに適用する「モーショントラック」
○CS5.5 ワープスタビライザー
○CS5.5 ブラー・互換・タイムコード
○CS5.5 「シャドウを落とす・受ける」機能
○CS5.5 エクスプレッション・その1
○CS5.5 エクスプレッション・その2
○CS5.5 エクスプレッション・その3
○CS6の新機能1:ベクトルレイヤーからシェイプを生成
○CS6の新機能2:3Dカメラトラック
○AfterEffects CCの新機能:ワープスタビライザーVFX
○AfterEffects CC・レンダリングの変更点
○AfterEffects CCの新機能:マスクをトラック
○AfterEffects CCの新機能:ピクセルモーションブラー

●FireWorks(FW)
○CS5新機能01:Device Centralと連携した、スマートフォンのプロトタイプ
○CS5新機能02:divのタイル背景の強化
○レイヤーパネル
○CS6の新機能:CSSプロパティパネル・CSSスプライト書き出し・jQuery Mobile テーマ

●その他
○CS5.5:Adobe Audition「サウンドのカットとフェードイン、フェードアウトの設定」
○CS5.5:Adobe Audition「マルチトラックを使ったサウンド操作」