AppleScript
テンプレート:Infobox プログラミング言語 AppleScript(アップルスクリプト)は、アップルが開発したMac OS用のオブジェクト指向のスクリプト言語。System 7(Mac OS 7にあたる)から採用されている。
特徴
仕組み
AppleScriptはOSAに準拠したスクリプト言語の一つであり、アプリケーション等のプロセスにAppleEventを送ることにより自動操作を実現する。そういった意味ではマクロ言語と同等。しかし実際にはプログラミング言語の一種であり、通常はコンパイル済みのバイトコードが保存され実行される。このため、基本的にはOSのバージョン(Classic Mac OSかMac OS Xか)やCPUの形式(68k、PPC、Intel)、記述した言語(AppleScript英語、AppleScriptフランス語、AppleScript日本語)などに依存しないコードが生成される。
AppleScriptはMac OS上のアプリケーション間通信を基礎技術として用いているため、アプリケーションがAppleEventに対応していればそのアプリケーションに処理を委ね、その処理結果を別のアプリケーションに対して用いることも可能である。また、現在のバージョンではSystem Eventsと呼ばれる機能を用いて、スクリプトからアプリケーションにメニュー操作やキー入力を伝達することさえも可能になっている。アプリケーションは、システム経由で送られてきたAppleEventメッセージを解釈して対応した処理を行い、処理結果を再びシステムを経由してAppleEventメッセージとして返す。そのため、処理速度は遅い。
ユーザインタフェース
AppleScript言語そのものはユーザインタフェースを持たず、アプリケーションやスクリプティング機能追加(OSAX)と呼ばれる追加モジュールの機能を利用してユーザーとの対話を行う。標準的なOSAXは簡素なダイアログ程度のユーザインタフェースしか持たない。
多様な自作のインタフェースを持たせるにはDialogDirectorというOSAXや、AppleScript Studio、HyperCard、FaceSpan、REALbasicなどを用いる必要がある。AppleScript Studio、HyperCard、およびFaceSpanはプログラミング言語としてAppleScriptを採用しており、コントロール(GUIの部品)が操作されると、AppleScriptコードの中から適切なイベントハンドラが呼び出され、その範囲内に記述されたAppleScriptを実行する。一方のREALbasicは、REALbasic本来のプログラミング言語を拡張するための言語という位置づけで、機能毎にスクリプトが記述されたファイルを用意し、REALbasicのコードからそのファイルを呼び出して実行する。また、Automatorのワークフロー記述の一部としてAppleScriptを使用することもできる。
開発環境
Mac OS Xにはスクリプトの編集・実行ツールであるAppleScriptエディタ(Mac OS X v10.5まではスクリプトエディタ、Mac OSでは『スクリプト編集プログラム』)が付属する。
Mac OS X 10.1.2から搭載されたAppleScript Studioにより、アップル純正の統合開発環境Xcode(旧Project Builder)でAppleScriptを開発言語として使えるようになり、Interface Builderを用いてユーザーインターフェースの設計が行えるようになった。またMac OS Xでは、テキストで書いたスクリプトをコマンドラインからコンパイル・実行することも可能になった。
構文
HyperCard用のスクリプト言語であるHyperTalkに似た、英語に近い構文が採用されており、基本的には習得しやすい。しかしアプリケーションごとに全く異なる命令が採用されていることが多く、別のアプリケーションを使うときはその都度作法を覚えなくてはならない。初期は日本語表現形式を含む英語以外の言語による記述も可能だったが、Mac OS 8.5以降は英語表現形式のみが採用されている。ただし、英語表現形式の場合も変数名は | で囲むことで日本語などを使用できる。
スクリプトの例(変数「持ち物=myItem」の中身が0だったらダイアログを表示する)
英語
if myItem = 0 then
display dialog "持ち物がありません" buttons {"OK"} default button "OK"
end if
通常は上記のように記述するが、より英文に近い以下のようなコードも記述できる。ただし複数の処理を一行のif文に組み込むことはできないので、先ほどの構文を使用することになる。下記のコードでは比較演算子の“等価”を表す = が is に置き換えられている。
if myItem is 0 then display dialog "持ち物がありません" buttons {"OK"} default button "OK"
変数名に日本語を用いた例
if |持ち物| is 0 then display dialog "持ち物がありません" buttons {"OK"} default button "OK"
日本語
もし「持ち物」が0ならば
“持ち物がありません”をボタンリスト:{“OK”}、デフォルトボタン:“OK”で表示する
以上
関連項目
外部リンク
- AppleScript: The Language of Automation - AppleのAppleScriptのページ(AppleScriptの解説ページもあり)
- Mac Help Guide(AppleScript 2.1 の邦訳) - Appleによる一般的なAppleScriptのマニュアル(リファレンス)の目次
- Apple Developer Connection: AppleScript - 開発者向けAppleScript総合ページ
- CocoaアプリケーションにおけるAppleScriptスクリプトの使い方 - AppleのAppleScriptとCocoaの関係に関する記事
- do shell script in AppleScript - AppleのAppleScriptでのシェルの利用法