UXPの型データが公開されました。

UXP

UXPの型データが公式から遂に公開されました。
過去にも公開されていましたが長い間更新されていなかったものと違って今回はUXP7.3対応らしいです。それで今回使った所感。

使い方

TypeScriptなので環境構築が必要です。webpackでやる場合は過去の記事のPhotoshop UXPでtypescriptを使うを参照してください。公式のページでも触れらている通り最低限以下のtsconfig.jsonの設定が必要です。

またuxpモジュールだけでなくfsモジュールやpathオブジェクトの型データも揃っています。

ただ現状は不完全な形での公開

ドキュメントでもまだ不完全な部分があると触れらていたのである程度覚悟していましたが正直まだまだそのままだと使用に耐えるような感じではありませんでした。

例えばfsモジュールの部分。

fsmoduleの型データのコード

基本ドキュメントでも説明されている通りfsモジュールの各種メソッドは本家Node.jsのfsモジュールと違ってコールバック関数を引数に渡さなければそのままPromiseを返します。ということでコールバック関数は必須ではありません。しかし上記のコードを見ても分かるとおりコールバックは必須になっています。

エラーreadfileメソッド
コールバックを渡さないと警告される。

それ以外にもuxpモジュールのsetupメソッドにも問題があります。こちらの記事でも触れている通り各種パネルのプロパティ名と設定はmanifestのパネルidと紐づけられています。なのでsetupメソッドのpanelsプロパティ下にオブジェクトのプロパティとして各種パネルのオブジェクトが加えられていく形になります。しかし今回の型データでは配列型のオブジェクトがpanelsプロパティに入るようになっています。

パネル型データ
パネルの型データ。

実際これに合わせてオブジェクトの配列を渡すとエラーが返ってきます。不思議だったのですが改めて公式のドキュメントを見るとentrypoints.panelsの部分はArrayにobjectになっています。しかし同じページのサンプルコード上ではpanel1、panel2と配列型でなくオブジェクト内にパネル名のプロパティがそのままオブジェクトとして定義されています。おそらくArrayにobjectの方が間違いでしょうが正直このままだと使えません。またpanelのshowやhideといったイベントはバグで動かないとドキュメントで報告されていますがこれが必須になっているのも辛いです。またinvokeMenuやmenuItemsも問題なく動くメソッドでもそこまで頻度の高くないメソッドなのでオプションにした方がよさそうです。おそらく使っていけばその他問題もまた見つかりそうです。
2023年11月現在まだ使えなさそうという結論になりましたが今後改善された場合はPhotoshopのようにかなり使えようになるとは思います。

おまけ書き直すとしたらこんな感じ?

まずはパネルの部分。

プロパティは全てオプションでkey: string]: Panelとすることであらゆるstring型のキーを設定してもパネルオブジェクトが入るようになっています。

次はUXP fsメソッド

勿論簡単に書いただけなのでガチな実装になると色々細かい部分の調整が必要です。

Beer 寄付してサイトを応援する。