| ▲ | いくら実践主義とは言え、本連載はあまりに基本をやらなさ過ぎた…というわけではないが、ちょっと視点を変えて基礎を知っておくことは必要だ。 |
|
|
| ▲ | さりげなく使っているコマンドだが大きく4種類に分類される。 repeatやifは処理の流れを制御するステートメントでいろいろなバリエーションがある。実はAppleScriptは日本語でも書けた、なんて衝撃的な事実も。 |
連載[6-1] 今日はちょっと教科書的にお勉強
| AppleScriptのコマンドを整理してみる |
| AppleScriptコマンド |
| Applicationコマンド |
| Scripting Additionコマンド |
| ユーザ定義コマンド |
| tellやrepeatはステートメント |
| 変数名は複合語にするのが無難 |
| 実は日本語でスクリプトが書ける |
| 途中結果を確認するには |
| ファイルの名前を表示しようとするとエラーに |
| 実行中に文字を入力したい |
| 応用編 |
|
《 AppleScriptのコマンドを整理してみる
》
|
|
|
先生
|
今日は、君も特別なタスクフォースがないようだから、これまで使ったものを含めて、AppleScriptの機能やコマンドを整理してみようかな。 |
|
」
|
あっ、それって助かります。僕も実務的にはAppleScriptをかなり理解したつもりですが、いざとなるとどうも知識が体系的にまとまってなくて困っていたんです。 |
|
先生
|
では何から行こうか。 |
|
」
|
よく分らないのがコマンドです。choose folderとかCreate New Recordとか今までたくさんのコマンドが出て来ましたが、これらがうまく整理できないんです。一体全体、AppleScriptにはどんなコマンドがあるんですか。 |
|
先生
|
いや、これが一杯あるんだね。だから良くも悪くも大変なんだ。まぁ、どうせ一度には覚え切れないから、覚えなくてもいいよ。でも、コマンドには次の4種類があることだけは覚えておいてほしいね。
AppleScriptコマンド Applicationコマンド Scripting Additionコマンド ユーザ定義コマンド じゃ、それぞれについてもう少し詳しく説明しよう。ちょっと教科書的になるけれども、今回は途中で寝ないでくれよ。 |
|
」
|
はいっ。 |
|
《 AppleScriptコマンド
》
|
|
|
先生
|
AppleScriptコマンドは、AppleScriptのシステム自身によって取り扱われるコマンドで、次の6つがある。 アプリケーションの「用語説明」には出てこないから、まあ、この6つはいちおう覚えておかないとね。 copy 値のコピー get 式の評価 count 要素の数え上げ run スクリプトの実行 error エラーの対処 set 変数への値の設定 |
|
」
|
「AppleScriptのシステム自身が取り扱う」というのは、どういうことですか。 |
|
先生
|
これらのコマンドは、「tell ××」などとアプリケーションを指定しなくても使うことができるんだよ。最も基本的なコマンドだね。 |
|
《 Applicationコマンド
》
|
|
|
」
|
Applicationコマンドって言うのは、例えばファイルメーカーProで新規レコードを作成するようなコマンドですね。確かこんな感じだったかなぁ。
Create New Record With Data |
|
先生
|
そう、Create NewはファイルメーカーProのApplicationコマンドだ。 こうしたApplicationコマンドはそれぞれのアプリケーションに伝えられ、アプリケーションがそれを取り扱うので、使う時は明示的にどのアプリケーションかを指定する必要がある。 |
|
」
|
例の tell application アプリケーション名 |
|
先生
|
そう、tellステートメントだ。tell 〜 end tellの中にコマンドは複数だろうが何行にわたろうが、いくつでも書けるんだが、Applicationコマンドは、tellステートメントの中でだけでしか使えないから注意する必要がある。例えば
tell application "Finder" でサンドイッチにするのを忘れて、単に delete file 1 of disk "HardDisk500" なんて書いてもエラーになってしまうからね。 |
![]() |
|
|
」
|
あっ、たまにこのエラーに遭遇します。 |
|
先生
|
どんなアプリケーションを対象とするかによって、実行できるApplicationコマンドが決まる。他人の書いたスクリプトを見ると、tellの中に見慣れないコマンドがたくさんあってビックリするだろう。 |
|
」
|
はいっ。 |
|
先生
|
でも何とかなるもんだ。何しろApplicationコマンドについては、そのアプリケーションの辞書(用語説明)に書いてあるから、一見難しそうでも丹念に辞書を見ていけば理解できるんだよ。 |
![]() |
|
|
」
|
スクリプト編集プログラムで「用語説明を開く」メニューで目的のアプリケーションを選ぶんでしたね。 複数のアプリケーションで共通なコマンドもありますよねぇ。 |
|
先生
|
標準的なコマンドとしては,
make 対象の新規作成 なーんてほとんど英語の一般動詞のようなものがたくさんある。ただしアプリケーションによって実行できるコマンドは違うし、使い方も若干違ったりする。同じコマンドでも実行する内容が異なることもあるから注意しよう。 |
|
《 Scripting Additionコマンド
》
|
|
|
」
|
ところで先生、今まで使ってきたコマンドで
choose file なんてのがありましたけど、これはAppleScriptコマンドじゃないんですか。 FinderやファイルメーカーProの辞書を見ても、こんなの見つかりませんから、Applicationコマンドでもないんでしょう。 |
|
先生
|
これらはScripting Additionコマンドという種類のものだ。 機能拡張フォルダの中にある「スクリプティング機能追加 」(Scripting Additions) フォルダの中に、ファイルとして格納されているんだ。 |
![]() |
|
|
」
|
「スクリプティング機能追加」と言うからには、機能やコマンドを追加拡張するんですか。 |
|
先生
|
そう、こうしたファイルによって、AppleScriptコマンドに新しいものが追加されるんだ。ただし、ファイルではなくてAppleScript機能拡張モジュール内に納められているコマンドもある。activateなどがそうだがね。 |
|
」
|
どんなコマンドが追加されているのか知る手立てはないんでしょうか。 |
|
先生
|
辞書で確認できるよ。アプリケーションと同様に、スクリプティング機能追加のファイルもその用語説明を開くことができる。1つのファイルの中に1つか複数のコマンドが納められているのが普通だ。 |
![]() |
|
|
」
|
確かに、「ファイルを選ぶ」というスクリプティング機能追加ファイルの用語説明に 、choose fileやchoose folder がありますね。 |
|
先生
|
このほかによく使うコマンドには、こんなものがあるね。
activate アプリケーションを前面に ま、ほかにもあるけど、その大部分はほとんど使わないから、こんなものでいいだろう。 |
|
《 ユーザ定義コマンド 》
|
|
|
」
|
先生、先ほどおっしゃったコマンドの種類に、「ユーザ定義コマンド」というのがありましたが、これは何なのでしょうか |
|
先生
|
要するにサブルーチンさ。前回説明しただろう。
on average(x,y,z) average(10,20,30) なんて、あたかもコマンドであるかのようにそれを呼び出せるわけだ。 |
|
《 tellやrepeatはステートメント
》
|
|
|
」
|
コマンドについては分かりましたが、tellとかifとかあるいはrepeatとかは何なんですか。 コマンドじゃありませんよね。 |
|
先生
|
これらは処理の流れを制御するステートメントなんだ。今まで出てきたのは、
tell 〜 end tell なんてのがあったね。 |
|
」
|
repeatはさらに、 repeat with 変数 in リスト 〜 end repeat とかいろいろな書き方がありましたよね。 |
|
先生
|
そうそう、ほかにも、 repeat until 条件 〜 end repeat (条件が成立したら繰り返しをやめる) repeat with 変数 from 初期値 to 最終値 by ステップ〜 end repeat (変数を初期値から最終値までステップずつ変化させる) なんていうのもある。あるいは繰り返し条件を冒頭で指定せずに、 repeat というように、内部で条件を判断してexit repeatステートメントで繰り返しを抜ける方法もあるんだ。 |
|
」
|
ほかにはどんなものがあるんですか。 |
|
先生
|
処理に時間がかかる時に、一定時間で打ち切るためのwith timeoutとか、大文字/小文字を区別するconsideringとかがあるけど、滅多に使うもんじゃないね。 |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp