ExtendScript ScriptDebugger 2.1.0 Get OMV Dictionaryの謎

ExtendScript

正式版もリリースされた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 の例です。

コマンドを選ぶ
対象のアプリケーションを選択
XMLのオブジェクトモデルが表示される

オブジェクトモデルを取得できないアプリケーションがある

InDesignは無事回覧できましたが他のアプリケーションはどうでしょうか?例えばIllustratorで試すと以下のような警告が出ます。

no contain any OMV Dictionaries

OMV Dictionaryが無いと怒られました。その他PhotoshopとかAfterEffectsでも「存在しない」と言われました。使えるアプリケーションと使えないアプリケーションの差は何なのでしょうか。そしてOMV Dictionaryの元データとは?

Get OMV Dictionaryの参照先

当初Electron アプリScriptDictionaryでも触れたExtendScript Toolkit用に付属しているXMLから参照しているのかと思ったのですがIllustratorには存在しているのにダメだったり、逆にどこを探しても該当のXMLファイルが見当たらないInDesignの場合は何事もなく動いたりします。それでTwitterでDirk Beckerさんより以下のようなことを教えてもらいました。

ExtendScriptの$.dictionaryクラスでは対象のアプリケーションのオブジェクトモデルを参照できるメソッドを所持しているらしく、getClassメソッドの引数にクラス名を渡すと該当のクラスのオブジェクトモデルを返してくれます。

nullを返すアプリケーション

ただし、この $.dictionary クラスはアプリケーションによっては null を返し、クラス自体が空になっている場合があります。実際、Illustrator や After Effects などでは null が返されました。なんで一部のアプリケーションでは動いて一部のアプリケーションでは動かずnullになっているのかよくわかりません。ただ$.dictionaryクラスがnull(空)になっているアプリケーションよGet OMV Dictionaryの機能でオブジェクトモデルを返してくれないアプリケーションで一致したのでこのGet OMV Dictionaryの機能はこの$.dictionaryクラスを通じてオブジェクトモデルを参照していると考えて間違い無さそうです。

By Me Beer サイトを応援する