1101
2
0

JSXを利用した Adobe Photoshop の自動化処理について

Published at December 16, 2019 5:32 p.m.
Edited at December 16, 2019 5:34 p.m.

 
この投稿は Happy Elementsカカリアスタジオ Advent Calendar 2019 の16日目の記事です。


はじめに

カカリアスタジオの手掛けるモバイルゲームでは、2Dグラフィックのアセットが大量に必要となるため、その画像生成や出力に、多くの場合 Photoshop を用いた自動化処理(いわゆるマクロ) を利用しています。

Photoshop での自動化処理は、大きく分けて
 

  • 「アクション」を用いる方法
  • 「スクリプト(JSX)」を用いる方法

 
の2つが存在します。この記事では、アクションの特長とそれを比較した 「JSXを用いる自動化処理」 の利点と、簡単な使い方についてをまとめています。

「アクション」機能について

 
「アクション」 とは、Photoshop上での動作を記録し、他のデータやファイルに対して同様の処理を施す機能です。一般的な Photoshop の自動処理は、こちらの方法が知られています。

アクションパネルの録画ボタンを押下し、自動化したい操作を記録させることでマクロを作成できます。

メリット

なんと言っても手軽に作成し、実行できるのが最大の特長です。
また、パッチ処理を行うことで、複数ファイルに対しても実行することができます。

デメリット

作成するのはとても簡単ですが、 変更に弱い という弱点があります。

各動作の中で設定された細かい数値(例えばキャンバスサイズや、書き出し先のファイルパスなど)を後から変更するときは、 その都度動作を記録させ直す 必要があります。

さらに、記録されたアクションは 「***.atn」 という拡張子で保存されますが、バイナリ形式となっているため、テキストエディタを用いても後からの書き換えが困難です。そのため、 「1度作ったアクションを、他人の環境に合わせて使ってもらう」ということができない ということになります。

「スクリプト(JSX)」について

「JSX」とは?

 
上記のアクションのほかに、Photoshop をはじめいくつかのAdobe製品は、Javascript のようなスクリプト 「JSX(.jsx)」 によって制御を行うことが可能です。(世の中にはいろいろなJSXがあってややこしいんですが 「Adobeのやつ」「ExtendScript」 でヒットします)

作成した 「***.jsx」 ファイルを Photoshop 上で実行することで、アクションと同じように自動処理を行うことができます。

メリット

jsx ファイルはエディタを使って自由に変更ができるため、 他人の環境に移植したとしても数行ほど書き換えるだけで同じ処理を再現できます。

また、Javascript の知識があれば、(たとえば任意のデータを入力させた上でそれに沿った処理を行うなど) アクションではできないような動作を行う ことができます。

使用できる関数やサンプルなど、以下のサイトでとても詳しく紹介されているので、少し複雑な処理を行いたいときは非常に参考になります。

 
【Adobe Photoshop CS6自動化作戦】

デメリット

一方で、スクリプトを用意しなければならないため、プログラミングの知識が必要になったりと、手軽さは失われてしまいます。

それでもJSXを手軽に使いたい

なんと、Adobe から公式に Photoshop 上で行ったあらゆる動作を JSX の形式でログ出力してくれるプラグイン があります。

「ScriptingListener プラグイン」

 
【Photoshop のダウンロード可能なプラグインおよびコンテンツ - ScriptingListener プラグイン】

 
プラグインを入れさえすれば、あとは自動的にログを出力してくれます。あとは、ログファイルより任意の箇所をコピー & ペーストし、jsxファイルとして読み込むことで処理を実行できます。

まとめ

  • Photoshop の自動処理は「アクション」と「jsx」を用いた方法があります
  • それぞれに長所・短所があるので、用途に応じて使い分けると効率的
  • jsx の作成には、Adpbe 公式のScriptingListener プラグインがとても便利!