ExtendScript ScriptDebugger 2.1.0 Get OMV Dictionaryの謎
正式版もリリースされたExtendScript ScriptDebugger 2.1.0ですが元々の開発ツール、Adobe ExtendScript Toolkitが終了して大分時間も経ちました。当初、Adobe ExtendScript Toolkitでは各種アプリケーションのオブジェクトモデルが調べられるメニューが「ヘルプ」の項目にありましたがこちらはExtendScript ScriptDebuggerにはありませんでした。しかし2.1.0でGet OMV Dictionaryなる機能が追加され、これは OMV Dictionary を持つアプリケーションからオブジェクトモデルを閲覧できるというものです。この OMV Dictionary は元々 XML 形式らしく、そのまま XML のツリー構造として表示されます。以下、InDesign の例です。



オブジェクトモデルを取得できないアプリケーションがある
InDesignは無事回覧できましたが他のアプリケーションはどうでしょうか?例えばIllustratorで試すと以下のような警告が出ます。

OMV Dictionaryが無いと怒られました。その他PhotoshopとかAfterEffectsでも「存在しない」と言われました。使えるアプリケーションと使えないアプリケーションの差は何なのでしょうか。そしてOMV Dictionaryの元データとは?
Get OMV Dictionaryの参照先
当初Electron アプリScriptDictionaryでも触れたExtendScript Toolkit用に付属しているXMLから参照しているのかと思ったのですがIllustratorには存在しているのにダメだったり、逆にどこを探しても該当のXMLファイルが見当たらないInDesignの場合は何事もなく動いたりします。それでTwitterでDirk Beckerさんより以下のようなことを教えてもらいました。
ExtendScript has reflection for individual objects. https://t.co/5ld4OVlocT $.dictionary.getClass(name).toXML(); can get the OMV for individual classes, in some apps. "Get OMV Dictionary" should combine that into single XML.
— Dirk Becker (@dirkbecker) August 12, 2025
ExtendScriptの$.dictionaryクラスでは対象のアプリケーションのオブジェクトモデルを参照できるメソッドを所持しているらしく、getClassメソッドの引数にクラス名を渡すと該当のクラスのオブジェクトモデルを返してくれます。
nullを返すアプリケーション
ただし、この $.dictionary クラスはアプリケーションによっては null を返し、クラス自体が空になっている場合があります。実際、Illustrator や After Effects などでは null が返されました。なんで一部のアプリケーションでは動いて一部のアプリケーションでは動かずnullになっているのかよくわかりません。ただ$.dictionaryクラスがnull(空)になっているアプリケーションよGet OMV Dictionaryの機能でオブジェクトモデルを返してくれないアプリケーションで一致したのでこのGet OMV Dictionaryの機能はこの$.dictionaryクラスを通じてオブジェクトモデルを参照していると考えて間違い無さそうです。