UXP 7.4でWindow.alertが標準で使えなくなる?
2024年2月25日更新。Photoshop25.5で記事通りの仕様になっているのを確認しました。引き続き公式ドキュメントの最新の情報には十分には気を付けてください
Expressの推しが強い最近のAdobeですが一応UXPも少しづつですが動いているみたいです。Photoshop25.4のバージョンの場合UXPのバージョンは7.3です。PhotoshopBeta25.6のUXPのバージョンは7.4です。おそらくPhotoshop25.5でUXPは7.4になると思います。それでこのUXP7.4ですがどんなウキウキするアップデートがあるかというと実はウキウキできません。
Window.alert prompt confirmが標準で使えない
UXP7.0からalert, prompt, confirmが追加されましたがこれが今度からそのまま使えないくなるということです。ソースはBlueskyのJaroslav Bereza氏より。discordか何かのタイムライン上のAdobeの中の方がおっしゃってるのでこれは次のUXP7.4のアップデートでおそらく来るのでしょう。とはいえにわかに信じ難いとも思うので実際に以下のコードをUXP7.4の実装されたPhotoshop25.6BetaとUXP7.3のPhotoshop25.4で試してみました。環境はMac OS Montereyです。
まずapp.showAlertはどちらの環境でもうまく動きました。問題ありません。それでwindow.alertですが結論から言うとUXP7.4の方では動きませんでした。
それではalertのconsoleの結果も確かめてみたした。
対処法
対処法ですがUXP7.4からはmanifestにwindow.alertを使う宣言が必要になります。以下の項目をmanifestに加えれば従来通りalertが動くようになりました。
alertに限らずprompt、confirmもUXP7.4以降この宣言が必要になります。(宣言自体は上の一項目のみでpromptもconfirmも使えます)因みに少し怖いですがenableAlertsをつけても25.5以前の旧バージョンでも支障無く動きました。
なぜこうなった
UXPの中身をさらに改善するのに今後どうしてもこういった破壊的更新が必要になると言うのが実情みたいです。なぜかNode.jsと微妙に異なるNode.jsチックなファイルシステムもそうですがUXPの今後の未来が心配になリます。どちらにせよ製品版でもこのような仕様になったら現状のalertメソッドはそのままだと動かなくなるので注意。修正が必要になるでしょう。
showAlertとalertで何が違う?
Photoshopにはwindow.alertとapp.showAlertの二種類のアラートがあります。window.alertの方が後発でapp.showAlertは初期の頃から存在します。app.showAlertは何故か非同期でwindow.alertの方は同期と言う違いと見た目のUIが少し異なる違いがあります。ただapp.showAlertはMac上だと問題なさそうに見えるのですがWindows上だとバッテン印がついて特定の文脈で表示させると誤解生む可能性もあります。
ちょっとここまでOSで見え方が異なると使うのも抵抗が出てくるでしょう。となるとwindow.alertの方が良いのですがここに来てこれです。一番安全なのはおそらく自分で作ったモーダルダイアログのalertウインドウを使うことでしょう。因みにapp.showAlert以外にもcoreモジュールのcore.showAlertもありますがapp.showAlertと全く同じで違いは何もわかりません。使ってみましたが見た目も仕様も同じでした。
修正されたprompt?
promptもalert同様今回の仕様の変更でそのままだと使えなくなります。それで今回試しに使ってみたらある変化に気づきました。
何か変わっていると思ったらUXP7.3だとテキストボックスが無い。というか今まで無かったと言うことはconfirmと全く同じウインドウが二つ存在したことと今まで私も全く気づかなかった。
UXPの更新log
この辺の新着情報が公式から発信されているか気になるでしょう。しかしPhotoshopのUXPですがこの記事を書いた2024年2月17日現在更新logが2023年の10月を最後に全く更新されていません。InDesignのページもlogの保存先が変わったという記述を最後に更新されていません。Photoshopに関してはそれまで2,1ヶ月に一回は更新されていたのですが目玉がExpressになったのかUXPの新着情報はほとんど出なくなってしまいました。ただPhotoshopのBetaバージョンを触る限り少しづつでも更新は続いているみたいではありますが。