私はしばらく Mavericks を使ってきましたが、この OS X のリリースに興奮するまでに少し時間がかかったことを認めなければなりません。しかし、パワー ユーザー向けの機能のいくつかに夢中になり始めると、新しいマニアックな追加機能、特に新しい AppleScript 機能のすべてを試すのに夢中になるのにそれほど時間はかかりませんでした。
AppleScriptは私のお気に入りの言語ではなく、どうしても必要な時以外は使わないことを率直に認めます。しかし、Mavericksのリリースにより、AppleはAppleScriptにもう一度チャンスを与える非常に説得力のある理由をいくつか加えました。最近、開発者の友人とAppleScriptについて話し合ったのですが、AppleがiTunesなどのコアアプリからスクリプト関連の機能の一部を削除し始めたので、今後のOSリリースでこの言語が徐々に廃止されても不思議ではないという意見で一致しました。しかし、私の考えは間違っていました。驚くべき展開で、AppleはAppleScriptに新たな息吹を吹き込み、クリーンで再利用可能なスクリプトをこれまで以上に簡単に書けるようにしたのです。
iCloud同期
AppleScriptの技術的な変更点について詳しく説明する前に、より高度な追加機能についていくつかお話ししましょう。AppleScriptとAutomatorはiCloudファイル同期に対応しました。TextEditと同様に、AppleScript EditorやAutomatorを起動すると、iCloudドキュメントライブラリが表示されます。ここには、これらのアプリで現在iCloudに保存されているすべてのドキュメントが表示され、既存のスクリプトやワークフローをライブラリにドラッグしてiCloudに追加することもできます。これらのファイルは、Mavericksを実行しているすべてのMac間で同期されます。
コード署名
AppleScriptを共有する際には、コード署名は避けられない不便さを伴います。現在、デフォルトでは、GateKeeperによる制限のため、一般のユーザーはインターネットからダウンロードしたスクリプトを実行できません。これは、サードパーティ製のAppleScriptをダウンロードして使用したい人を制限するものではありません。実際、GateKeeperの設定を調整したり、スクリプトをControlキーを押しながらクリックしてGateKeeperを無効にするなど、いくつかの回避策があります。
幸いなことに、AppleScriptのコード署名の最新の改善により、開発者がスクリプトを配布することが徐々に容易になり、エンドユーザーがこれらの回避策を実行する必要がなくなりました。AppleScriptのコード署名は、Mountain Lionでターミナルコマンドとして初めて導入されましたが、Mavericksではスクリプトをエクスポートする際にドロップダウンメニューからDeveloper ID証明書を選択するだけで済みます。非常に簡単で、開発者とユーザーの両方にとって責任あるコード共有を促進するでしょう。スクリプトにコード署名するには、Appleに登録された開発者である必要があります。
通知
AppleScriptの通知機能は、この言語に嬉しい追加機能です。以前MacStoriesで、AppleScript/Objective-Cを使ってAppleScriptプロジェクトから直接通知を投稿する方法について書きましたが、私が作成したサンプル以外のプロジェクトでは実装が複雑で困難でした。幸いなことに、Appleは通知センターに通知を投稿するためのネイティブAppleScript/Automator APIへの真の関心を認識してくれました。Mavericksでは、Display Notificationタイトル、サブタイトル、メッセージなどのいくつかのパラメータを指定して、どちらのアプリケーションからでも通知を投稿できる新しいコマンドが追加されました。
AppleScriptライブラリ
AppleScriptライブラリは、Mavericksへの最も興味深い追加機能だと私は考えています。これにより、ユーザーは再利用可能でモジュール化されたAppleScriptを作成できます。概要として、AppleScriptライブラリ(実際にはルーチンを含むスクリプト)を作成し、 に保存できるように~\Library\Script Libraries\なりました。この場所に保存すると、新しい句で呼び出すことで複数のスクリプトで使用できるようになりますuse。これにより、複数のスクリプト間での重複コードの量が削減されるはずです。
というサンプルAppleScriptライブラリURL Utilitiesとサンプルスクリプトを作成しました。新しい句を使ったライブラリへのアクセスなど、多くの新機能を実演していますuse。また、AppleScriptバンドルの定義ファイルを作成して、独自の「用語」を使用する方法も紹介しています。
AppleScriptでは、AppleScriptライブラリ内の定型ハンドラを置き換える独自の用語を作成できます。私の例(長いURLを受け入れて短いURLを返すライブラリ)では、shorten urlと という用語を作成していますwith。将来のスクリプト内でこれを使用する場合、 のような1行のコードを記述するだけshorten url 'http://someurl.com' with googleで、上記のスクリーンショットに示すように、http://someurl.comを指すgoo.glリンクが返されます。
これを実現するには、ライブラリを作成するだけでなくURL Utilities、カスタム用語の定義を格納する埋め込み型の .sdef ファイルも作成する必要がありました。この作業は、XML ファイルを入力してスクリプトバンドルにドラッグするだけです。.sdef ファイルの構文は Apple によって十分に文書化されていないため、私の例を参考にして、独自のカスタム用語を作成してください。以下の例では、サンプルライブラリのスクリーンショットと、ポップアウトドロワーに表示されているバンドルの内容を示しています。このファイルはURL Utilities.sdef定義ファイルとして識別され、実際にはスクリプトバンドル内に保存されています。
AppleScriptライブラリ用にカスタム用語集を作成した場合、他のスクリプト対応アプリケーションと同様に、AppleScript辞書ビューアに追加されることにもご注意ください。辞書ビューアを起動すると、すべてのコマンドの詳細と、追加したヘルプドキュメントを確認できます。これは、私のサンプルプロジェクトで行ったのと同じです。
これらの機能はすべて、強力なAppleScript Objective-C (ASOC) と組み合わせることで、さらに幅広い可能性を実現できます。私はObjective-Cを少し理解しているのと、AppleScript風の構文の読み書きが難しいと感じているため、個人的にはASOCをあまり使用していません。しかし、AppleScriptのヘビーユーザーであれば、ぜひASOCの機能を試してみることをお勧めします。
これらの機能は便利だと感じますが、単純な自動化タスク以上のことを行うために、PythonやObjective-Cのようなより強力な言語ではなくAppleScriptを選ぶほどではないと思います。全体的に見て、MavericksはAppleScriptを再び一定のレベルに引き上げました。Mavericksの新しいAppleScriptライブラリで、簡素化され再利用可能なコードブロックを構築できるようになったので、AlfredワークフローやHazelルールでAppleScriptをもっと活用することを検討するかもしれません。何よりも、Appleがこれらの強化された自動化ツールでパワーユーザーに焦点を当てていることを嬉しく思います。これは、OS Xがまだ明るい未来を持っていることの兆候であることを願っています。
追加コンテンツと特典にアクセスする
Club MacStories は 2015 年に設立され、ほぼ 10 年間にわたって毎週独占コンテンツを提供してきました。
毎週、毎月の電子メール ニュースレターから始まったものが、すべての MacStories ファン向けに設計されたメンバーシップ ファミリーに成長しました。
詳細については、こちらおよびクラブの FAQ をご覧ください。
Club MacStories : アプリ、ヒント、自動化ワークフロー、長文執筆、MacStories Unwind ポッドキャストへの早期アクセス、定期的な景品など、盛りだくさんの情報を満載した、電子メールと Web 経由の週刊および月刊ニュースレター。
Club MacStories+ : Club MacStories が提供するすべての機能に加え、アクティブな Discord コミュニティ、クラブの過去のカタログ全体を閲覧するための高度な検索機能とカスタム RSS 機能、ボーナス コラム、多数のアプリ割引などが含まれます。
Club Premier : 上記のすべてに加え、早期に、広告なしで、高ビットレートのオーディオで配信される当社の主力ポッドキャストの拡張バージョンである AppStories+ が含まれます。