AppleEventって何?
Mac OSでは、System 7(漢字Talk 7)から「AppleEvent」と呼ばれるメッセージ(message)をアプリケーションへ送るシステムが導入されています。
メニューの選択やボタンのクリック、ウィンドウの開閉などの「出来事」をイベント(event)、それぞれのイベントの内容を表す情報をメッセージと呼びます。
そして、メッセージをアプリケーション(オブジェクト)に伝えることで、その内容に対応したプログラムが実行されます。
イベントが発生する場所はそのイベントを処理するアプリケーションだけでなく、別のアプリケーションでも構いません。
AppleEventの仕組みを利用すれば、スクリプト中でイベントを発生させて、アプリケーションを制御することが可能です。
この場合、スクリプト中に書いた命令文によってメッセージが発生し、スクリプト中のtell
文で指定したオブジェクトへ送られます。
そして、メッセージを受け取ったオブジェクトが実際の命令(メッセージに対応する命令)を実行します。
このように、AppleScriptでは命令とメッセージはほぼ同義と考えていいでしょう。
例えば、アプリケーションを起動するにはさまざまな方法(イベント)がありますが、どのイベントを使った場合でも同じrun
メッセージが伝達されてアプリケーションが起動します。
次のスクリプトでは、「Chess」がrun
命令を実行しています。
もしくは、AppleScriptがrun
メッセージを「Chess」へ送っているとも解釈できます。
tell application "Chess" run end tell
run
のような基本的なメッセージは、ほとんどのアプリケーションで受信できます。
つまり、AppleScriptで使用できる命令を記した「用語説明」を用意していない「Chess」でもrun
メッセージを受け取れるわけです。
スクリプト対応アプリケーションでは、run
などの基本的なメッセージ以外に「用語説明」に記載されている命令をメッセージとして使用できます。
また、同じスクリプトの中で複数のアプリケーションにメッセージを送信することもできます。
これは、AppleEventという仕組みがOSレベルで提供されているおかげです。