56
Tigerのカスタマイズをコントロール:Automator

編集者注:以下の記事は、TidBits Electronic Publishingからダウンロード可能な5ドルの電子書籍『Take Control of Customizing Tiger』からの抜粋です。2005年5月にMatt NeuburgがSpotlightについて解説した記事を抜粋しましたが、この記事ではAutomatorに焦点を当てています。

コンピュータの究極の目的は自動化です。ワープロでテキストを編集するような単純な作業でさえ、一つ一つ自分でやるとしたら非常に面倒な作業を自動化しているのです。(信じられないなら、コンピュータをタイプライターに買い替えてみてください。行末でキャリッジリターンを叩き、段落ごとにスペースを空けることを忘れず、スペルミスをしないように気を付けてください。間違えたらページ全体を再入力するのはやめましょう!)

それでも、コンピューターはあなたが何をしたいかを事前にすべて知っているわけではありません。そのため、同じ操作を何度も繰り返し実行してしまうこともあるでしょう。あるいは、やり方は分かっていても、面倒で時間がかかりすぎるため、実行しないこともあるかもしれ ませ ん。これは望ましくない状況です。つまり、役割が逆転しているということです。つまり、コンピューターではなく、人間であるあなたが自動化されているのです。

コンピュータの黎明期から、この問題を解決する伝統的な方法は、繰り返しの多い、あるいは退屈な処理を実行する新しいコンピュータプログラムを作成することでした。しかし、既にコンピュータにインストールされているアプリケーションで必要な個々のステップを実行できるのであれば、全く新しいプログラムを作成する必要はありません。問題は、それらのステップを一つ一つ実行するのではなく、それらのアプリケーション自身に実行させることです。だからこそAppleはAppleScriptを開発しました。AppleScriptは、既存のアプリケーションで実行できる一連のアクションを組み立て、いつでも好きなときに実行できるようにするものです。

