AppleEventというのをご存じでしょうか。MacOSではSystem7以降、アプリケーション相互の情報伝達や連合動作のための枠組みとしてAppleEventを定義しました。AppleScriptは、このAppleEventをスクリプトとして記述するための開発環境であると言うことができます。
さて、AppleEventに対応しているアプリケーションは現在かなりの数にのぼっています。ところが、その多くはまだAppleScriptに対応していません。このことからも分かるように、「AppleEventに対応」と「AppleScriptに対応」とはかなり意味あいが異なります。要するに、AppleScriptに対応する方がプログラミングの手法がより面倒なわけですが… それはともかく、せっかくAppleEventに対応しているにも関わらず、スクリプティングに対応していないアプリケーションが世の中にはごまんとあるわけです。
しかし、スクリプティングに対応していないからといって、必ずしもAppleScriptから利用できないわけではありません。普通、スクリプト編集プログラムなどに記述するのはAppleScriptで定義される命令文ですが、その他の方法としてAppleEventをそのまま記述することも可能です。
例えば、Greg's Browserでファイル圧縮する場合を例に挙げてみます。
Greg's BrowserはAppleEventには対応していてもAppleScriptには対応していないアプリケーションの一つですが、以下のように記述することでその機能をAppleScriptから利用することができます。
tell application "Browser (Fat)"
activate
ヌevent ASITDropネ {filePath1} given ヌclass fmscネ:0, ヌclass inshネ:filePath2
end tell
上の例では、ヌとネで囲まれた部分が命令に相当します。この命令はGreg's BrowserがStuffIt Engineという機能拡張にfilePath等のパラメータを渡し、filePath1をfilePath2に連結して圧縮することを示しています。
AppleEventの構文なのですが、ここでは詳しく説明しません。興味のある方はその手の本を読んで下さい。(そのうち説明するかも…)
構文を手っ取り早く知る方法は、なんといっても「録音」です。スクリプト編集プログラムでAppleEvent対応アプリケーションの動作を「録音」し、その内容を分析することでそのアプリケーションがどのようなAppleEventを使用しているかある程度理解することができます。もっとも、この方法ではそのアプリケーションのAppleEventすべてを使いこなすことはできませんが。
というわけで、スクリプトに非対応ながらスクリプティング可能なアプリケーションの話でした。