Photoshopを自動化できるフレンズ

Photoshopを自動化できるフレンズ

らぼろぐ

イハ

お久しぶりです。フォトショのペテン師です。

今回は予告通り
Photoshopでの単調作業は全部自動化!スクリプトでPhotoshopを動かす」の巻です。

まさしくただの「作業」と化してしまうものはジャンジャン自動化しちゃおうぜ!という
スクリプト激推しな内容となっております。

そもそもアプリケーションはプログラムで動いているのは百も承知なんですけど、
10年以上ずーーーーっとマウスを使って操作していたアプリケーションを、
自分が書いたスクリプトで動かすってなんだかテンション上がるじゃないですか?

ということで、複数回同じような単調作業を繰り返す場合、
私は大抵スクリプトを作って自動化してしまいます。

ちなみに「バッチ」というものも存在します

Photoshopには「バッチ」という機能もあり、それを使って自動で動かすことも可能です。
アクションを作成し、それを選択したフォルダに入ったファイルすべてに適用するという超☆便利機能です。
プログラミングの知見がないけど自動化したい!という方は、バッチの利用をオススメします。

ならバッチ使った方が楽じゃない?と思われるかもしれませんが、ケースバイケースです。
スクリプトではより細かくさまざまな作業内容を自動化することができます。
個人的には、バッチより大変な分自由度が高い!というイメージです。
ついでに、バッチはちゃんとできてるか心配だけど、スクリプトなら安心できるという病気にかかっています。

「バッチ」に関しては、調べれば使い方はいろいろ出てくると思いますので今回はスルーします。
気になる方はググってください。バッチも便利よ!

スクリプトって何?

[ファイル]→[スクリプト]を選択し、出てくるこやつらが文字通りスクリプトです。
デフォルトでいろいろ入っています。

ちなみにこやつらはアプリケーションのディレクトリ内にあるPresets/Scriptsに入っているので、
見てみると参考になります。

一番下の[参照]をクリックすると、スクリプトのファイルが選べます。
これで自作のスクリプトを選択すれば、そのスクリプトがPhotoshopで動くのです。
個人的には、これだけで動作させられるところがいいなと思っています。

バッチ機能で自動化するときはアクションを作成すると前述しましたが、
これを他人の手元で実行させるのは割と面倒です。

手元のアクションを書き出し→書き出したアクションを相手のPhotoshopで読み込み→バッチ実行
という流れになるのですが、相手がアクションとバッチを知っていなければ
「アクション送るから、これ読み込んでバッチ実行してね!」
と簡単に押し付けることができないのです…

ところがスクリプトは、このファイル実行してね!と言えば大抵問題ありません。
相手にPhotoshopの知識がなくても、「自動化処理を実行してもらう」という作業を簡単に任せることができるのです。

すごーい!

使用できる言語

・VBScript(Winのみ)
・AppleScript(Macのみ)
・JavaScript(Win/Mac)

以上3つの言語で書くことができます。
私はJavaScriptで書いています。Win/Mac両方使えるならそっちがいいですからね。

というのは嘘で、スクリプトを作ろうと思った当時はJavaScriptがちょっと書ける程度だったからです。
結果的には両方使えてラッキー。

ちなみに拡張子はjsxです。

たのしーい!

簡単なスクリプトを書いてみよう

それでは、Photoshopで開いている画像をリサイズする処理をスクリプトで書いてみます。

preferences.rulerUnits = Units.PIXELS;
activeDocument.resizeImage(50,50);

これだけです。50px*50pxにリサイズします。

なんとなく予想がつくと思いますが、カンバスサイズを変更する際は

activeDocument.resizeCanvas(50,50);

になります。

ImageとCanvasの違いが分からない方はもう少しPhotoshopをいじりましょう。
画面解像度を変更したり、カンバスサイズを変更したりすれば違いが分かると思います。

resizeImage, resizeCanvasのようなメソッドがいくつも用意されていて、
それらを使ってPhotoshopを動かします。

psdの全レイヤーを1枚ずつ書き出すといった面倒な処理をする場合は、

1.全レイヤーを非表示にする
2.x番目のレイヤーのみを表示にする
3.「hogehoge_x.jpg」という名称で書き出し

というスクリプトを組めば、

うっかり1枚抜かしちゃった!
とか
1枚だけ名称間違えちゃった!
とか
名称つけながらアレ?今何番目だっけ?
とか
人間誰しもあるミスをすることはない訳です。
何度ミスってやり直したことか…大量の単調作業をミスなしでやるのはどうしても厳しい。人間だもの。

スクリプトは間違えません。素晴らしい。人間なんかより機械に任せよう。

ちなみに30個のレイヤーを1枚ずつ名前をつけて書き出す処理ですが、
私が手でおこなって3分ほど、確認・ミス修正含めると5分は必要でした。

が!
なんとスクリプトだと数秒で終わります!
もちろんミスなんてありません。

ちなみに公式ドキュメントがあるよ。
最初は有名なこちらのサイトが超オススメです。大変お世話になりました。

応用的小話

この記事は「Photoshopのスクリプト」と限定していますが、
他のAdobe製品でもスクリプトは使えます。Illustratorとかね。

「デスクトップにディレクトリを作成する」なんてことも可能です。
書き出した画像をそれぞれ指定したディレクトリに格納することまでスクリプトでできるのです。

スクリプト実行しただけで、そのまま何もすることなく完成!ってとこまでできる。最高。

アプリのアイコンをいろんなサイズで書き出して名前つけてディレクトリに入れて…
なーんて作業を、全部手作業でやってた昔の私を思い返すとちょっと悲しみを覚えます。

スクリプトの使いどころとまとめ

・何度も繰り返すことになる単調作業
・Photoshopの操作に慣れない人がおこなう可能性がある作業

どちらかに当てはまるなら、スクリプトを作成した方がいいかなと思います。

簡単なリサイズ・書き出しといった作業は、簡単で時間がかからないため、
スクリプトを作る方が手間だったりもしますが…

数ヶ月に1回ほどの頻度、1時間足らずで終わる作業だとしても、
それが単調作業であるならば、スクリプトを作成すべきです。

1時間、「面倒」と感じるような特に得るもののない作業とその確認に時間を使うより、
半日かかってもスクリプトを書いた方が得られるものがあるし、長期的に考えて効率的かなと。

何より「単調作業をしなくていい」というのが、精神的にいいですwそれに尽きます!

みんな自動化して幸せになろうぜ!

※2017年6月頃に書いた記事なので若干ネタが古いですがスルーでお願いします。

この記事はいかがでしたか?

writer
イハ
イハ

エンジニア

最年少・唯一の新卒というオイシイポジションに甘えているゆとり世代です。優しく指導してくださる先輩方によって生かされています。常にメモリが足りません。人生をかけて、推しにお金を振り込む推し事をしています。Photoshopが少しできます。Railsが書けません。

関連記事

ページトップへ