従来、AppleScriptのRelease Notesは独立して掲載されていましたが、「macOS Mojave 10.14 Release Notes」として1本の記事にまとめて掲載されていました。内容を吟味したうえで日本語訳して掲載します。
macOS 10.14, Mojave上のAppleScriptはバージョン2.7と10.13から変更はありません。このところ、OS2バージョンに1回AppleScript処理系がバージョンアップするような格好になっているため、納得のいくところですが、バージョン番号が変わっていない割には環境が激変しています。控えめに言っても、Classic Mac OSからMac OS Xへの移行時よりも変化が大きい環境です。
(1)アプリケーションとの通信許可システム
あるアプリケーションからApple eventを送信する場合には、AppleScriptアプレットであっても、ユーザーの許可が必要になった。
許可取得中アプリケーションの一覧はシステム環境設定.appの「セキュリティとプライバシー」>「プライバシー」>「オートメーション」カテゴリにて、閲覧や編集が行える。
もしも、ユーザーが許可ダイアログで同意を行わなかった場合には、イベントの実行はブロックされ、エラー-1743(”
(2)OSAXの事実上の廃止
サードパーティーのScripting Additions(OSAX)がインストールできなくなった(認識されなくなった)。/Library/ScriptingAdditions、/Network/Library/ScriptingAdditionsおよび~/Library/ScriptingAdditionsフォルダ内に存在するScripting Additionsは無視される。
アプリケーションの一部品としてScripting Additionsをバンドル内に組み込み、アプリケーションとScripting Additionsの両方が同一IDでコードサインを施された場合にのみ実行が許可される。
リリースノート内容の検証
(1)について
アプリケーションとの通信許可が行われる頻度ですが、
スクリプトエディタ:(確認対象外)
Script Debugger:実行時初回のみ
スクリプトメニュー:実行時初回のみ
AppleScriptアプレット:毎回(初回通信時のみ)実行時初回のみ
AppleScriptアプレット(Code Sign):初回実行時のみ
AppleScript GUIアプリケーション(Code Sign):初回実行時のみ
となっています(2019/2/1修正)。アプリケーションとの通信許可が求められる単位は、各実行ファイル。Script Debugger上でScriptを記述するためにSafariと通信を行う場合には、初回のみ許可を求められます。スクリプトエディタ上でAppleScriptを記述する場合には、とくに通信許可の確認ダイアログは表示されません。
許可されたアプリケーション一覧については、/usr/bin/tccutilコマンドでリセット可能。
許可状況のリストアップについては、/Library/Application Support/com.apple.TCC/TCC.dbにて管理。Apple純正ツールtccutilでは削除しかできない状況です。
→ その後、Hal Mueller氏によるサンプルコードを用いたtccKit.frameworkを介して、指定Bundle IDの「オートメーション」認証状況を取得できるようになりました
ただし、同じく「プライバシー」項目の「フルディスクアクセス」に、スクリプトエディタとスクリプトメニューを登録する必要があります。OSインストールや10.14以下のOSからのアップデート時、新規ユーザーアカウント作成時に行う「恒例行事」になることでしょう。
(2)について
Script Addition(=OSAX)の使用/不使用をuse scripting additions文で制御できますが、事実上これがOS標準装備のStandard Additions OSAXおよびDigital Hub Scriptingの使用/不使用制御を行うためだけの存在になったといえます。
現在残存している著名なサードパーティのOSAXに、
・Satimage OSAX
・XMLTools
ただし、今後もScripting Additions/OSAXの利用について制約が緩和される可能性はないため、移行のための「その場しのぎ」に限定されます。OSAXによるScript機能の拡張については、これで終了です。
個人的には、Classic MacOSからMac OS X(現・macOS)への移行の際に、OSAXになるべく依存しないようにAppleScriptを記述するように方針転換し、本Blog掲載のScriptについても「よほどのこと」がなければOSAXを使用していません。XMLからXPathを用いてデータを取得する用途についてはXMLTools OSAXの機能が強力ですが、XPathQuery4ObjCなどの代替手段を用意しています。
なお、macOS 10.14搭載のスクリプトエディタは~/Library/Frameworksフォルダ内のFrameworkを無視するものの、これが「仕様」なのか「バグ」なのかは不明。Shane Stanley的には「仕様」とのこと。
→ SIPの機能による制限。これを回避するためにはTerminal上からcsrutilコマンドによりSIPを無効化する操作が必要
その他の変更内容
Script Menuは「スクリプトメニュー」という別アプリケーションに分離されました。
Script MenuはこれまでMenu Exrtraとして存在していたのですが、macOS 10.14で変更されたかたちです(Script Menuは時代によってSystem Eventsが管轄していたり、独立したアプリケーションだった時期があったりとけっこういろいろ存在形態が変更され続けてきました)。Menu Extraから独立アプリケーションへの変更はセキュリティポリシーを独自に適用するため、でしょうか?(なんとなく意図は理解できそうですが、こんな大事なことはリリースノートに書いてほしい)
macOS 10.14搭載のContacts.app(旧称:アドレスブック)から、プラグインScriptがサポートされなくなりました。Contacts.appのAppleScript用語辞書にはプラグインScript用の用語が残っているため注意が必要です。
Finderに、デスクトップ上のファイルを「過去7日間」「過去30日間」などとまとめる「スタック」の機能が付きました。AppleScriptからこの「スタック」を選択してselection(as alias list)を取得すると、中に入っているファイルへの参照がリストで返ってきます(スタックに該当するクラスが定義されているわけではありません)。
DVDプレイヤーはアプリケーションから補助ツールに格下げになって(Zipアーカイバなどと同じ)AppleScriptからの操作機能が削除されました。DVD再生コントロールなどはフリーの「Free Mac Media Player」をダウンロードして行うようにしてください。