どもども。タイトルの通りです。
17年ぐらい連れ添ってきたExtendScriptが終わる終わる言われて3、4年。
自分が満足に使えるスクリプト言語ってこれしかないんですが。
とにかく規格が古い。らしい。と知ったのは、CEPでJavaScriptをさわり始めてから。
けっこう前だけと実感が出てきたのはここ数年。CEP 11ならv88およびNode.js v15.9.0に対応しとるそうです。
正直なんのこっちゃですが、ExtendScriptが準拠しているECMA3が相当古いのはわかりました。
便利を知ると、それまでの当たり前を不便に感じてしまう。
よし、これからはCEPだな、モダンなJavaScriptのお勉強にもなるし。
…と思った矢先、UXPの到来です。CEPもう部活やめるってよ。それももう4、5年前。
でもUXP、まだまだふわふわしていて、覚えた端から仕様が変わる、とは先人たちの声。
そんじゃあ固まってきてから覚えるとしよう。前にもこんなのあったな。ActionScriptか。
でも、さすがにそろそろなんじゃない? とそわそわし始めはしてて。
やろうとはずっと思っていた
何度か、最初のステップを踏み外しては逃げ帰って、を繰り返してました。
まず、先人の例文が何を書いているかさっぱり頭に入らない。目がすべる。すべっすべ。
なんとなくJavaScriptじゃねこれ、ぐらいはわかるんだけど、手続きの意味がわからない。
みたいなー。
だもんで、ちょっと方針を変えました。
チャピーに書かせてみて、修正の変遷を見ながら概念と傾向を掴んでいこう、と。雰囲気慣れ作戦。
ちなみに同じ目論見でSwiftアプリを作ってもらったことがあったんですが学習は一歩も進みませんでした…
いや、でもCEPという下地があってのことか、ちょっとずつ見えてきた。UXPが。
これまで一歩も踏み出せなかった原因も明確になったでした。
というわけで。
UXPがとっつきにくかった理由
なんか新しい言語を学習してやろう、となると、通例だいたい “Hello World!” の出力ってことになると思うんです。
UXPの場合、プラグインのUI(パネル)内にテキストを表示したり、コンソールに出力したり、になるのかな。
でもExtendScript出身者は、ExtendScriptでいちばん手軽だった alert(“Hello World!”) をやりたいじゃんすか。だって、そうだろう。
しかしそれがむずい。というか、それだけがむずい。できなくはない。しかしめんどう。しかも違和感。
ここだけ乗り切れば、もしくは無視すれば、ほぼあとはほぼCEPの差分でほぼいけますほぼ。個人の感想です。
以下、うちが目を背けた点を、ばらして雑に紹介していきます。
あ、InDesignでやってます。
冒頭にある未知の宣言
const { app } = require("indesign");
これについては残念ながら絶対に身に付けないと進めないやつでした。
モジュールを同期的に読み込んでいる、らしんですが、ExtendScriptしか知らない浦島だとここで足が止まります。
CEPでいくらかモダンなJavScriptにも慣れてきてたつもりでいたのに。
{ } の中は最低限でappが入りますが、Enumerationオブジェクトを扱う用事があるたんび順次列挙する必要があり、どんどこ増えていきます。
よくわからない人は、大文字で始まる定数っていう認識でたぶん最低限大丈夫です。SaveOptions とか AnchorPoint とかのあれです。
alert() が、ほんとにむずい
厳密には、alert(), confirm(), prompt() と3つ。
河野さん、お〜まちさんの記事などをたぐって、manifestに追記などして、それでも動かなくて、チャピーに泣きついて、どうにか出すことができたものの、欲しかったのはコレじゃないすぎる。にしても大味だなあ。

いろいろとぐぐった感じ、自作のダイアログボックスを出す、が王道のようです。
しかし結果として、今のところはピンポイントにdoScript()でExtendScriptを使う、が自分的には一番しっくりくる感じでした。
これだよこれ

UXPがExtendScriptの完全上位互換とは思わないほうがいい、と聞いてはいたけど、かなりだな。
アプリ間通信もまだ用意されていない。
他はだいたいいける
変数の宣言にvarは使わない(ほうがいい)。const と let を使う。
アロー関数など、見たことない記法は、とにかく JavaScript でぐぐる。
async, await などの同期処理も。
見たことない関数も、まずは JavaScript でぐぐる。
それでだいたいいけるのが判明。関数も引数も ExtendScript と共通しているものが多いのです。
そんなかんじで、将来ほんとにUXPしか選択肢がなくなったとしてもゼロから覚えないといかん感じからはどうにか抜け出せました。こわさが減った。スキルの幅が狭いと新しいもの覚えるのに苦労するわけで。
作品のほうはUIの匙加減が整いしだいリリースしたい感じです。
とりあえず全般、河野さんのブログにすがって情報を得ています。
また、お〜まちさんの記事が初心者視点に配慮してくれてて(俺だよ俺)、何よりInDesignをベースに進めておられててたいへん参考になりました。
うちは、ゴッコ気質のままてきとうにがんばります…