今日やったことは、Automator というより AppleScript なんだが、行き着くところは Automator になる、ってことで。
この Automator という Mac OS X 付属のアプリは、各種アプリを AppleScript で制御して、Mac の操作を自動化するためのツールだ。Automator で作る自動処理のためのプログラムをワークフローと呼ぶ。これを、Automator にライブラリとして提供されているアクションを組み合わせて作る。基礎になっているのは、UNIX の世界でお馴染の「パイプとフィルタ」に近い考え方だ。
Automator が「パイプとフィルタ」だということを説明するための例を挙げる。説明のためにでっちあげたものだから実用的ではない。
- Finder で(画像)ファイルを選択する。
- それを別の場所にコピーする。
- コピーした画像のフォーマットを変換する。
- 変換した画像ファイルからPDFを作成する。
各項目が Automator のライブラリとして提供されているアクションだ。最初のアクションで選択されたファイル名が、二番目のアクションに入力としてわたり、コピー後のファイル名(コピー先のパス付き)が、三番目のアクションの入力として伝わり、……、というように各アクションが入力と出力によって連続して結びつけられる。中間データがファイルとして残ってしまうため厳密には「パイプとフィルタ」とは言えない。とはいえ、既存のプログラムを次々につなげて新しい処理を作るという点から見れば、同じアーキテクチャだと言っても良いだろう。クリップボード経由でデータをやり取りできれば完璧かな。
さらに、AppleScript やシェルスクリプトの実行もアクションとして組込める。たとえば、以下は、今日、試行錯誤の上にどうにか作ったワークフローのアクションの一つ。「ターミナル.app」のウィンドウを 2 つ開き、それぞれ固定の位置に置く、というものだ。いつも手でやっていることを自動化してみた。
(startterminal.scrpt)
1: on run {input, parameters}
2:
3: (* Your script goes here *)
4: if application "Terminal" is not running then
5: tell application "Terminal"
6: -- Launch "Terminal.app"
7: -- Then, move the "Terminal" window to the fixed position.
8: set position of window 1 to {-1192, 0}
9: set input to id of window 1
10: -- Open a new "Terminal" window
11: -- Then, move it to the position specified in this script.
12: -- NOTE: a new window always appears at the front most.
13: -- So, it can specified as "window 1".
14: do script ""
15: set position of window 1 to {-1192, 784}
16: end tell
17: end if
18:
19: return input
20: end run
Mac にログインした後、いつも起動するアプリがあるとする。単に起動するだけならログイン項目(「システム環境設定」>「アカウント」)に登録すれば良い。けれど、上記のようにウィンドウを複数開いておきたい、ウィンドウを決まった場所に置きたい(前回、終了した位置に関係なく)、などの要求があるなら、Automator (AppleScript) の出番になる。
ただし、すべてのアプリが Automator (というか AppleScript) の制御を受け付けるわけではない。また、制御を受け付けたとしても、アプリごとに微妙に「クセ」があったりもして、なかなか手強い。
通常、GUI ベースのコンピュータは手で動かすものと思い込んでいる。Mac OS X の場合、Automator と AppleScript を使うことでその制約を取り払うことができる。iPhone や iPad でも、こういう仕組みが提供されると良いのにね。
関連リンク
- Mac OS X - Automator Actions (Apple - Downloads より; Automator で使える action がダウンロードできる)
- Mac OS X Automation (OSX の自動化についてのまとめサイト; Automator、AppleScript の解説がある)
0 件のコメント:
コメントを投稿