InDesignのUXPスクリプトへの移行は世界的に進んでいません
InDesign 18.0からUXPスクリプト、18.5からUXPプラグインが使えるようになったわけですが、移行があまり進んでいないようです。そのため、Ecosystemチームから「何が移行を妨げていますか?」という質問がありました。
Which missing feature or API is blocking your UXP migration?
私も回答していますが、そもそもこのAdobe Creative Cloud Developer Forumsにを訪れている日本人は片手で数えられるぐらいしかいないんじゃないか、まだ全然普及していませんね。もしよければ回答してください。
ちなみに私の回答はExtendScriptと比較して、
- テキストファイルを1行ずつ読むことができない
- UTF-8以外のエンコーディングを扱うことができない
- $オブジェクト、UnitValueオブジェクトの代替がない
- InDesignのダイアログの不備(下に記載)の代替手段(つまりScriptUI)がない
を挙げたんですが、非常に重要なBridgeTalkの代替機能がないことを失念していました。別の人が書いてくれたのでよかったのですが。BridgeTalkの代替機能がないとInDesignからIllustrator、Photoshop等を呼び出すことができないですから、shag.jsxとかは手詰まりなんですよね。
InDesignのスクリプトダイアログの不備というのは、以前、ブログでInDesignの合成フォント名を変更するスクリプトを公開しましたが、それに関するものです。公開初日にものかのさんから要望が来ました。
・数が多くてはみ出るので改善希望です
— ものかの (@monokano) March 28, 2024
・ソートして並べてほしいです pic.twitter.com/1HZfFqKDS3
ソートは単純にユニコード順であれば1行追加すればいいんですが(それでも英大文字と小文字を同一視してソートという要望だとかなり厳しい)、画面からはみ出るのは「ウィンドウサイズを指定できない」というInDesignのスクリプトダイアログの仕様によるものです。そのためスクリプトダイアログを使う限り対処できないのです。
ですからこの場合、Script UIを使用せざるを得ません。Script UIの方はウィンドウサイズを指定できるだけでなく、スクロールバーを使用できるので、今回の要望に対応できるのです。
ただし、Script UIのスクロールバーは、単にバーを表示させるだけで、スクロール領域を勝手に移動してくれるわけではありません。そこは自分でプログラムを書かないといけないのです。その面倒臭さによって今まで避けてきたんですが、調べてみると見事な例がありました。
Scrollable panel group in scriptUI
これを見つけたからこそ、ものかのさんの要望を実現できたということです。もう、そっくり真似てます。
ただUXPスクリプトになると、解決策は今のところありません。というのも、UXPスクリプトではScript UIの代わりとなる手法がまだ確立されていないということです。何やらトリッキーな技を使ってやる方法があるようなんですが、UXPの仕様がまだ変化しているので確認できていません。
ちなみにInDesignのExtendScriptでdocument
といえばInDesignドキュメントを指しますが、InDesign UXP Scriptingでdocument
というとHTML.documentになります。ですからダイアログウィンドウの元は用意されてるっぽいんですが、そこから先ができないというもどかしさがあります。もう、海外の先人か、今回の質問の回答を受けてEcosystemチームでサンプル等を作ってくれるかを待っている状態です。