UXP6.4, 6.5のアップデート
Photoshop UXPというかUXPはPhotoshop,InDesignといったホストアプリケーションのAPIとは別にPluginのシステムの核となるUXP本体の開発も進んでいます。今までPhotoshop UXPの公式ドキュメントを見てもUXP本体の更新履歴がいまいち分かりませんでしたが今回6.4と6.5(ベータバージョン)のchangelogのページの更新履歴が追記されていたので何が更新されたか今回解説します。
おさらい
UXPシステム上ではPhotoshop,InDesign,XDといった各アプリケーションのAPIとは別にUXP本体のAPIもあります。これは各アプリーケーション共通のシステムとなっていてファイルシステム関係、HTML,CSS関係もUXPのバージョンに依存しています。このUXP本体のリファレンスも公式サイトにあります。参考、Photoshopページ内のUXPリファレンス。
何が変わったの?
以下のAPIの追加、仕様の変更があります。
UXP 6.4での変更
- Webviews外部webサイトの表示がPluginパネルでも可能。(以前はModal Windowでできた)
- ScriptでもfsのAPIが使用可能に。
- pathモジュールの追加。
UXP 6.5での変更
- Scripting上でrequireで相対パスを通じてモジュールの読み込み可能に。
- getEntryWithUrlメソッドの追加。
そして2023年2月8日現在、Photoshopの最新版の24.1.1のUXPバージョンが6.4、InDesignのUXPバージョンが6.5.0でした。(少しづつ更新されるので随時確認してください)
つまりPhotoshop24.1.1ではUXP6.5で追加されたAPIは使用できません。ただ2023年2月8日のベータ版最新版Photoshop24.2のUXPは6.5.1。
Webviewsの仕様変更
外部webサイトを表示できるWebviewsですが今までModal Window上でのみ表示可能だったのがパネル上でも可能になりました。(外部サイトの表示とアプリケーションの操作が同時に可能)
Scripting上でfsapiと相対パスからモジュールの読み込み。
UXP6.4でfsのAPIの追加、UXP6.5で相対パスからモジュールの読み込みがScripting上で可能になりました。これに関しては
以下サンプルコードをご覧ください。
InDesign上のScriptingでrequireからモジュールを相対パスから読み込む。
InDesign上のScriptingでfsAPiを実行。
PhotoshopのScriptingでrequireからモジュールを相対パスから読み込み。
getEntryWithUrlメソッド
今回の目玉がこれになります。ご存知の通りUXPでは当初entry型のオブジェクトしか扱っていませんでした。つまりダイアログからユーザーにローカルのファイルを選択してもらわない限りUXPからローカルのディレクトリーにアクセスできませんでした。これが少し緩和されてfs APIの追加でstring型のパスも扱えるように
なったのですがPhotoshopのAPIのsaveASメソッドやopenメソッドは相変わらずentry型のオブジェクトしか受け付けません。つまりPhotoshopからローカルファイルへのアクセスはこれまでできなかったのが実情です。しかしこのgetEntryWithUrlメソッドはstring型のファイルパスを渡すとentry型のファイルを返します。つまりfsモジュールから取得したstring型のファイルパスをこのgetEntryWithUrlメソッドに渡すことでそこからPhotoshopで直接扱えるようになるのです。以下、デスクトップ上のimageフォルダーの画像をダイアログを通さずにそのままPhotoshopで
開くサンプルです。
このようにPhotoshopから直接画像を開くことができます。
以下はPhotoshopで開いた画像をpsdとしてデスクトップのsavefolderフォルダーに保存するサンプル。
今後UXP6.5以降ExtendScript同様アプリケーションからのディレクトリーへのアクセスが自由に行えるようになりそうです。ただstring型のpathを扱うメソッドとentry型のpathを扱うメソッドは今後も混在するとは思います。