16

AppleScript に関する本を持っているので、手元に置いておくべきか迷っています。私はすでに JavaScript を知っています。

Apple が最近、JavaScript スクリプトのサポートを OS X に追加したことを理解しています。

これは、OS X アプリのスクリプトを作成するために AppleScript を学習する必要がなくなったことを意味するのでしょうか? あなたの考えをいただければ幸いです。

上記の質問は、アプリに自動的に実行させたいアプリ ユーザーの観点からのものです。

アプリの開発者(Cocoa)に関してはどうですか? アプリケーションをスクリプト可能にしたい場合、AppleScript を学習しなくても済むでしょうか?

更新:バウンティを追加しました。質問の言い換え (AppleScript とそのユーザーを軽視するつもりはありません): 私は JavaScript を既に知っているので、AppleScript をもう学ぶべき理由はありますか? この件に関するあなたの詳細な考えをいただければ幸いです。

4

2 に答える 2

11

AppleScript を JavaScript に置き換えることはできますか?

おそらく、些細なことのために。それを超えて、おそらくそうではありません。

  1. JXA では、あまりにも多くの Apple イベント/OSA 機能が無効になっている、壊れている、または完全に欠落しています。ある程度までは機能しますが、それを超えると満腹になります。本格的な作業や本番作業で、JXA が台無しにする機能が必要な場合、または JXA を暴走させ泣かせるアプリケーションを扱う場合は、AppleScript を使い続ける必要があります。AppleScript は、実際にこの作業を正しく行う唯一の現在サポートされているソリューションです。

  2. アプリケーションのスクリプトがどのように機能するかを理解する必要があり、それについては AppleScript の文献を読む必要があります。JXA自身のドキュメントは哀れで誤解を招くほど間違っているので、それを読んでも賢明ではありません. 概念を説明するサードパーティの JXA 文献はありません。今後登場するものも、誤解を招くほど間違っている可能性があります。(ちなみに、現在の AppleScript の本でさえ、ごまかしたり、嘘をついたり、誤解したりする傾向があります。)

  3. また、特定のアプリケーションのスクリプトを作成する方法も理解する必要があります。アプリケーション ディクショナリは、不完全であり、それだけでは不十分であることで知られています。つまり、補足ドキュメント (存在する場合)、サンプル スクリプト、およびそれらのアプリケーションの経験豊富なユーザーに依存していることになります。そして、それらはすべて AppleScript ベースであるため、それらを理解して通信するには、AppleScript についてある程度知っておく必要があります。

  4. アプリ開発者は、AppleScript に対してアプリケーションを開発およびテストし続ける必要があります。これは、過去 20 年間にわたってすべてのスクリプト可能なアプリケーションが開発およびテストされてきた事実上の仕様であり、これは今後も続くでしょう。JXA がそのような大雑把なものではなかったとしても、開発者は AS に対してテストを行って、そこでの癖を見落としていないことを確認する必要があります。

于 2014-11-13T21:19:34.310 に答える
5

どのような実装アプローチを採用するかについて柔軟に対応できる場合は、JavaScript for Automation (JXA) 1.0 で十分です。JXA 1.0 では、次のようなことを行う必要がある場合があります。

  1. JXA-to-traditional-AppleEvents* ブリッジが機能しない場合は、JXA-to-ObjC ブリッジを使用します。
  2. JXA 1.0whoseブリッジ クエリが機能しない場合に JavaScript フィルタを作成します。
  3. 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アーカイブドキュメントになりました。

于 2015-05-02T22:18:50.193 に答える