DTPab

DTPにまつわるあれこれ

DTPerのスクリプトもくもく会#30を開催しました

ひさしぶりのもくもく会開催報告です。
忙しかった仕事がやっとひと山いやふた山くらい越えたなというところですが、職場は慢性的な人不足で綱渡り状態です。
即戦力のDTPオペレーターさん(正社員)を引き続き募集中っぽいので、ご興味があればお声がけください!

それはさておき、第30回目のもくもく会を9/10に開催しました。今回は初心者枠に2名、一般枠に4名、合計6名の方が参加してくださいました!
もくもく会中、実はミュートできていなくて、娘を叱る声とか、娘が鼻を啜る音とかが入っていたみたいで大変申し訳なかったです^^;;

では、当日出た話題を振り返ってみます。

InDesign 2023(v18)プレリリースビルドにおけるUXPスクリプトについて

僕とお〜まちさんの当日のタスクがかぶり、ふたりしてUXPスクリプトについて調査とテストを行いました。僕からすると頼もしい限りで、自分で調べたり試したりしたところをお〜まちさんとも共有できて、非常に有意義かつ実りのある時間になりました。

UXPスクリプトとExtendScriptの今後の関係性

プレリリースビルドのアプリについてなので細かいことは書けませんが、お〜まちさんがブログでも書かれているとおり(以下引用)、

ExtendScriptでの財産がまるっきり無駄になるということはなさそうです。ただ修正は必ず発生します。一括置換で済まないのでちょっと面倒です。

とあるように、過去のExtendScriptで開発したスクリプト資産をUXPスクリプトとして移植する場合においては、僕も同じ感想を持ちました。
より具体的にいうと、スクリプトの中身(変数の参照先など)を把握し、適切な書き換えを行う必要があるということです。

では、過去のExtendScript資産は無用の長物になるのか、つまりExtendScriptが廃止されるのかについては、

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

とお〜まちさんも書かれているように、僕も同意見です。

あとで調べてみたら、Adobeの中の人であるErin Finnegan氏もそうツイートしていました。

UXPスクリプトのメリットと今後の課題

そもそも、UXPスクリプトをわざわざ利用するメリットは何か? それはES6*1という比較的モダンなJavaScriptが利用できる点です。
ExtendScriptはES3という大昔の仕様でしたが、UXPスクリプトを利用すれば、配列を扱う関数が豊富になり、テンプレートリテラルが使えたり、アロー関数も使えたりします。
もくもく会の最中にツイートしましたが、UXPスクリプトはJavaScriptからAdobeが独自拡張させてきた部分を、本来のJavaScript(ECMAScript)に近づけよう/あるべき姿に戻そうという意識を感じました。特に、ExtendScriptにおけるグローバルメソッドがその煽りを喰らった格好です。

見方を変えると、UXPスクリプトのメリットを享受するためにはES6を使えるようにならないといけないわけです。先述の通り、ExtendScriptからそのままUXPスクリプトに乗り換える(変換する)というのは非常に面倒くさく、しかもExtendScriptでできたことがUXPスクリプトでは(現時点では)一部できないこともあります*2

ExtendScriptがすぐ利用できなくなるわけではないでしょうから時間をかけて地道にアップデートしていけばいいのですが、問題はUXPスクリプトで利用できなくなるあれやこれやが、UXPにおいてどう解決を図る必要があるのか、スクリプトでいいのかプラグインが必要になるのか、その見極めが必要になります。
まだプレリリース段階だからか、Adobeもしっかりしたドキュメントを用意できていないようで*3、現在公開されている「UXP」と書かれた資料の大半はPhotoshop用のUXPプラグインのものでした。
このあたりは引き続きキャッチアップしていく必要がありそうです。

段落スタイルの基準スタイルにアクセスしたら「ルートスタイルに対する無効な要求」と怒られが発生した

「[基本段落]」のParagraphStyle.basedOnプロパティを参照すると「ルートスタイルに対する無効な要求です」と怒られるようです。
アプリケーションの「ルート段落スタイル」(造語)にはアクセスできない、ということです。
概念としてはものかのさんの記事のここらへんが参照になるかと思います。

回避方法としては、そのようなエラーが発生する段落スタイルでは対象プロパティを参照しない、というほかありません。

Duet DisplayでInDesignコントローラーを作ってみる

デモをTwitterにあげてくださっていたのですが、尖っててめっちゃ面白かった!w

さいごに

というわけで、今回も非常に楽しくもくもく会を行うことができまいた。
参加してくださった皆さま、ほんとうにありがとうございました!

*1:ES2015、ともいいます

*2:僕の推測ですが、ExtendScriptでできて現在UXPスクリプトでできないことは(このまま秋にリリースされるであろうv18の製品版でもその仕様が変わらないようであれば)UXPプラグインでやってね、になるのではと考えています

*3:リポジトリのリンク先が404だったり…