89
AppleScriptの意外な持続性

まず、少し歴史を振り返ります。

Appleは1996年末にNeXT社を買収し、同社のOpenStepオペレーティングシステムを将来のMac OSの基盤として採用する計画を立てました。当初の計画はRhapsodyと呼ばれ、Macのような外観を持つOpenStepという基本的なアイデアでした。

NeXT関連の技術はすべて残し、Mac関連の技術はすべて捨て去るというアイデアでした。しかし、このアイデアは受け入れられず、特に既存のMac開発者の間では受け入れられませんでした。そのため、AppleはNeXTとMacの技術を融合させたMac OS Xという新たな計画に踏み切らざるを得ませんでした。この計画はより複雑で、実装にもかなりの時間がかかりました。Mac OS X 10.0は2001年3月まで出荷されず、実際に使えるようになったのは2002年5月の10.2まで待たなければなりませんでした。しかし、開発者とMacユーザーの支持を得ることができました。

しかし、その後の数年間で、Mac OS Xは明らかにNeXT寄りの方向に進化してきました。NeXTで誕生したMac OS Xの技術(CocoaやServicesなど)は健在ですが、従来のMac OSの技術(Carbonなど)は廃止され、廃止されてきました。

しかし、AppleScript はその進化のパターンの例外であり、多くの点で非常に驚くべきものです。

唯一のものではない

AppleScriptは1993年10月にSystem 7.1で初めて登場し、Open Scripting Architecture(OSA)のスクリプト言語として初めて採用されました。OSAは、アプリケーション間およびアプリケーション内のスクリプト記述のための低レベルアーキテクチャを提供するという構想でした。言い換えれば、複数のアプリケーションが相互に通信・データ交換を行い、ユーザーがスクリプト対応アプリケーション内でタスクを自動化するための、システム全体にわたる一貫性のあるメカニズムです。各アプリケーションが互換性のない独自のマクロ言語を作成する代わりに、Macアプリを自動化するための普遍的な方法が1つ存在することになります。

AppleScriptは当初、唯一のOSAスクリプト言語となる予定ではありませんでしたが、最終的にはその通りになりました。OSAは言語に依存しないという考え方で、最終的には複数のOSAスクリプト言語が利用可能になる予定でした。AppleScriptはHyperCardのHyperTalk(これについてはまた別の話です)から派生した、非プログラマー向けの使いやすい言語でした。コードではなく散文のようなプログラミング言語であれば、幅広い「非プログラマー」が、まさにプログラミングをできるようになるのではないか、という理論でした。

最終的には、上級ユーザー向けに、より伝統的なOSAスクリプト言語(構文的にはCやPascalのような言語に似たもの)が登場するかもしれないという考えがありました。しかし、この夢は実現しませんでした。いくつか目立たない例外はありましたが(開発者のMark Alldrittは、OSAスクリプト言語として動作するJavaScriptのバージョンを作成しました)、AppleScriptはAppleからのサポートやユーザーからの支持を得た唯一のOSA言語でした。

外国語

AppleScriptが生き残り、今日(OS X Mountain Lionを含む)Appleが全面的にサポートするテクノロジーとして残っていることが非常に驚くべき点は、それが誰からも愛されなかったことです。優れた理論であり、崇高な実験でもありましたが、英語風のプログラミング言語では、多くのユーザーがプログラマーになるには至らなかったことが判明しました。そして逆に、AppleScriptの英語風の構文は、スクリプターにとって、むしろ難易度や混乱を増すことが多かったのです(そして今日に至るまで、それは続いています) 。

簡単に言えば、AppleScriptをお気に入りの言語と考える世界中のプログラマーの数は、非常に小さな車に収まるか、あるいは自転車を共有できるほどです。しかし、前述のように、OSAスクリプト言語の中で実際に普及したのはAppleScriptだけでした。

OSAスクリプト対応には、アプリケーション開発者による低レベルのアーキテクチャサポートが必要であり、これが実現の可能性をさらに高めています。開発者はコンパイラのスイッチを切り替えるだけでアプリをAppleScriptでスクリプト化できるわけではなく、非常に手間のかかる作業を経て、手動でスクリプトサポートを追加する必要がありました。また、NeXTのアプリケーションフレームワークであるCocoaは、もともとAppleScriptを念頭に置いて設計されたものではありませんでした。

まだ元気に生きている

要約すると、AppleScriptは明らかに旧式のApple/NeXT以前の技術でした。プログラミング言語の構文は専門家を苛立たせ、非プログラマーがプログラミングできるようにするという本来の目的は達成できませんでした。Cocoaアプリケーションフレームワークとの技術的なミスマッチもありました。AppleScriptが長期的に成功する見込みがいかに低かったかを理解するには、こうした歴史的背景が必要です。タイムマシンにアクセスできる人なら、1998年のAppleのWWDC(世界開発者会議)に遡り、AppleScriptが2012年にも健在であるという賭けに応じることで、大金を稼ぐことができるでしょう。

しかし、それは生きていて元気です。

AppleScriptとの愛憎は、これまでのAppleのテクノロジーと比べても、最初からはっきりと二分されてきました。言語の構文――曖昧さ、異なるスコープ間での用語の衝突が分かりにくいこと、そして全体的に冗長なこと――は大嫌いです。でも、AppleScriptでできることは大好きです。繰り返しのタスクを自動化したり、最も頻繁に使い、最も依存しているアプリに独自の小さな機能を追加したり。

この記事はBBEditで書いています。15年以上前にAppleScriptを書き始めたアプリです。15年以上前のスクリプトのいくつかは、今も毎日使っています。新しいスクリプトも常に書いています。何に使っているかという詳細はさておき、肝心なのは、AppleScriptを使うことで、よく使うアプリに独自の機能を追加できるということです。一般的なユーザーにはピンとこない機能かもしれませんが、私にとっては時間と手間を省いてくれます。

そして実際のところ、現代の AppleScript は、非プログラマーが独自のソフトウェアを作成できるようにするという当初の目標を、AppleScript スクリプティングではなく、同じ基礎技術に基づいて構築され、おそらく以前のバージョンよりも人気がある Automator を通じて静かに達成しました。

AppleScriptは、その言語構文の不評や技術的なハードルにもかかわらず、10年に及ぶ激動の移行期を乗り越え、今もなお存在感を保っています。その理由は単純で、他のOS Xテクノロジーでは実現できない方法で現実世界の問題を解決できるからです。理論上はAppleScriptはもっと優れたものになる可能性もあるでしょう。しかし実際には、AppleScriptは私たちが使える最高の機能です。いじくり回すユーザーや上級ユーザーにとって、MacがiOSよりも優れている点を如実に示しています。