Mac OS X 10.6, Snow LeopardではAppleScript系の機能に大改造が加えられ、これまでのClassic Mac OS上のAppleScriptの世界観を大事にしながらMac OS Xの上に機能を実装し……いわば、Mac OS X上に残された「最後のClassic Mac OS的な世界観」だったものが、Intel Mac+Mac OS Xの最新のハードウェア+ソフトウェア環境に合わせてアップデートされた。
いわく、CPUのマルチコア化に対応するためのスレッドセーフ化、同時複数Scriptの実行、64ビット化への対応……などなど。
長らく宙ぶらりんの状態が続きMac OS X 10.6で脱落していったあまたの技術に比べれば、AppleScriptはひじょうに恵まれたポジションにいるといえるだろう。System 7時代に生まれたApple純正技術の中でも、ふるい落としで残った数少ない技術だ(他には、キーチェーンも生き残り組)。
そんな中、通常のAppleScriptと同様に機能強化されたのかどうかが、いまひとつ分らない状態にあるのが、Xcode+InterfaceBuilderの開発環境でAppleScriptを記述するAppleScript Studio。これまでにも、AppleScriptのプログラムにGUIをかぶせ、アプリケーションを開発する環境として、主にAppleScriptの上級者に利用されてきた。
この、AppleScript Studioに対する評価はさまざまだ。
初級~中級のスクリプターは「わざわざXcodeの使い方を覚えるのがめんどうだ」という理由から敬遠してきた。簡単にプログラムが組めるのがAppleScriptのいいところなのに、フルセットの開発環境の使い方を覚える必要があるというのでは面倒、ということのようだ。事実、同様にXcode+Interface Builderの習得が必要なAutomatorアクションの開発はちっとも盛り上がっていない。
上級者にとっては、いささか事情は異なるが……AppleScript Studioは「不十分」という評価が行われている。機能が不足しており、他の言語では実現できることが実現できないし、プログラム開発のための手間がかかりすぎる(部品の使い回しが大変)という批判がある。
かくして、AppleScript Studioは……多数のAppleScriptユーザーすべてを取り込むものではなく、その一部が利用しているという状況だった。
そこに、Mac OS X 10.6でAppleScript Studioが事実上廃止になり(復活させることは簡単にできる)、代わりに登場してきたのが、Scripting BridgeをAppleScriptにも応用した「AppleScriptObjC」だ。
まだ、ドキュメントが出てきていないのでぜんぜん使えていないが、AppleScript Studioに近い操作性で……Xcodeプロジェクトの中にAppleScriptを記述し、Objective-Cに近いような感じのする記法のAppleScriptによってCocoaの機能を呼び出すものだ。
これまで、Cocoaの機能をAppleScriptから呼び出そうとすると、別途Objective-Cのプログラムを作るなり拾ってくるなりして、プロジェクトにまぜてビルドしcall methodで呼び出していた。また、クラスメソッドであればObjecticve-Cのプログラムなしにcall method命令で機能を呼び出すことはできたが、インスタンスメソッドの呼び出しはObjective-Cのプログラムが必要だった。
Cocoaの機能をAppleScriptで直接呼び出せる……と、考えれば心強いが、一体誰がそのようなプログラムを書けるというのだろうか? よほどのメリットがなければ、
「Objective-CモドキなAppleScript。記述にはObjective-Cによる開発経験の知識が必要」
などというシロモノで開発を行うというのだろうか。このあたりの判断を行ったのはAppleのAppleScript等のオートメーションを担当するチームだが、どうも彼らの趣味で作ったんじゃないか、と個人的に疑っている。
だいたい、Objective-CプログラマがAppleScriptObjCに手を出すかといわれれば……、たぶん手を出すことはないだろう。
AppleScriptの初級や中級プログラマは、そんなコ難しいものには手を出さないし、出せないだろう。
AppleScriptの上級プログラマも、すぐには手が出ないだろう。そんなものを使うぐらいなら、とっくの昔にObjective-Cで開発していることだろう。
AppleScriptObjCのメリットとは何か? 既存のAppleScript非対応のアプリをコントロールできるようにするとか、OSの機能を残さず利用できるようにすることか?
それ以上に、従来のAppleScript Studioの欠点であった「プログラム部品の流用」が行いやすくなるのだろうか? また、巨大なプログラムを作ったときの動作の怪しさについても改善が見られるものだろうか?
まずは、近々リリースされると言われているAppleScriptObjCのサンプルを見て判断しよう。