AppleScript

AppleScript（アップルスクリプト）は、Appleが開発したClassic Mac OS/macOS用のオブジェクト指向のスクリプト言語。System 7（Mac OS 7にあたる）から採用されている。 標準環境で利用でき、ある程度自然言語（英語）に似た構文を持つ。制御構文、ハンドラや変数、オブジェクトやプロパティの記述といったプログラミングの基本機能を言語に備えており、Mac OSのプロセス間通信機能の一つであるApple eventによって、システムや様々な対応アプリケーションにまたがって制御できる。 AppleScriptはMac OSのスクリプティング機構Open Scripting Architecture (OSA) に対応した言語（OSA言語）のひとつであり、OS X v10.10よりJavaScript for Automation (JXA) も標準搭載されるようになった。 アプリケーション操作の自動化、シェル、コマンドの呼び出し、画面上の部品の強制操作にWebコンテンツの強制コントロール、Cocoaフレームワークの呼び出しにiCloud経由のコンテンツ更新など、マクロ言語としてはカバーできる範囲がとても広い。そのうえ、GUIベースのアプリケーション開発まで行えるため、いったん覚えるとMacを用いた作業の生産性が向上する。ただし、他のアプリケーションを他のコンピュータからも操作できるため、セキュリティを考慮しさまざまな抑止機能がオペレーティングシステム (OS) に用意されつつある（詳細は#制限機能を参照）。 Classic Mac OSからmacOSを通じて継承された唯一のテクノロジーであり、海外を中心に古くから開発者コミュニティが形成され、GUIベースのアプリケーションのコントロールについての知見が蓄積されている。 AppleScriptはOSAに準拠したスクリプト言語の一つであり、アプリケーション等のプロセスにApple eventを送ることにより自動操作を実現する。通常はコンパイル済みのバイトコードが保存され実行される。このため、基本的にはOSのバージョンやCPUの形式 (68000, PowerPC, x86, x64, Apple Silicon) 、記述した言語（AppleScript英語、AppleScriptフランス語、AppleScript日本語）などに依存しないコードが生成される。 AppleScriptの言語そのものが定義している予約語（複数の単語による連語から構成される）は数十程度と少なく、標準では絶対値を求める機能や三角関数の機能すら持たないが、Scripting Additions/OSAX（Open Scripting Architecture eXtension）と呼ばれる機能拡張書類、あるいはAppleScriptそのもので記述したAppleScript Librariesによって命令を増やすことが可能となっている（サードパーティのOSAXはmacOS 10.14で廃止になった）。 AppleScriptはMac OS上のアプリケーション間通信を基礎技術として用いているため、アプリケーションがApple eventに対応していればそのアプリケーションに処理を委ね、その処理結果を別のアプリケーションに対して用いることも可能である。また、現在のバージョンではUser Interface ScriptingあるいはGUI ScriptingあるいはUI Element Scriptingと呼ばれる機能を用いて、スクリプトからアプリケーションにメニュー操作やキー入力を伝達することも可能になっている。アプリケーションは、システム経由で送られてきたApple eventメッセージを解釈して対応した処理を行い、処理結果を再びシステムを経由してApple eventメッセージとして返す。 バイトコードインタプリタ型の逐次実行で処理されるため[要出典]、ネイティブコードに比べると実行速度は劣るものの、アプリケーションの機能呼び出しを行わない場合にはスクリプト言語としては十分な速度で実行される[要出典]。ただし、アプリケーションの機能呼び出しはコストも高く、前述のGUI Scriptingを用いたメニューなどの強制操作を行うと、さらに処理コストが増加し、時間がかかる。 AppleScriptは、簡素なダイアログ (display dialog、display alert)、ノーティフィケーションセンターへのノーティファイ (display notification)、ポップアップメニューからの項目選択ダイアログ (choose from list)、ファイル選択 (choose file)、フォルダ選択 (choose folder)、新規ファイル保存先パス選択 (choose file name) 、プログレスバー表示（Mac OS X v10.10以降。アプレット動作時のみ）などの、目的に特化した簡単なユーザインタフェースを提供している。 これら以外のユーザインタフェースを利用するために、現在利用できる手段で一番簡単なやり方は、Mac OS X標準搭載の「スイッチコントロール」でパネルを作成し、パネル内のボタンに対してアクション「AppleScript」を割り当てておくというものである。 Adobe InDesignなどの一部のアプリケーションでは、簡易的なユーザーインタフェースをAppleScriptのプログラムから動的に生成する機能を備えている。 本格的な、自由度の高い自作のインタフェースを持たせるには、Xcode上で「AppleScript App」プロジェクトを作成し、その中にAppleScriptコード（AppleScriptObjC）を記述する。Xcode上で一般のアプリケーション開発と同様にユーザインタフェースを作成できる。コントロール（GUIの部品）が操作されると、AppleScriptコード中の対応するイベントハンドラが呼び出される。 macOSにはスクリプトの編集・実行ツールであるスクリプトエディタ（Mac OS X v10.0〜v10.4はスクリプトエディタ、Mac OS X v10.5〜v10.9はAppleScriptエディタ（スクリプトエディタの名称が変更されたもの）、Mac OSでは『スクリプト編集プログラム』）が付属する。 スクリプトエディタにAppleScript対応アプリケーションのアイコンをドラッグ・アンド・ドロップするとAppleScript用語辞書が表示され、これを参照しつつアプリケーションのコントロールを行う処理を記述する。 スクリプトエディタにはブレークポイント設定や変数内容のモニタリングなどの機能はないため、これらの機能を利用したいユーザーはLate Night Software社の「Script Debugger」を用いる必要がある。また、Cocoaオブジェクトのログ表示やAppleScript Librariesに添付するAppleScript用語辞書の編集についても「Script Debugger」で行える。 AppleScriptへのコードサインはApple純正のスクリプトエディタおよびScript Debuggerで行うことができる。Mac App StoreにAppleScriptで作成したアプリケーションを提出するには、Xcode上で記述・コードサインする必要がある。 その他、テキストで書いたスクリプトをコマンドラインからosascriptコマンドでコンパイル・実行することも可能である。 Apple純正の統合開発環境Xcode（旧Project Builder）上でAppleScriptによるアプリケーション開発を行うこともできる。AppleScriptから直接Cocoaの機能を呼び出せる「AppleScriptObjC」が提供されている（Mac OS X v10.1〜v10.5ではAppleScript Studio）。ユーザーインタフェース作成についてInterface Builderを用いる点は以前のAppleScript Studio（Mac OS X v10.6で廃止）とかわりないが、AppleScript用語辞書を用いて各種GUI部品にアクセスするのではなく、Interface Builder上でバインディングによりAppleScriptプログラム中のプロパティ値にひもづけしたり、Cocoaの各種フレームワーク内のメソッドを呼び出す方式に変更された。 AppleScript書類のフォーマットは維持されているため、基本的には互換性が確保されている。これまでMac OS X v10.4のインテルCPUへの移行や、Mac OS X v10