Scripting Bridgeについて 1
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.hを参照するか、MailSuiteを確認すればだいたいの感じがつかめると思います。(続く)










最近のコメント
2 weeks 2 days ago
3 weeks 4 hours ago
3 weeks 6 days ago
3 weeks 6 days ago
6 weeks 6 days ago
6 weeks 6 days ago
13 weeks 20 hours ago
22 weeks 6 days ago
22 weeks 6 days ago
25 weeks 4 days ago