旨辛チキンおいしい

よくある備忘録みたいな奴です。

Adobe Illustrator 用のスクリプトを作ろうとした

社内のデザイナが使用していた Illustrator 用のスクリプトに少し機能を追加してほしいとのことで、(あまり頼まれてないけど)おもしろそうなので検索してみました。 が、情報が少ない…

デザイナが使用していたスクリプトQuick-exporter というもので、 iOSAndroid アプリ向けの書き出し作業が格段に楽になる素晴らしいスクリプトです。ソースコードGitHub で管理されているようです。

これまで Photochop や Illustrator でこのようなスクリプトを利用できることは知っていましたが、実際に中身を見たのは初めてです。

中を見てみると、どうやら JavaScript みたいです。しかも拡張子が jsx (!)

まさか React か!?なんて思いましたが(思ってない)、そんなことはもちろんなく、 XML が埋め込めるというただそれだけの普通の JSX でした。

見た限り、 View が XML で記述されている様子もなく、 Java の Swing や他の多くの GUI フレームワークと同じように、コードで View を記述するような感じに見えました。

palette = new Window("palette", "Quick exporter");
var pnlMain = palette.add("group { orientation: 'column', alignment :'left', alignChildren :'right'}");
var grExtension = pnlMain.add("group");
var rbtnPNG24 = grExtension.add("radiobutton", undefined, "PNG24");
var rbtnPNG8 = grExtension.add("radiobutton", undefined, "PNG8");
// さらに続く..

View がどのように作られているのかわかったので、リファレンスで Window とその引数である palette、またはパーツの名前だと思われる groupradiobutton について調べよう、と思ったのですが…

全然情報が出てきません。

Adobe Forums にもこんな質問こんな質問が立てられていますが、結局公式リファレンスのしっかりとしたものはなさそうでした。

公式のページ が一応あるのですが、 Scripting Guide も JavaScript Reference も PDF です…

いやそれは最悪いいとして、 Scripting Guide にも JavaScript Reference にも、 Windowpatellealert() もどこにもない! その後結構調べましたが、公式でちゃんとしたドキュメントを見つけることはできませんでした。

また、スクリプトExtendscript Toolkit を使用して作ると作りやすいらしいのですが、 macOS 10.11.5 以前しか対応していない1とのことでした..

と諦め掛けていたのですが、 Windowdialog のことを ScriptUI と呼ぶことを知り、それで検索していると以下のサイトを見つけました。

ScriptUI for dummies | Peter Kahrel

このページの下部にある、 click here リンクをたどると、非公式ですが ScriptUI の Guide があります 👏

Windowpalette が具体的なコード例と一緒に説明されています。他にも edittextbutton などの Control 要素についても説明がされています。

ということで、まだ Quick-exporter のコードに手を加えて View を少しいじった程度のことしかできていませんが、もう少しいじってみようかと思います。

余談

会社の Illustrator CC 2018 で alert() をすると Illustrator がフリーズするんですが、環境のせいでしょうか…?