Automator でサービスを作成する前に...

ようやくのことで Snow Leopard を入れてみました。環境を整備し、ソフトウェアを入れ、じっくりと触ってみました。なんだか、描画が変になることがありますし、微妙な違和感(バグかどうかよくわからない現象が時々起こる)があります。Leopard の方が使いやすかったなぁ...。Leopard は手に馴染んでいた。まぁ、使い勝手は慣れてくるのでしょうが。

さて。

今更の感もありますが、Snow Leopard の目玉の一つ、Automator。以前にも Automator の記事を書きましたが、Snow Leopard になっていろいろと便利になったようなので、Snow Leopard に対応したものを。

Automator は、基本的にはなんらかの「入力」を受け取り、それらを「加工」し、加工したものを「出力」します。この処理プロセスはプログラムの基本なのですが、Automator はプログラムらしさを排除し、わかりやすいインターフェースで処理プロセスを作成することができるアプリケーションです。

Automator が入力として受け取れるデータはいろいろとありますが、基本は「ファイル/フォルダ」か「テキスト」です。出力も同様です。

Automator は入力されたデータを「加工」するのですが、データを加工するのが「アクション」です。アクションは単体で動作するものもありますし、それだけでは動作しないものもあります。アクションを一つ、または複数つなげることで目的のデータに加工し、出力します。アクションは直前のアクションが加工したデータを入力として受け取り、次のアクションに加工したデータを渡します。最後のアクションが出力するデータが最終的な結果となります。

アクションを一つ、または複数並べたものを「ワークフロー」といいます。ワークフローを保存しておくことで様々な場面で繰り返し利用することができます。

Automator を起動すると、最初に「ワークフロー」のテンプレートを選択することになります。利用目的によってこれらのテンプレートから一つを選び、ワークフローの作成を開始します。

テンプレート「ワークフロー」は汎用的なワークフローです。目的に応じてワークフローを作成し、保存しておきます。保存したワークフローの利用方法は多岐に渡ります。

保存されたワークフローを ~/Library/Scripts に入れておくことで、スクリプトメニューから利用することができます。また Terminal からワークフローを指定して automator コマンドで処理をさせることができます。

テンプレート「ワークフロー」で作成したワークフローは「プリントプラグイン」、「イメージキャプチャ・プラグイン」としても利用できます。これらは特別に Automator のテンプレートを利用しなくても特定のフォルダの中に入れておくだけで利用できます。

また、ワークフローを「アプリケーション」として保存しておくとドラッグ & ドロップでデータを受け取ることができるようになります。アプリケーション形式だと「iCal アラーム」としても利用できます。

基本的にはテンプレート「ワークフロー」でワークフローを作成、保存しておくことで上記のような利用が可能になります。しかし、このテンプレートでは「サービス」と「フォルダアクション」として利用できるワークフローにはなりません。「サービス」と「フォルダアクション」だけは少し特殊で、これらはテンプレートを利用しないと作成することはできません。

「フォルダアクション」は最初に対象となるフォルダを設定しておく必要があります。フォルダを設定し、保存(~/Library/Workflows/Applications/Folder Actions に保存される)した時点でフォルダアクションは実行されるようになります。停止は ~/Library/Workflows/Applications/Folder Actions から対象のワークフローを取り除くことによって行います。

「サービス」は ~/Library/Services にワークフローとして保存されるのですが、普通のワークフローではなく、サービス経由でデータを受け取れるように設定されて保存されます。この設定があるため、通常のワークフローは「サービス」として利用することができません。

と、まぁ基本的なところは以上でしょうか。

なんといっても目玉は「サービス」なんでしょうね。ところで、Snow Leopard になってから /Library/Scripts にインストールされるスクリプトが減りましたね。Finder 関連のものは全てなくなってしまいました。また、ColorSync のスクリプトは ColorSyncScripting を利用していたのが sips で代用するようになっていますね。Finder 関連のものがなくなったのは Automator の「サービス」があるからいいでしょ、ということでしょうか。

なくなった Finder 関連のスクリプトの代替サービスは Mac OS X Automation: Services Downloads で入手することができます。ここからダウンロードできるサービスとアクションは全て入れておくといいと思います。便利なものが揃っています。中でも面白いのが「Website Popup」というアクション。URL を渡すと半透明の HUD ウィンドウにウェブサイトを表示してくれます。

今回、久しぶりに Automator を本格的に触ってみました(Mac OS X 10.5 の時は全く使っていませんでした)が...、なかなか楽しませて頂きました。Finder 関連のスクリプトがなくなるのもむべなるかな。

しかし、分かりにくいところもありますが。とてつもなく分かりにくいのが、変数。その次に分かりにくいのが「サービス」の「選択項目」と「検索対象」。両方とも理解できるとどうってことないのですが。

まず、「サービス」の「選択項目」。基本的には「選択されているテキスト」か「選択されているファイルまたはフォルダ」のいずれかになります。さらに「選択されているテキスト」は「URL」、「アドレス」、「電話番号」、「日付」、「メールアドレス」のいずれかから選択することができます。例えば、URL を選んでおくと URL 以外の文字列を選択してもサービスのメニューには表示されません。

