10.5でMac OS XのOSA言語を変更? 追加?

LeopardでRuby OSAが標準搭載され、OSA言語の1つとしてRubyが使えるようになるのでは? という噂がある。いや、オープンソース系の界隈ではすでに「噂」ではなく事実として語られつつある段階だ。
http://rubyosa.rubyforge.org/
http://rubyforge.org/frs/?group_id=2346&release_id=8040

以前から、AppleがAppleScriptの処理系の開発にかけているパワーがおそろしく少ないように感じていた。検証不足、十分なフィードバックも適用されておらず、OSの正式リリースになっても致命的なバグが残されたまま(あるいは気付かないまま)だったりする。

  「何かをほかに作っている??」

そうした疑念を抱かずにはいられない状況である。

従来のMac OSからMac OS Xに移行する際、当初AppleScriptのポーティングは予定されていなかった。そのことを発表するやいなや、(USの)出版系の業界からクレームの雨あられ。彼らは業務の効率化のためにAppleScriptを活用していたからだ。あわててAppleはAppleScriptをMac OS X環境に載せることを決定。

根拠はないが……おそらく、当時検討された代替スクリプティング言語はJavaScriptだったのではないかと思われる。Late Night Softwareの「JavaScript OSA」は、Appleの支援のもと次世代標準OSAとして開発されたものの「成れの果て」なのではないかと見ている。フリーで配布するにしては内容が豪華すぎるからだ。どこからか資金が出て開発したと見るのが妥当だろう。そして、Apple以外の誰がそれを行うというのだろう。

Mac OS X環境にAppleScriptを移行させる際、処理系に対しては最低限の書き換えで済むような施策が採られた。CocoaではなくCarbonベースの処理系とし、言語仕様に大々的な変更はなく、事前にアナウンスされていた「イベント識別子の4文字制限撤廃」などもキャンセル。言語仕様の互換性を維持する、といえば聞こえはよいが……それはつまり世界観を一切拡張しないということであり、さまざまな混乱を巻き起こす元凶ともなった。

UNIXとしてのMac OS Xのパワーをあまり活用できないまま、古いMac OSの価値観をそのまま継承させ続けたのがAppleScriptの世界、ということになる。このため、ソフトの面からいえばUNIXの世界観そのものだったり、ハードの面からいえば昨今のハイパワーなマルチプロセッサ環境と見比べると世界観のミスマッチが生じてしまっている。世界観が違いすぎて、十分に資源を生かすことができないという問題も発生している。スケーラビリティがないとか、サーバー系からデスクトップアプリケーションまで幅広く単一言語でカバーできるような存在でもない。

さらに、Xcode環境でAppleScriptを記述できる「AppleScript Studio」についても、可能性とともにさまざまな制限や限界がある。

サードパーティ製の「FaceSpan」の世界観および構文をほぼそのままパクった(裏で何らかの「手打ち」があったと見るのが正しいだろう)AppleScript Studio環境は、FaceSpan的な価値観とXcode/Interface Builder的価値観の擦り合わせが十分でないままユーザーに提供された。

途中、何度かの場当たり的な改修が行われたが、Mac OS X 10.4へのアップデート時には他の言語環境で利用できている新たなGUI部品への対応がまったくなされず、おおよそApple純正の開発環境らしからぬ粗雑なアップデートにユーザーの失望感は大きかった。

海外のAppleScript系のソリューションデベロッパーの間には、RADと呼ぶには複雑すぎて煩雑なAppleScript Studio環境を毛嫌いする声も大きい。
同環境下でのAppleScript編集時にはInterface Builderの挙動も変わったりするものの、各種プロパティへのアクセスが不十分であり、バージョンを重ねても一向に環境とのミスマッチを感じさせるものであった。さらに、大規模なプログラムの実行時にさまざまな問題を引き起こしつつも、それが一向に修正されないなど、Appleの開発能力に疑問を感じざるを得ない状況だ。

さらに、中心になって開発してきたプログラマーの高齢化も由々しき問題だ。現在のAppleScriptの処理系を書いたのは、Appleの創設当初から在籍しているChris Espinosaと言われている。HyperCardの処理系、AppleScriptの処理系などを手がけてきたベテランだ。だが、もうすでに実力は一線級ではなく、いわばロートルとして一線を引いた身と自分は見ている。ML上でのやりとりを介して「ああ、こいつはもうダメなんだな」というのがよく分かった。

AppleScriptの処理系に関しては、「バージョン2.0」と呼ぶべき構想が以前に(開発者向けに)発表されたが、Mac OS X 10.4向けには1.9に次いで「バージョン1.10」が提供された。客観的な状況から判断するに、この「バージョン2.0」構想はキャンセルされたと見るべきだろう。

この段階で、すでに次世代のスクリプティング言語の開発計画がスタートしたと見ている。それは、おそらくUNIX系のLight-weight Languageであり、オブジェクト指向のものであるはずだ。

Appleが死守しなくてはならないのは、GUIベースのアプリケーションを自由にスクリプトからコントロールできる「Open Scripting Architecture」であって、AppleScriptの言語処理系ではない。AppleScriptへの理解を広く求めていくよりも、UNIX系のユーザーやエンジニアが使い慣れた道具に、OSA対応機能を盛り込む方が得策と判断したに違いない。

仮に、Ruby OSAがLeopardで標準搭載されるようになって、どのような世界が実現されることになるだろうか?

過去の教訓から明確に言えることは……初版のリリースで使い物になるとはかぎらない、ということである。

毎度毎度、いつもロクに検証もしないでリリースするUS Appleのこと、英語以外の環境(とくに日本語環境!)でさまざまな問題が発生する可能性がある。そして、Open Sourceで開発が進められているとはいえ、製品に対して修正が随時フィードバックされるわけではない。

少なくとも、AutomatorのアクションとGUIアプリは作りやすくなるに違いない。そのレベルだ。ただし、日本語の扱いに難があって、さまざまな問題を起こすことだろう。

AppleScriptの記述の簡潔さに比べてRubyで同様のプログラムを記述するとどのようになるのか? フィルタ参照やらのAppleScript独特の機能は再現されるのか??? 

……それは現時点ではなんともいえないが、他方で従来、AppleScriptの世界観の中に納まり切らなかったような機能や概念を内含することは期待される。
既存のAppleScriptのプログラムをRubyにコンバートするようなツールが提供されるか、という点も気になる。大きめのプロジェクトのコードをすべて書き換えというのでは困るのだが、そのあたりどう考えているのか……あるいはまったく考えていないのか。

こんな前例がある。Mac OS X 10.4で、PerlやPythonでGUIアプリを作れる環境「wxPerl」「wxPython」が標準装備になったのだが……OSA言語でもなかったし、もう少し盛り上がるかと思ったのだが、まるっきり盛り上がりを見せなかった。

OSA Rubyがこの前例と同じ範疇に入るものになるのか、それとも新しいジャンルを開拓していくものなのか…………それは、出てみないとまったく分からない。

Copyright By Piyomaru Software. All Rights Reserved