UXP Ver8.0の変更点
Adobe MaxおよびCC2025のアップデートに合わせてUXP8.0の更新履歴がInDesignとPhotoshopのUXPページ上で公開されました。
久しぶりの大きなアップデートになりまして一部破壊的な更新も含まれているのでUXP Plugin開発者は必ず目を通してください。ちなみにInDesignに関しては一部Photoshopに遅れて一部実装された機能もありますので注意。今回Photoshop26.0 betaで試しました。全ての機能を調べるとキリがないので一部メインの機能だけ触れます。
WebViewのローカル読み込み
前々から予告されていた今回目玉の新機能ですが前回の記事をご覧ください。ローカルのHTMLファイルを読み込んでパネル上で表示、操作できます。
clipboardメソッド
Clipboard.setContent が非推奨になってClipboard.writeを今後使ってと書いてはありますがClipboard.writeメソッド使ってもこのメソッド自体単にsetContentメソッドを包んだだけの関数でconsole上で警告が出てwriteメソッド使えって怒られて全体的によくわからない感じです。その他readメソッドとかも同じような感じです。
Video関係のメソッド
HTMLのVideo element関係の一部メソッドの入れ替えがあるみたいですがそもそもUXP上でvideoが再生できずよくわからないです。
CSSの新機能実装
新機能と言ってもモダンブラウザに大きく遅れをとってBox-shadowやtranslateプロパティが本実装手前になっただけです。本実装手前というのはmanifestでfeatureFlagsの宣言をしないといけないからです。UXP 7.4でWindow.alertが標準で使えなくなる?の記事内のmanifestの宣言もそうですが実験段階の機能や本実装に追いついてない機能は事前にmanifestでの宣言がないと動ないようになっていてこれもそういう部類のものです。featureFlags内のCSSNextSupportプロパティにArray形式で使いたいCSSプロパティを渡しますがわからなければ以下のように全て使うという意味でtrueを宣言した方が早いです。
ただローカルのWebView機能も実装された今、もうこんな事しないで別途モダンフロントエンド環境の使えるローカルのHTMLファイルにUI関係の実装を行った方が早いと思います。
CSS Transformプロパティについて
ブラウザの話になりますがCSS Transformプロパティ、これはCSS3段階で実装されて当初はtransformのプロパティに続いてscale、translate、rotateなどの変形させたい値を一度に宣言する必要がありました。
しかし個別にアニメーションさせたい場合など一々全ての値をtransformプロパティ内に宣言しないといけないのでかなり面倒なものでした。しかしこの数年の進化でブラウザ上では個別に宣言が可能になりました。
ただ今回のtransform関連のアップデートはUXPの更新ログを見るとこのあたりの仕様が明確でなくわかりづらくなっています。例えばtranslateは個別に指定できるようになっていたのですがscaleXとscaleYはtransform内での宣言が必要でした。なのでこの辺の更新は個別に指定しての宣言ができるようになったのかそもそも以前は全く使えなかったプロパティなのか細かく確かめる必要があります。
その他
Spectrum Web Components (SWC)のサポートの拡充や Navigator.language APIの追加とかあります。
今後の私の方針
とりあえずCSS関係の機能の進化がとても遅く、JavaScriptも含めてWebと同じ技術で開発できるという謳い文句の割には最近のフロントエンドの技術と仕様の異なる場面が多く余計な学習が必要な場面が多々有り、開発に時間のかかることが多いです。ただWebViewからローカルHTMLの読み込みができればUIの大部分をモダンブラウザと同じ環境で開発できそうなので今後はこっちの方向に動こうかと思いますがWebViewを開発の中心に置いてしまうと結局UI部分はブラウザ依存でアプリケーションAPIは全く別物のシステムを使わざるをえず、UXPの魅力の一つだったはずのアプリケーションのシステムとパネルのシステムの統合は事実上分解されてしまいます。Photoshop API関連も半年以上更新されていないので今後の動向が不安です。