見出し画像

[#4] AppleScriptを支えるアップル社の技術と信念

初出: MacPower 2000年 10月号

今月は「AppleScript」を取り上げよう。「なぜこの時期に」と思われるかもしれないが、AppleScriptは実はいまが旬のテクノロジーなのだ。長いことほったらかしにされていたものの、Mac OS 8.5のころから再び整備され始めた。さらに、次期OSであるMac OS Xでもサポートされることが決まり、AppleScriptに対応したCocoaアプリケーションも作成できる。「チーム史上最大最強のメンバーがそろっている」という、同社のAppleScriptチームの言葉も信ずるに値するものだ。

では、本題に入ろう。まず、AppleScriptとは何かについて。一般的には、マクロのように定型処理を自動化してくれるもの、例えば「QuicKeys [*1]」のようなものと認識されているのではないか。使う側から見ればこれはこれで正しいだろう。だが構造を見ると、AppleScriptとQuicKeysは正反対のものだ。では、AppleScriptとQuicKeysを比較して両者の違いを明らかにしていこう。「ファイルメーカーPro」でデータベースを開き、新しいレコードを作って情報を入力する操作の自動化を例にとって考えてみる。

QuicKeysは、アプリケーションをユーザの視点から自動化する機能拡張だ。つまり、メニュー/ウィンドウ/マウス/キーボードをあたかもユーザーが操作したかのごとく振る舞ってアプリケーションを操る。従って、先の例ではユーザーが行う場合と同じように、① Finderでデータベースファイルを開く、② メニューから「新規レコード」を選ぶ、③ マウスでフィールドを選択する、④ キーボードから情報を入力するといった一連の動作を処理するマクロを書く、もしくは記録するわけだ。このマクロを実行すると画面上で実際の操作が行われるので、ユーザーにはわかりやすい。その半面、可能な処理はメニューや画面を使って行うものに限られる。

一方のAppleScriptは、アプリケーションへ直接指示を送る。つまり、ユーザーがMacを操作するときに使うマウスやキーボードといった物理的なデバイスは必要ないのだ。なので、① Finderに「どのファイル」を「開け」と伝え、② ファイルメーカーProに「こういう情報」を持った「新しいレコードを作れ」という指示を送れば処理が完了する。このように、既存のユーザーインターフェースに縛られないという点はAppleScriptの強みだ。もちろん、指示を出すのはユーザーでなくても構わない。あるアプリケーションが、別のアプリケーションに指示を出してコントロールすることも可能だ。

ただしそのためには、アプリケーション側の助けが必要になる。何もせずにアプリケーションがそう便利に振る舞ってくれるはずもない。それには、マウスやキーボードに頼らない別のユーザーインターフェースが必要になる。グラフィカルユーザーインターフェースに代わる、いうなればスクリプトユーザーインターフェースだ。

それを実現するために導入された技術が、「AppleEvent」と「Object Support Library(OSL)」なのだ。この2つはプログラマがわかっていればいいものなので、詳しくは説明しない(できない)。簡単に言うと「何かを実行しろ」という場合の「実行しろ」に相当するものがAppleEventで、「何かを」の部分を表すためのものがOSLだ。具体的には、AppleEventでは「新しく作る」とか「移動する」といったアプリケーションが実行する動作を、OSLにおいてはウィンドウ/書類/テキスト/グラフィック - などのアプリケーションが管理しているものを定義する。

そしてこれらの定義が「標準」に従って行われていれば、アプリケーション間で共有可能になる。実際に、同様の処理をするアプリケーションでは、標準化された定義を使えたほうが何かと融通が利く。例えば、ターゲットを変えるだけで同じAppleEventをエディターソフトの「Jedit」とワープロソフトの「Microsoft Word」に送ることができるのだ。

では、なぜ標準化が必要なのか?アプリケーションはそれぞれ異なる処理を行うわけだし、プログラマーが好きなAppleEventを定義して勝手にインプリメント(実装)すればいいのではないか。確かにMac以前のコンピユーターでは、このような考え方が自然なものだったろう。しかし、グラフィカルユーザーインターフェースを標準化することでユーザーの使い勝手が向上するということを明らかにしたのがMacだ。スクリプトユーザーインターフェースにおいても標準化を行えば、結局はユーザーのためになる。アップル社にはきっと、こういった信念があったのだろう。

アップル社は現実のメリットのために大きな理想を掲げて、AppleEventを標準化する多大な努力をした。まず、WWDCなどの場でAppleEventがもたらす未来を語り、多くの開発者の心を動かした。そしてドキュメントを用意した。

さらに、あらゆるアプリケーションを想定して「AppleEvent Registry」というAppleEventの標準仕様書を作った。あまりにもきちんとAppleEventが定義されていて、正しくインプリメントすることが困難だという欠点はあったが、そこにはアップル社のほかの仕事には見られない綿密さが見られる。
AppleEventがきっと未来のコンビユーティングを変える。こういったアップル社のエンジニアの情熱があって、AppleEvent Registryが完成したのだろう。

標準化のためにこれだけの労力を費やしたAppleEventがベースにあったからこそ、AppleScriptは開発者を引きつけることができた。これがMac OSのすごさなんだと思う。あー、AppleScriptの実行環境にまで話が及ばなかった。続きは、次号以降....。

バスケ(http://www.saryo.org/basuke/)シエスタウェア代表取締役。うーん、こういう話を書くと1ページじゃ全然足りないねえ。かといってページが増えたら身が持たないだろうし....…。とりあえず、写「真大きくなんねーかなあ。ねえ、担当さん。

[#1] Quickeys 米CEソフトウェア社の製品。GUI時代におけるマクロという考え方を確立した傑作だ。最新バージョンは5.0。

編集・三村晋一


この記事が気に入ったらサポートをしてみませんか?