>   >  COYOTE流テクニカルTIPS:TIPS 07:【Photoshop】PythonによるPhotoshop操作
TIPS 07:【Photoshop】PythonによるPhotoshop操作

TIPS 07:【Photoshop】PythonによるPhotoshop操作

Step 04:Pythonを使うメリット

そもそもPythonを使うメリットについては、人や環境によってケース・バイ・ケースで、JavaScriptに慣れた人が無理にPythonを使う必要はないと思います。ただ、筆者や当社スタジオに関していうと、「Pythonが最も使い慣れた言語なため、メリットが高かった」というわけです。では、Pythonの「使いやすさ以外のメリット」についていくつか紹介します。


メリット 1:スクリプトを置く場所を選ばない

JSXファイルは、Photoshopのメニューから表示するためには決まったフォルダに入れなければなりません。単純で1ファイルで実行できるものは下記のフォルダに入れる必要があります。

C:\Program  Files\Adobe\Adobe  Photoshop  XX\Presets\Scripts\

これをPhotoshopのバージョンごとにコピーしないと大変です。JSXファイルはPhotoshop内にドラッグ&ドロップすれば場所を選ばずに使うこともできますが、あまり一般的ではありません。

エクステンションを使う場合も、TIPS 04のStep 02で挙げた通りに下記のフォルダに様々なデータと一緒に入れなければなりません。

C:/Users/%USERNAME%/AppData/Roaming/Adobe/CEP/extensions/"IDと同じフォルダ"

しかし、Pythonからはあくまで起動中のPhotoshopを外部から操るので、ソースファイルはどこにあっても実行できます。極端なことを言えば、デスクトップに置いていても実行できます。チームでソースファイルをSubversionで一元管理する場合には、どこにでも置けるこのアドバンテージは大きいです。


メリット 2:Python専用のモジュールを使える

Pythonには様々な使いやすいモジュールが存在しています。「numpy」などの便利モジュールをはじめ、UI作成に便利な「Qt Designer」、Pythonをexeファイルにまとめられる「pyinstaller」を使うことができます。特にMayaにも同梱されている、お馴染みのQt DesignerでUIを作ることができるのは嬉しいメリットです。

以下の画像はPhotoshopで「自動定期保存」するために作ったツールのUIですが、筆者はHTMLやCSSよりもQt Designerの方が慣れているので、より短時間でUIを作成できました。

また、作成したツールをpyinstallerなどを利用して1つのexeにまとめてアーティストに渡すことで、簡単に配布することもできます。exeファイルなので、アーティストが複製したりショートカットを作成したりと、好きなところに置くことも可能です。

この「exeで渡す方法」を使えば、TIPS 06で費やした認証作業を全て飛ばすことができます!

またZXPファイルでは「ZXPSignCmd.exe」が必要でしたが、今回は必要ないので配布するファイルは1つだけで済みます。各種モジュールとそこから派生するメリットは大変大きいと思います。

Step 05:Pythonを使うデメリット

一方でデメリットもあります。ただ、その内容もデメリットと感じるどうかは人それぞれとは思うので、今回は筆者自身が作成中に感じたデメリットを紹介します。


デメリット 1:Photoshopのメニューに登録できない

当然ながらPhotoshopを外部から動かすので、メニューに登録するのが難しいです。 ただ、難しいというだけで、やろうとすれば登録する方法はあるかもしれません。何しろJavaScriptからexeを実行するだけですから。ただ、それを実現するために「exeをどこに置いても大丈夫」というアドバンテージを失うことが良いことかは判断が難しいです。将来的にexeの数が多くなったときに表面化はすると思いますが、現時点では数も少ないので大きなデメリットにはなっていません。


デメリット 2:複数バージョンに弱い

筆者のマシンにはすでにサポートが終わったPhotoshopを含め、CC 2017~2021と趣味で複数のPhotoshopが入っています。この状態だと、各モジュールがどのPhotoshopで使えるかバラバラだということです。

検証を始めた頃は、「そんな複数のPhotoshopを使っているアーティストはいないだろう」と予想して後回しにしていた問題です。調べてみたら、意外と多くのアーティストが複数のPhotoshopを使っているということがわかってきました。ただこれに関しては、環境変数などを調べて変更できれば解決できる問題だと思っています。

※:このデメリット5-2は解決しています。今回のブログには間に合いませんでしたが、当社スタジオのブログで解決方法を追記しています。
【Photoshop】PythonによるPhotoshop操作:追記


デメリット 3:VBSコマンド以上のことはできない

PhotoshopのVBSコマンドを利用しているので、VBSコマンド以上のことはできません。ただし、あくまでもできないのはPhotoshopに対しての最終的なコマンドだけで、途中の処理などはPythonで担うことはできます。UI例で挙げた「自動定期保存」では、実はVBSコマンド は2〜3個しか使っていません。VBSコマンドの使いどころを絞れば、Pythonならではのツールを作ることは可能です。

まとめ:PythonによるPhotoshop操作について

PythonでのPhotoshopにおけるツールサポートについては、まだ全てが可能なわけではなく 「まだ早い」側面は確かにありますが、そこまで複雑なツールでなければ十分活用できるのではないでしょうか。

例えば、アーティストの欲しいツールの中にはレイヤー名の「~のコピー」を自動で全部消したい、という程度のものもあります。これぐらいの簡単な「"〜のコピー" 撲滅ツール」であれば、Pythonでも十分に作ることができます。「Pythonに慣れてるけどJavaScriptは慣れてない」という方は、ぜひ簡単なPhotoshopのツールから、試しにPythonを使って作ってみていただけたらと思います。

正直、簡単なツールであればVBSコマンドの知識と「win32com(のDoJavaScript)」だけでも作ることはできます。将来的にはPythonで新たなPhotoshop用のモジュールが生まれるかも......? 今からPythonでPhotoshopのツールを作成しておくのも良いかもしれませんね!

それでは皆さん Ate breve! Obrigado!(アテブレーベ!オブリガード!)
「また近いうちに!ありがとうございました!」



Profile.

  • 中林伸和 / Nobukazu Nakabayashi(COYOTE 3DCG STUDIO

    ゲーム開発会社にてマップデザイン、レベルデザイン、エフェクト作成など様々な経験をする中でMELと出会い、DCCツール作成の面白さに目覚めてテクニカルアーティストに転身。現在は株式会社クリーク・アンド・リバー社 COYOTE 3DCG STUDIOにて、Mayaに限らずPhotoshopやMotionBulderのグラフィックソフト、Unityなどのゲームエンジンと言語にとらわれずユーザーフレンドリーのツール開発に従事




その他の連載