しかし、AppleScriptはプログラミング言語であり、多くのユーザーはプログラミング言語に抵抗を感じています。そこでAppleはTigerで、新しい自動化技術、Automatorと呼ばれるアプリケーションを導入しました。Automatorを使うと、ユーザーはプログラミングを一切行わずに、一連のステップ( アクション )を1つのシーケンス(ワークフロー に組み立てる ことができます。ワークフローはドキュメントとして保存できるため、一度作成したワークフローは後で開いて、同じ一連のステップを1回の操作で実行できます。

Tigerには多数のAutomatorアクションが付属しており、これらのアクションは/System/Library/Automatorに保存されます。また、Tigerが成熟するにつれて、サードパーティ製のアクションが多数開発されることが予想されます。そのようなアクションを入手したら、/Library/Automatorまたはユーザーディレクトリの~/Library/Automatorに保存することになります。

サードパーティ製アプリケーションが独自のアクションを組み込むように記述されている場合もあります。その場合、そのアクションはAutomatorで使用できますが、個別のファイルとして表示されることはありません。例えば、BBEditを最新バージョンにアップデートすると、テキスト操作用の約20個の新しいアクションがAutomatorに魔法のように追加されます。

AppleScriptに応答するアプリケーション(つまり、 スクリプト可能な アプリケーション)は、Automatorアクションのターゲットとして最適です。そして、スクリプト可能なアプリケーションをターゲットとするAutomatorアクションの裏側では、その中核となるのは通常、AppleScriptスクリプトです。そのため、Automatorでワークフローを構築する際には、一連のAppleScriptスクリプトをつなぎ合わせることになるでしょう。ただし、AppleScriptの知識は必要ありません。スクリプトは既に記述されており、ユーザーが目にすることはありません。

Automatorワークフローを作成する

Tigerに付属のアクションを使えば、今すぐアクションを繋ぎ合わせてワークフローを構築し、これまで不可能だと思っていたことを実現できるようになります。Automatorワークフローは、Tigerのカスタマイズにおいて重要な役割を果たすようになるでしょう。

Automatorワークフローの作成プロセスを説明するために、説明のためにタスクを一つ設定してみましょう。例は非常にシンプルなものになります。Automatorのすべてを説明しようとしているわけではありません。ただ、基本を理解して、自分で実験してみることをためらわないように、実際に使ってみようと思っています。

インターネットのニュースグループでよくこんなことを言う人を見かけます。「ファイルでいっぱいのフォルダがあって、ワードプロセッサでそれらのファイル名を一覧表示したいのですが、どうすればいいですか?」さて、この問題はいくつかの方法で解決できます。ターミナルを使うこともできますが、ターミナルが苦手だったり、Unixコマンドが苦手だったりする人も多いでしょう。Bare Bones SoftwareのフリーウェアTextWranglerを使うこともできますが、おそらく気づいていないかもしれません。さて、本当の問題は、どうすればこの問題を自分で解決できるかということです。

こういう状況ではAutomatorを使って、パソコン上のアプリケーションやアクションが目的のタスクの実行に役立つかどうかを確認しましょう。さあ、やってみましょう!

ステップ 1 : Automator を起動します。(アプリケーション フォルダにあります。) 新しいワークフロー ドキュメントが開きます。

Automatorワークフロードキュメント

画面を見てください。左側にはAutomatorのすべてのアクション(「アクション」列)がリストされています。リストは2つの方法でフィルタリングできます。「アプリケーション」リスト(「ライブラリ」列)で1つまたは複数のアプリケーションを選択して、それらに適用されるアクションのみを表示するか、ウィンドウ上部の検索フィールドに検索語を入力することができます。右側には大きな空白領域があり、使用したいアクションをドラッグして、上から下への順序になるように並べ替えることができます。

ステップ2:問題について考えてみましょう。どのように始まりますか?「フォルダがあります…」。シーケンスの最初のステップは、フォルダを指定することです。ライブラリ列で「アプリケーション」をクリックし(すべてのアクションを検索するため)、次のように入力します。

フォルダ

検索フィールドに入力すると、フォルダーに関連するアクションを見つけやすくなります。

ステップ3:最初に見つかったアクションは「選択されたFinder項目を取得」です。これをクリックすると、左側の下部にあるパネルで詳細を確認できます。説明には、「このアクションは選択された項目を取得し、次のアクションに渡します。」と書かれています。

ステップ4:これは期待できそうですが、最初に目的のフォルダを選択する必要がない方が便利です。どのフォルダを使用するかを尋ねるダイアログが表示される方が望ましいでしょう。ちょっと待ってください。リストの3番目のアクションは「Finder項目の確認」です。これをクリックして説明を読んでください。「このアクションにより、ワークフローの実行時にダイアログでFinder項目を選択できます。」完璧です!「Finder項目の確認」を右側のメインエリアにドラッグします(上のスクリーンショットを参照)。

ステップ5:多くのアクションと同様に、このアクションにも変更可能な特性があります。(アクションは名前のみ、またはすべての特性を表示できます。表示モードを切り替えるには、アクションのタイトルの左側にある三角形をクリックします。)「Finder項目の確認」には「タイプ」ポップアップメニューがあり、項目の種類をファイル、フォルダ、またはその両方に制限できます。素晴らしい!操作するフォルダを選択したいので、「タイプ」ポップアップメニューを「フォルダ」に変更します。また、「開く」ダイアログに表示されるプロンプトテキストも設定できます。「Finder項目を選択」の代わりに、次のように入力します。

リストするフォルダーを選択してください:

ステップ6:Automatorを使うメリットの一つは、ワークフローが完成する前でもすぐにテストできることです。ウィンドウの右上にある「実行」ボタンをクリックします。

ダイアログが表示され、フォルダを選択するように求められます。(「キャンセル」または「OK」をクリックして閉じてください。)ワークフローは正常に動作しています。もちろん、今のところ 選択したフォルダに対して何も 処理は行われていません。

ステップ7:修正しましょう。フォルダーが与えられたら、その中のすべてのファイルを取得する必要があります。アクションのリストをもう一度見てみましょう。うーん…「フォルダーの内容を取得」は良さそうです。クリックして説明を読んでみてください。「このアクションは、指定されたフォルダー内のアイテムを取得します。」いいですね!

ステップ 8 : 「フォルダーの内容を取得」をメイン領域 (「Finder 項目の確認」の後、(下)) にドラッグします。

何が起こるか見てみましょう。2 つのアクションが特定の方法で結合します。アクションには、入力 (そのアクションに送られるデータ) と出力 (そのアクションが生成するデータ) があります。あるアクションを別のアクションに渡すには、通常、最初のアクションで生成されたデータを 2 番目のアクションに渡す必要があります。ワークフロー内のアクション間の結合は、この動作を示しています。「Finder 項目を要求する」は、ファイルとフォルダ (ユーザーがダイアログで選択したファイルとフォルダ) を生成します (この場合は、ダイアログで実際に選択するのはフォルダであるため、1 つの項目 (フォルダ) のみが生成されます)。その後、これらのファイルとフォルダは「フォルダの内容を取得」に渡されます。これが機能するのは、最初のステップの出力が 2 番目のステップの入力 (ファイルとフォルダ) と同じ種類のものであるためです。

ヒント:このプログラミング手法は データフロー図と呼ばれます。各ステップはデータを生成し、それを次のステップに渡します。各ステップは、あるステップの出力を次のステップの入力に渡すという形で視覚的に表現されます。Unixプログラマーは、パイプ という概念を通して同じ概念をよく知っています 。

ステップ9:2番目のステップでは、選択したフォルダの内容を取得しますが、表示されません。この問題に対処するために、Automatorには「結果を表示」という特別なアクションが用意されています。検索フィールドを使ってこのアクションを見つけ、シーケンスの最後にドラッグしてください。

ステップ10:ワークフローを再度実行します。今回は、Automator自体に、選択したフォルダの内容がUnixパスの列として表示されます。ワークフローが動作していることを確認したら、「結果を表示」の右上にあるXをクリックして、必要に応じてシーケンスから削除できます。出力は入力と同じなので、そのまま残しても問題ありません。フォルダの内容は変更されずに渡されます。

ステップ11:次に、前のステップで生成されたUnixパスをテキストドキュメントにキャプチャします。次のように入力します。

文章

検索フィールドに入力して、リストされたアクションを確認します。それぞれをクリックして、その機能について読んでください。「新規テキストエディット書類」に到達したら、ベルが鳴るはずです。新しいテキストエディット書類が作成され、さらに重要なのは、テキストを入力として受け取ることです。つまり、 そのテキストを含む新しいテキストエディット書類が作成されたよう です。うーん、これまでのところ、データフローで生成したのは「ファイル/フォルダ」だけです。これに続けて、入力が「テキスト」であるアクションを実行したらどうなるでしょうか。試してみてください。「新規テキストファイル書類」を最後のステップとしてシーケンスにドラッグします。前のステップと正常に結合されます。これは、私たちが行ったことが許容できることを示しています。Automator がデータを変換します。

ヒント:Automatorのこの機能は、あるデータタイプを別のデータタイプに自動変換する点で重要です。この機能により、あるステップから次のステップに渡されるデータタイプについてあまり心配する必要がなくなります。Automatorが1つのアクションの出力を次のアクションの入力に変換できない場合、それらの結合は拒否され、データタイプが赤で表示されます。これにより、シーケンスが機能しないことがわかります。

ステップ12:ワークフローを実行します。(下のスクリーンショットは完成したワークフローを示しています。)うまくいきました!フォルダを選択すると、その中のファイルとフォルダのパス名を含むTextEditドキュメントが表示されます。

シンプルな自動車メーカーのワークフロー

Automatorの使い方はこれだけです。すべてのワークフローはこのように、一連のアクションを順番に実行するシンプルなものです。複雑なループや判断は一切ありません。

さらに詳しく知るには、付属のサンプルワークフロー(「ライブラリ」列の「サンプルワークフロー」を参照)と、利用可能なアクション(「アクション」列のすべて)を確認してください。作成したいワークフローを考えてみてください。そして、Tigerを使いながら、現在実行している、または実行したい作業をワークフローとして表現することで自動化できないか自問自答してみてください。

AppleScriptプログラマーの方(あるいはテレビで演じている方)にとって、Automatorアクションはスクリプトを他のユーザーに配布する素晴らしい方法です。Automatorアクションは、スクリプトの動作を変更するための小さなインターフェースを提供し、スクリプトをより大きなワークフローに組み込むことができるからです。Automatorアクションを自分で書き始めるには、MacDevCenter.comにある私のオンライン記事をご覧ください。

[ Matt Neuburg は TidBits の寄稿編集者であり、Mac ソフトウェアに関するさまざまな本の著者です。最新作は Take Control of Customizing Tiger ( TidBits Electronic Publishing、2005 年) です。 ]