Photoshop UXP 開発のためのPlugin Alchemist Sorcerer
Photoshop UXP開発において欠かすことのできないプラグイン、JaroslavBereza氏のAlchemist。
そのAlchemistの新しいバージョンにはSorcererという新しいパネル(機能)が追加されました。これは簡単なPluginならほとんどの要素を自動で生成してくれる優れものです。Alchemistって何?という方は過去の記事を参照してください。以下いろんなリンクを先に紹介しておきます。
使い方
git hubからコピーしましょう。git cloneですが2021年12月17日現在Sorcererはマスターbranchではありません。開発が完全に完成した時にmasterブランチにmergeされると開発者から示唆されています。確認してmasterブランチにmergeされてなければSorcerer branchからコピーしてください。Developer ToolからロードするとAlchemist,Occultist,Sorcererの三種類のパネルがあります。今回使用するのはAlchemistとSorcererです。Sorcererを開くと以下のようなパネルが表示されます。
左上のGeneralをクリックするとこのような画面が表示されます。このフォームでプラグインの設定(manifest)を決めます。plugin nameはそのままプラグインの名前、ID、 Plugin versionは自分の作るPluginのバージョン、PSのmin version。Snippet以下の一覧をクリックすると以下のようになります。
ここでは具体的にプラグインの機能を定義します。レイヤーを消す機能、ドキュメントを新しく生成する機能など、後々ボタンとしてここで登録した機能がプラグインに表示されます。いくつかいろんな機能を登録したい場合は+ボタンを押して複数登録します。nameが機能の名前(後々パネル上、もしくは上のメニューに表示)コードの中身もCodeのフォームに後々書いて行きます。
Commandsにはmenuのプラグインから選択できるコマンドになります。ここでコマンドを登録してメニューボタンを押した時にどのコードが実行されるかAssignedsnippetのセレクターから選びます。以下のように登録されます。
最後にPanelsです。ここで表示されるパネルの設定を定義します。
パネルの名前、id,パネルに表示するボタンとボタンを押した時にどの機能(コード)が発火するか定義します。Assinged snippet(s)でチェックボックス形式で選べるのでパネルに表示させたい機能をチェックします。勿論パネルも複数登録することができます。
コードの書き方
最後にコードの書き方です。コード、といってもほとんどのコードはbatchPlayで実行できるようにAlchemistで取得できます。ただSorcererのテキストフォームに直接書いたり修正するのはやりずらそうなので今回チュートリアルのビデオに沿ってvsCodeでAlchemistで取得したコードを整理してから貼り付けたいと思います。
今回チュートリアルビデオではグリッドの大きさのプロパティー取得していたので同じように取得してみます。なんでもいいのでドキュメントが開かれている状態でTypeからapplication,PropertyからguidesPrefsを選んで下のaddボタンを押すとガイド関係のプロパティーが取得できます。
さらに右にExpandバーを右に寄せると全てのプロパティーが表示されます。そこからgridMajorを押すとグリッドの表示単位を取得するコードを生成してくれます。このコードをコピーする前にoptionsでmodalBehaviorをexecuteにします。
Code 、 generatedを押すと生成されたコードが表示されます。
生成されたコードを整理して最後にSorcererのSnippetsの各Codeフォームにペースト。最後に左下のBuild pluginボタンを押すとPluginが生成されます。
htmlとmanifest,jsがが書き出されるので最後にdeveloper toolで読み込めば使えるようになります。
完成しました。プラグインにおけるmanifestおよびコマンド、パネルの細かい設定を行わなくても良いのが良いですね。
おまけ Occultist
Alchemistのもう一つのパネル、Occultistはアクションを読み込んでアクションの内容を解析するパネルです。パネルのRead.ATNfileボタンを押してアクションセットファイル(atn)をダイアログで選ぶとアクションの内容を読み込みます。読み込んだ内容はAlchemistに渡してbatchPlayのコードに変換できます。