InDesignのUXPスクリプトへの移行は世界的に進んでいません

InDesign 18.0UXPスクリプト、18.5UXPプラグインが使えるようになったわけですが、移行があまり進んでいないようです。そのため、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の代替機能がないInDesignIllustrator、Photoshop等を呼び出すことができないですから、shag.jsxとかは手詰まりなんですよね。


InDesignのスクリプトダイアログの不備というのは、以前、ブログInDesignの合成フォント名を変更するスクリプトを公開しましたが、それに関するものです。公開初日にものかのさんから要望が来ました。

ソートは単純にユニコード順であれば1行追加すればいいんですが(それでも英大文字と小文字を同一視してソートという要望だとかなり厳しい)、画面からはみ出るのは「ウィンドウサイズを指定できない」といInDesignのスクリプトダイアログの仕様によるものです。そのためスクリプトダイアログを使う限り対処できないのです。

ですからこの場合、Script UIを使用せざるを得ません。Script UIの方はウィンドウサイズを指定できるだけでなく、スクロールバーを使用できるので、今回の要望に対応できるのです。

ただし、Script UIのスクロールバーは、単にバーを表示させるだけで、スクロール領域を勝手に移動してくれるわけではありません。そこは自分でプログラムを書かないといけないのです。その面倒臭さによって今まで避けてきたんですが、調べてみると見事な例がありました。

Scrollable panel group in scriptUI

これを見つけたからこそ、ものかのさんの要望を実現できたということです。もう、そっくり真似てます。


UXPスクリプトになると、解決策は今のところありません。というのも、UXPスクリプトでScript UIの代わりとなる手法がまだ確立されていないということです。何やらトリッキーな技を使ってやる方法があるようなんですが、UXPの仕様がまだ変化しているので確認できていません。

ちなみInDesignのExtendScriptdocumentといえInDesignドキュメントを指しますが、InDesign UXP ScriptingdocumentというHTML.documentになります。ですからダイアログウィンドウの元は用意されてるっぽいんですが、そこから先ができないというもどかしさがあります。もう、海外の先人か、今回の質問の回答を受けEcosystemチームでサンプル等を作ってくれるかを待っている状態です。