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 OS X v10.6で部分的に導入され(Xcode上のみ)、Mac OS X v10.10でスクリプトエディタでもCocoaの機能を利用するAppleScriptObjCが導入された。このため、現行のmacOS上ではどのマシンでも、どのAppleScriptランタイム環境上でもCocoaの機能を利用できる状態になっている。
AppleScriptObjCは従来のAppleScriptと比べて10倍以上の高速処理が可能である。ただし、それはAppleScriptのオブジェクト(string、list、recordなど)をCocoaのオブジェクト(NSString、NSArray、NSDictionaryなど)に変換したうえでCocoaのメソッドを呼び出した場合であり、従来型のAppleScriptをAppleScriptObjC環境で記述しても速度は変わらない。AppleScriptとCocoaの間でのオブジェクト変換は暗黙で行われる場合もあるが、多くの場合は明示的に変換する必要がある。
また、AppleScriptObjCではObjective-CのBlocks構文やprotocolをサポートしていないため、Cocoaのフレームワークすべてが利用できるわけではない。
Automatorのワークフロー記述の一部としてAppleScriptを使用することもできる。Automator上のアクション「AppleScriptを実行」がスクリプトエディタに近い機能(ログ表示、結果表示)を持つが、他のAppleScript対応アプリケーションのAppleScript用語辞書をブラウズしたり、途中で実行を停止させるなどの機能はない。
do shell scriptコマンドでBSD (UNIX) レイヤー上のコマンドを呼び出すことができる。ただし、Terminal.app上とdo shell scriptコマンドでは設定されている環境変数が異なるため、Terminal.app上で実行できていた処理ができなくなる場合がある。特に、指定したコマンドにパスが通っていないことや、カレントディレクトリが異なること等はエラーの原因となる。これは環境変数の内容を明示的に指定することや、利用コマンドをフルパスで表記することで回避できる(環境変数内容はenvコマンドを実行して確認できる)。
アプリケーション操作の自動化、シェル、コマンドの呼び出し、画面上の部品の強制操作にWebコンテンツの強制コントロール、Cocoaフレームワークの呼び出しにiCloud経由のコンテンツ更新など、マクロ言語としてはカバーできる範囲がとても広い。そのうえ、GUIベースのアプリケーション開発まで行えるため、いったん覚えるとMacを用いた作業の生産性が向上する。ただし、他のアプリケーションを他のコンピュータからも操作できるため、セキュリティを考慮しさまざまな抑止機能がオペレーティングシステム (OS) に用意されつつある(詳細は#制限機能を参照)。
Classic Mac OSからmacOSを通じて継承された唯一のテクノロジーであり、海外を中心に古くから開発者コミュニティが形成され、GUIベースのアプリケーションのコントロールについての知見が蓄積されている。
macOS 10.14より、システム環境設定の「セキュリティとプライバシー」>「プライバシー」項目にセキュリティ度を調整するための各種機能が追加され、AppleScriptもその影響を受けるようになった。
「フルディスクアクセス」項目では、動作中のMacのすべてのユーザーに対して、ユーザー自身のメール、メッセージ、Safari、ホーム、Time Machineバックアップなどのデータや特定の管理設定へのアクセスを許可する。AppleScriptを利用するユーザーはこの項目に「スクリプトエディタ」と「スクリプトメニュー」を登録しておく必要がある。
「オートメーション」項目では、他のアプリケーション制御の許可、および取り消しを行える。スクリプトエディタ以外のアプリケーションで、他のアプリケーションを制御する場合には、動作中の最初の要求時にユーザーに対して承認を求めるダイアログを表示する。承認されたアプリケーションはこの「オートメーション」項目に表示されるようになる。
Mac OS X v10.7で導入された。スクリプトエディタ上で「ファイル」>「テンプレートから新規作成」>「Cocoa-AppleScript Applet」を選択することで新規作成できる。AppleScriptObjCによるプログラムをスクリプトエディタ上で記述できるが、Interface Builderによるユーザーインタフェースの作成が行えず、デバッグ機能も乏しい。実行はアプレット形式でのみ行う。
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の各種フレームワーク内のメソッドを呼び出す方式に変更された。