サービスはこのように賢く振る舞ってくれるのですが、正確には URL を含んでいる文字列を認識し、それをワークフローの入力として渡します。ですから、入力された文字列は、必ずしも正確な URL だとは限りません。正確な URL を抜き出す作業はユーザーに一任です。この作業を行ってくれるアクションは Mac OS X Automation: Services Downloads からダウンロードできます。Get URLs from Text がそれですが、Get Dates from Text というアクションも一緒にぜひとも入れておきましょう。

「ファイルまたはフォルダ」も同様で、例えば「イメージファイル」を選択しておくと「イメージファイル」以外が選択されているときはメニューに表示されません。

「検索対象」は作成した「サービス」がどのアプリケーションで表示されるかを設定するためのものですが、「すべてのアプリケーション」を選択することでどのアプリケーションであってもメニューに表示されるようになります。問題は「選択項目」でこれを「入力なし」にするとアプリケーションのサービスメニューにしか表示されないようになります。コンテキストメニューの方では表示されません。

つまり「選択項目」を「入力なし」、「検索対象」を「すべてのアプリケーション」にすると、すべてのアプリケーションで利用できるけど、アプリケーションメニューのサービスメニューにしか表示されないサービスになるのです。このようなサービスはいつでもどのような状況からでも利用できるメニューになるのでキーボードショートカットを与えておくと便利に利用できます。

「選択項目」と「検索対象」でどこのメニューに表示されるか、どのようなときに表示されるかが決定されます。

Automator は Mac OS X 10.5 の時から「変数」が使えたのですが...正直、目的の変数をどのように作るのか理解するのには骨が折れました。

「変数」は便利なように最初からデフォルトの値を持ったものがあります。歯車のアイコンがついているものがそれです。他方、値をカスタマイズできるように設定を行える変数があります。V というアイコンがついているものがそれです。

これらの用意さている変数を組み合わせて目的の変数を作成します。では、例えば、ファイルを保存するのに一意の名前を付けたい、といったとき。スクリーンキャプチャしてファイルを保存するとき、「Capture-ユーザー名年月日時間」といった書式のファイル名を作りたいとします。

必要なのは「ユーザー名」と「年月日」と「時間」、それに保存する「場所」です。これらは用意されている変数から作成します。

まず、Automato の「変数」を表示し「ユーザー」を選択、その中にある「ユーザー名(ショートネーム)」をダブルクリックします。

Automator で変数を配置する

すると、ウィンドウの下部にある「変数」に「ユーザー名(ショートネーム)」が追加されます。

変数一覧に追加された変数

同様の手順で「場所」から「ピクチャ」を。そして、「日付と時刻」から「今日の日付」と「現在の時刻」を追加します。これらは値をカスタマイズできる変数です。現在、変数一覧は次のようになっています。

追加された変数一覧

「時刻」と「日付」の書式をカスタマイズします。変数一覧にある「今日の日付」をダブルクリックすると小さなウィンドウが表示されます。「名前」は変数名になります。the_date としておきます。「フォーマット」から「カスタムフォーマット...」を選択し、下図のようにします。

日付のフォーマットを変更

年月日の間にあるハイフンは自分で入力します。また、月日はそれぞれ 2 桁になるように変更しておきます。

月日を 2 桁表示に

同様の手順で「現在の時刻」も下図のように変更しておきます。

時刻のフォーマットを変更

以上で必要な変数は揃いました。後はこれらを組み合わせてファイル名を作成します。変数一覧の部分でコンテキストメニューを表示すると「新規変数...」というメニューが現れます。これが、欲しかった変数で見つけるのに時間がかかった変数です。

コンテキストメニューの「新規変数...」メニュー

この変数は「テキストとデータ」にある「テキスト」という変数なのですが、まさか、これを使って複数の変数を組み合わせるなんて思いもよりませんでした。ともかく、「新規変数...」を選択するとこの変数が追加されます。追加された変数をダブルクリックし、下図のようにします。

変数の変更

分かりにくいのですが「値」は変数一覧にある変数をドラッグ & ドロップして追加します。『ピクチャ』「Capture-」『ユーザー名(ショートネーム)』「_」『the_date』「T」『the_time』という並びになっています(『』で囲んでいるものが変数一覧からドラッグ & ドロップしたもの。「」で囲んでいるものは記述したもの)。

この file_name という変数をワークフローのところにドラッグ & ドロップし、「結果を表示」アクションを使うと変数がどのような結果を返すかが確認できます。

変数の結果を確認

こうやって作った変数はスクリーンキャプチャの保存先や、新規テキストファイルの保存先などとして利用することができます。拡張子は必要ありません。適宜、補ってくれます。

変数を保存先に適用

変数はこうやって使うのですね...。全く知りませんでした。

実際にいくつかサービスを作ってみようと思ったのですが...そこにたどり着くまでが長かった。ということで、次の機会にでも。

0 件のコメント :

コメントを投稿