どのような実装アプローチを採用するかについて柔軟に対応できる場合は、JavaScript for Automation (JXA) 1.0 で十分です。JXA 1.0 では、次のようなことを行う必要がある場合があります。
- JXA-to-traditional-AppleEvents* ブリッジが機能しない場合は、JXA-to-ObjC ブリッジを使用します。
- JXA 1.0
whose
ブリッジ クエリが機能しない場合に JavaScript フィルタを作成します。
- Objective-C 側、JXA-new-stuff-bridge、traditional-AppleEvents-bridge、または JavaScript 側をいつ使用するかを明確に検討してください
* Apple イベント スクリプトは、1990 年代初頭の Classic MacOS 7 から使用されています。2006 年頃から、Apple は非 Apple イベント メカニズムを検討することを推奨しています。
注: Apple イベントは、プロセス間の通信において常に最も効率的または適切なメカニズムであるとは限りません。OS X は他のメカニズムを提供します... [Apple、「オープン スクリプト アーキテクチャ」]
AppleScript (AS) スイートと JavaScript for Automation (JXA) スイートはどちらも、同様のオートメーション カバレッジを備えています。AppleScript ブリッジはより成熟しています。JavaScriptCore エンジンには、より多くの組み込み機能があります。たとえば、regex、encodeURI、JSON.stringify などの機能は、すでに JavaScriptCore に組み込まれています。
| | 特集 | AS | JXA |
|----------------------|----------|------ ------|
| | スクリプト辞書 | ✓ | ✓ |
| | 標準スクリプトの追加 | ✓ | ✓ |
| | JavaScriptコア | ‐ | ✓ |
| | Apple イベントのスクリプト作成 | ✓ | ✓ |
| | ココア スクリプティング | ✓ | ✓ |
| | C 関数バインディング | ‐ | ✓ |
| | 自動化サポート | ✓ | ✓ |
| | #! シェル実行可能 | ✓ | ✓ |
| | デバッガ | サードパーティ | ‐ |
| | 言語の人気 | ニッチ | ブロード |
これは、スクリプトを作成するために AppleScript を学習する必要がなくなったことを意味しますか?
多分はい。
既存の AppleScript の例を読むと役立つ場合があります。とはいえ、AppleScript ファイルを放り投げて、先入観のないアプローチから始めた方が生産的な場合もあります。
ところで: 使用するスクリプト言語については、引き続き Scripting Dictionary を理解する必要があります。
アプリに自動的に実行させたいアプリユーザーの観点からは?
アプリ ユーザーとして、自動化用の JavaScript は、前述の注意事項に従って動作します。特に、JavaScript と Cocoa の機能を増やし、「Apple Events」機能を減らすことを検討してください。
たとえば、「従来の「システム イベント」アプローチには単純さのメリットがありますが、使用すると$.NSFileManager
パフォーマンスが著しく高速になります。」1 つのユース ケース$.NSFileManager
では、「システム イベント」よりも 300% 高速でした。【JXA-Cookbook Wiki : フォルダの中身一覧を取得する】
...アプリ開発者(ココア)に関しては?アプリケーションをスクリプト可能にしたい場合、AppleScript を学習しなくても済むでしょうか?
はいといいえ。
開発者が制御するのは、スクリプト ディクショナリを介して公開されるオブジェクトとメソッドです。このスクリプト ディクショナリ (.sdef) は、Perl、Python、Ruby などのスクリプト言語からアクセスするために実行する必要があります。
そのため、開発者は舞台裏で、Objective-C/Cocoa 中心で、一般的にスクリプト言語にとらわれないアプリケーション スクリプト ゲートウェイを提供します。
開発者が制御できないのは、スクリプト ブリッジ (Cocoa Scripting、Apple Events、ObjC、C Function Binding など) です。スクリプティング ブリッジのバグをApple Bug Reporterに報告してください。
良心的な開発者は、顧客にとって重要なすべてのスクリプト言語を使用して、アプリケーションのスクリプト ディクショナリを実行するためのテスト スイートを用意します。優れたテスト カバレッジは自動化され、複数のスクリプト言語を使用する可能性があります。
... JavaScript はもう知っていますが、AppleScript をもう学ぶべき理由はありますか?
より多くの JXA ドキュメントが作成されるまでは、スクリプト アーキテクチャのさまざまな側面を説明するために、いくつかの既存の AppleScript 資料が役立ちます。
熟練した AppleScript の専門知識を利用できる既存の AppleScript 自動化は、収益を生み出すワークフローにおいて、JXA をいつ採用するかについて慎重になりたいと思うかもしれません。
JavaScript を既に知っていて、自動化が個人的に必要な場合は、JXA (前述の注意事項があります) が妥当な選択のように思えます。
更新: Apple は現在、Mac Automation Scripting Guideを一般公開しています。
リビジョン 2016-10-27。AppleScript と JavaScript の使い方を紹介する新しいドキュメント。
リビジョン 2018-06-07。AppleScript と JavaScript を使用してワークフローを合理化し、OS X での生産性を向上させる方法を紹介する新しいドキュメント。
2019 年の更新: Mac Automation Scripting Guideはアーカイブドキュメントになりました。