UXP Scripting(UXPスクリプト)がやってくる!

前のエントリの続き? になります。

InDesignのバージョ18から新たなスクリプト環境(UXP Scripting)が導入される予定です(直前になってキャンセルされる可能性が全くないわけではないので)。これはもうすでにプレリリース版(いわゆるベータ版)では実装されており、プレリリースに参加している人は試すことができます。

ということで私も、一昨日の「DTPerのスクリプトもくもく会 #30 - オンライン」に参加した中で、UXPスクリプトを色々触ってみました。


その前UXPスクリプトとは何ぞや? という人がいると思うので私の理解はこうですというのを(間違っているところがあればご指摘ください)。

UXP(Unified Extensibility Platform)というのがありまして、これAdobeで用意しJavaScriptでの開発基盤です。中身はというと、オープンソースJavaScript実行環境であV8エンジン(Googleが開発)に、ファイルシステムやクリップボードへのアクセスなどの機能を追加したものになります。詳しくはこちら

UXPは2018Adobe XD、2020Photoshopでの対応が開始され、開発者はこの機能を利用したプラグイン(UXP Plugin)を作れるようになりました。Photoshop2022(バージョ23)で、それまでCEPエクステンションを廃止し、UXPプラグインに移行しました。

そして先月、Photoshopバージョ23.5でUXP Scriptingが使えるようになったと発表されたわけです。タイトルには含まれていませんInDesignにもちょっとだけ触れられています。

アプリケーションUXPの対応状況はこちらになります。

アプリケーション UXP Plugin UXP Scripting
Adobe XD 〇(2018年) ×
Photoshop 〇(2020年) 〇(2022年)
InDesign × △(2022年)
Illustrator × ×

UXP PluginとUXP Scriptingの違いです。

  UXP Plugin UXP Scripting
実行方法 メニューに追加される ファイルを選んで実行
インターフェイス パネUI(ウィンドウ)が必須 基本的に表示するものはない
ファイル構成 manifest.jsonなど複数ファイル 1ファイル(今のところ)
置き換え対象(予想) CEP Extention ExtendScript

ということで、UXP ScriptingはExtendScriptを置き換える存在になると思われます。UXP ScriptingとExtendScriptの違いについては先のリンクのところで「UXP vs. ExtendScript (and ScriptUI)」という項目があるのでそちらを翻訳してください。


さて少し触ってみて、またいろいろな情報を集めてみての感想です。

ExtendScriptUXP Scriptingへの移植

これはそれほど難しくなさそうです。Photoshopの場合、Photoshop APIを整備するのにかなり時間がかかっていましたが、InDesignAPIを整備した形跡が見られません。つまり従来Scripting DOMをそのまま利用しているっぽいです。そのため、InDesign部分に関しては大きな変更はなく、ExtendScriptでの財産がまるっきり無駄になるということはなさそうです。ただ修正は必ず発生します。一括置換で済まないのでちょっと面倒です。

ExtendScriptは廃止されるのか

最終的にはそうでしょう。ただそれはかなり先のことになると思います。InDesignではまExtendScriptで可能なことUXP Scriptingでは対応していない部分があります。

最大の問題Illustratorへの対応でしょうね。まだ全然手付かずで、APIを整備しようとするPhotoshop以上に時間がかかることが想定されます。ExtendScript終了への道のりはまだまだ長そうです。


そういったことで、急いで何かをしなければならないといったことはないのですが、そこで困ったのが私です。「InDesign JavaScript教室」の名前を変えなくちゃなりません。今まJavaScript ≒ ExtendScriptだったから問題なかったんですが、これからExtendScriptとUXP Scriptingのどっち? になります。どうしたものかな。

また、『イチからわかる! InDesign JavaScript 指南書』はタイトル・構成も含めて全面的に見直しになります。6ExtendScript Debugger 2.0に対応するため大幅に書き直したんですが、その改訂版を出そうという矢先に発表されましたからね。あまりにもタイミングが悪いのでホントに困ったな。