Scripting Bridgeについて 1

in

v10.5 Leopardで追加された機能にScriptingBridgeがあります。AppleScriptからではなくてCocoa(Objective-C)から直に他アプリケーションと連携するためのフレームワークなのですが、Mail.appやiTunesなど純正アプリもさることながらMSOfficeやAdobeファミリーなど主要アプリケーションは大抵AppleScript対応していますからこれらと連携できるメリットは大きいです。ポイントは、

  • NSString/NSArrayなどネイティブなクラスがそのまま使える
  • Cocoa管理のメモリ上で連携できるのでAppleEventのメモリ管理から解放される
  • コンパイルできる

といったところですがぶっちゃけ、AppleScriptなんか使うよりずっと速いぜ!っていうのがウリですね。

関連する主要なクラスは

の三つ。SBApplicationクラスは連携したいアプリケーションそのものを表現するクラスですが、フレームワークに含まれているワケではなくて連携したいアプリごとにグルーコードを生成して使用します。

グルーコードを生成するにはsdefコマンドとsdpコマンドを使ってヘッダファイルを生成します。例えばMail.appのSBApplicationクラスを生成するには、

sdef /Applications/Mail.app | sdp -fh -o ./ --basename Mail ¥
 --bundleid `defaults read /Applications/Mail.app/Contents/Info CFBundleIdentifier`

としてMail.hを作成します。ヘッダを確認すると、@interface MailApplication : SBApplicationの宣言が確認できます。あとは作成したヘッダファイルをプロジェクトに組み込んでSBApplication のインスタンスを作るだけでMailと連携することができます。

MailApplication *mail = [SBApplication 
 applicationWithBundleIdentifier:@"com.apple.Mail"];

あとは、mailインスタンスとメッセージをやりとりして必要な処理を実現します。

Mail Suite

どんなプロパティやメソッドがあるのかは、先に作成したMail.hを参照するか、MailSuiteを確認すればだいたいの感じがつかめると思います。(続く)

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/242

返信