多くの偉い方々が、AppleScript の書き方などの説明をされています。しかし、AppleScript をはどうやって使うのか、という解説は少ないと思います。大量に自分の作品を公開している手前、作るのではなく使う人向けの解説をしてみようとおもいます。
まずは、やっぱりここから。自分なりの AppleScript 観を語ってみます。
Mac OS X から Unix ベースの OS になったことにより、AppleScript だけでなく bash、Perl をはじめ各種 Unix 由来のスクリプト言語がはじめから使える状態にあります。目的に応じてスクリプト言語を選択すれば良いのですが、明確な目標がなく漠然と Mac の操作を便利にしたいと考えているならば AppleScript をかじってみることをお勧めします。
AppleScript は GUI 環境のシェルスクリプトみたいなものであると感じます。あまり自分自身で作業を行わず、他のアプリケーションに指令を下すことによって、目的を果たすことが主な役割です。シェルスクリプトも自分自身ではたいした機能を持たず、コマンドラインツールを駆使して目的を果たすところはよく似ています。シェルスクリプトで起動できるコマンドは、もっぱらデータのフィルターとしてしか機能しませんが、 AppleScript は対応しているアプリケーションと対話的にデータを構築し、そのデータを他のアプリケーションに渡して・・・という複数の GUI アプリケーションの連係プレイが真骨頂です。
もちろん、コマンドラインツールも下請けになってもらえます。GUI 環境ではコマンドラインツールをシームレスに使うにはなんらかの工夫が必要ですが、その有効な手段の一つが AppleScript です。AppleScript はアプリケーション同士だけでなくコマンドラインツールでさえもユーザーインターフェースの間に割って入って、お互いをうまくつなげてくれます。
言語としての AppleScript はさほど優れているとは言い難いですが、オブジェクト指向言語ですしリストやレコードなどのデータ構造を持っています。すべてテキストデータのシェルスクリプトと比べればだいぶ上等です。
だから、何はともあれ AppleScript です。
Mac OS X のバージョンが上がるに従い、AppleScript での活用範囲や機能が広がってきています。特筆すべきは、
さて、AppleScript はあなたの Mac で、どのような形で存在しうるでしょうか?もっぱら「アプリケーション形式」、「(コンパイル済み)スクリプトファイル」、「テキストファイル」の3つのファイル形式で、目につくのが一般的です。多くの場合、これらのファイルをスクリプトエディタで開くとソースコードを見ることができますが、ソースコードを見れない「実行専用形式」で保存されていることもあります。僕が配布しているものはすべて、ソースコードを見れますし、再利用してかまいません。自分が作ったものを踏み台に、さらにすばらしいものを産み出してくれることを願ってやみません。
とか、というアイコンのファイルは、アプリケーション形式のAppleScriptです。普通のアプリケーションと同じように扱えます。配布されている多くのアップルスクリプトはこの形式でしょう。
は、ドロップレットと呼ばれ、ファイルのドラッグ&ドロップを受け付けます。
はアプレットと呼ばれ、ただダブルクリックで起動するだけです。ドラッグ&ドロップは受け付けません。
多くのスクリプトはやることやったら勝手に終了します。⌘+.(ピリオド)のショートカットキーを押してやると作業を中断して終了してくれます。
中には自動的に終了しないで、定期的に作業を行うようなスクリプトもあります。もちろんそういうスクリプトはその必要があってのことでしょうが、そういったアプリケーション形式のスクリプトを終了するには、明示的に終了の作業(ファイルメニューから終了を選ぶ、もしくは⌘+Qを押す)をしてやる必要があります。
は、スクリプトファイルと呼ばれ、スクリプトメニューを持っているアプリケーションに登録するなどして使います。このファイルだけではスクリプトを実行することができず、何らかのアプリケーションの助けが必要です。一種のプラグインだと思っても大間違いではないと思います。
アプリケーション形式のスクリプトは、このスクリプトファイルの上に、スクリプト実行専用のアプリケーションをかぶせたものであるといえるでしょう。
Finder上で、ダブルクリックすると、スクリプトエディタで開かれます。スクリプトエディタでは、この形式のファイルを実行できたり、アプリケーション形式として保存しなおしたりできます。
この形式のファイル、すなわち Plug-in としての AppleScript をどう扱うかが AppleScript を活用して、Mac を便利に使うかの要になるとおもいます。たとえば、僕の場合は常に数十もの各種自作スクリプトを扱っていますが、それらをすべてアプリケーションとして管理活用するのは、めんどくさくて現実的ではないでしょう。 目的のスクリプトに手早くアクセスする方法も必要になります。くわしくは、下記の AppleScript の活用を読んでみてください。
というアイコンのファイルは、スクリプトのソースコードが書かれた、ただのテキストファイルです。Finder上でダブルクリックするとスクリプトエディタで開かれます。もちろん適当なテキストエディターで、このファイルの中身を見ることができます。
このファイル形式では、実行することができなくてスクリプトエディタで一度コンパイルしてやる必要があります。普通は、スクリプトを開発途中に、コードが不完全でコンパイル済みスクリプトファイルやアプリケーションとして保存できない時に、この形式で保存します。このファイル形式でスクリプトが配布されることはまずないでしょう。
便利そうなAppleScript のサンプルコードをウェブページで発見した場合、スクリプトエディタを起動して、新規書類にコピー&ペーストで貼り付けて実行することができます。スクリプトファイルもしくはアプリケーションとして保存しておくと良いでしょう。
AppleScript はアプリケーション形式で保存すれば、普通のアプリケーションと同じように 、
などの方法で実行することができます。他にも非常に多様な使い方ができ、工夫しだいでいろんな局面で Mac を便利に操作することができるようになります。
スクリプトメニューは、メニューバーに 表示される AppleScript を登録して実行できるプルダウンメニューです。OS X に標準で付属しているので、AppleScript 活用の為の最も基本的なユーティリティーだと思います。
標準の状態にでは有効になっておらず、スクリプトエディタの「環境設定」でメニューバーにスクリプトメニューを追加することができます
常に表示されるメニュー項目と最前面のアプリケーションによって変わるメニュー項目に分けられています。最前面のアプリケーションに従って内容が変化するメニューを付け加えるには、「ホームフォルダ/ライブラリ/Scripts/Applications」フォルダを新たに作り、その中にアプリケーションの名前の付いたフォルダを用意します。
AppleScript だけでなく、シェルスクリプトの実行も行えます。また、任意の書類、アプリケーションを登録できます。ですから、ランチャーになります。万人に有用であると思います。
これで、メニュー項目にショートカットキーを割り当てる事ができれば、最高なのですが・・・・そんな、ショートカットキーを割り当てることができるサードパーティー製のスクリプトメニュー FastScript があります。
Automator を利用すると、AppleScript をサービスメニューから実行でき、キーボードショートカットを割り当てたり、コンテキストメニューから実行できるようすることができます。
Automator も AppleScript も作業の自動化を目的としているという点で、よく似ています。Automatorは、あらかじめ用意されたアクションを並べるだけでコードを書かなくても良いというのは、AppleScript より大分ハードルは低いのですが、凝ったことはできず柔軟性に欠けます。しかし、サービスメニューを作成することができるのは大きな魅力です。
Automator のアクションの一つとして 「AppleScript を実行」がありますので、Automator を利用すれば AppleScript を実行するサービスメニューが作れます。サービスメニューを作ることができれば、ショートカットキーをシステム環境設定のキーボードペインで設定することができます。さらに、コンテキストメニューに表示させることもできます。
Automator は、AppleScript の実行方法としてとても有用です。
指定したフォルダにファイルが追加された時、自動的に AppleScript を実行することができます。「フォルダアクション設定」を用いて設定することができます
応用例としては、
など。
メールのルールはメッセージを受信したら、設定した条件に従ってフォルダに仕分けするなどの用途に使われますね。フォルダに移動するなどあらかじめ用意されたアクションの他に、AppleScript を実行することができます。
標準の状態でも、かなり多くの方法で AppleScript を実行できますが、サードパーティー製ツール(主にランチャー)にも、AppleScript の実行に便利なものが多くあります。自分が見つけられた主だったものを紹介します。
ちなみに、自分が利用しているのは、DragThing、FastScript、LaunchBar です。
ドック型ランチャーの老舗です。ドックにアクリケーションだけでなくスクリプトファイルを登録して実行することができます。Finder でスクリプトファイルをダブルクリックするとスクリプトエディタで開かれますが、DragThing に登録すると DragThing がスクリプトファイルを実行してくれます。そして、
さらに、DragThing 自体も強烈にスクリプタブルなアプリケーションです。Retina ディスプレイに対応していないのが玉に瑕ですが、非常に高機能かつ柔軟です。
ショートカットキーを割り当てられるスクリプトメニューです。OS に付属するスクリプトメニューの置き換えて使用すると良いでしょう。
シェアウェアですが登録しなくとも10個までショートカットキーを割り当てることができます。さらに、スクリプトメニューを開くショートカットキーを割り当てることができるので、これだけでもとりあえずインストールする価値があると思います。
(たぶん)元祖キーボード検索型ランチャーです。
Spotlight のようにインクリメンタルサーチによってアプリケーションを検索/実行を行うことができます。基本、Spotlight はファイルを開くだけですが、LaunchBar をはじめとしたランチャーはスクリプトファイルの実行が行えます。それだけでなく、スクリプトにテキストデータやファイルをパラメータとして渡して実行する仕組みがあります。
LaunchBar で特徴的なのは、検索には日本語を受け付けずアルファベットだけであること。一見、不便に感じるかもしれませんが、インプットメソッドの切り替えを気にしなくても良いということですので、ランチャーと割り切って使えばとても軽快です。他にも、キーボードタイプを減らして素早い操作が行える細かい工夫が随所に盛り込まれています。
LaunchBar とよく似たキーボード検索型ランチャーです。
フリーウェアでありながら気違い染みた多機能性ゆえに、2005年前後に一世を風靡しました。2007年以降は一時期開発が止まってしまい、LaunchBar や Alfred に多くのユーザーが移行したと思います(僕もその一人)。現在は、オープンソースソフトウェアとして復活しているようです。
多くのプラグインがあり、フリーウェアとは信じがたいほど、とにかく多機能。コマンドに対して、任意のショートカットキーを割り当てられるのがうらやましい。そのショートカットキーが有効なアプリケーションまで指定できるので至れり尽くせりです。
昔は、日本語で検索できた気がしますが、今はちゃんと動作しない模様。かといって、LaunchBar のようにインプットメソッドの状態を無視してくれるわけでもないのが玉に瑕。
LaunchBar 同様に、スクリプトファイルにテキストデータ/ファイル参照をパラメータとして渡して、実行することができます。
LaunchBar, Quicksilver と同類のソフトです。今時、一番人気があるようです。
アプリケーション/スクリプトの検索/実行だけならば、フリーで使うことができます。
Automator とよく似ており(こちらが随分と先ですが)アクションをつなげたワークフロー(マクロと呼ばれています)にショートカットキーを割り当てて実行できます。キータイプやコントロールへのテキストの挿入など Automator よりもプリミティブなアクションが用意されています。アクションの中に条件分岐やループまで設定できるようです。
そのアクションの中に、AppleScript の実行があり、ショートカットキーでスクリプトファイルを実行できます。
他にも、アプリケーション/ウインドウスイッチャーやクリップボード拡張の機能もあり、とりとめもなく多機能です。
AppleScript の実行をはじめ、アプリケーションの実行や iTunes の操作など様々なことに、ショートカットキーを割り当てることができます。
すばらしいことに、システムグローバルのショートカットキーだけでなく、前面のアプリケーションごとにショートカットキーの割り当てをかえられます。これでフリーでソースコードが公開されているとは驚愕です。
Mac 及び AppleScript の取り巻く状況は刻々と変化しますので、時々書き直しています。昔を懐かしむために、一応、過去のバージョンも残しています。