|
《 オブジェクトを具体的に指すデータ
》
|
|
|
」
|
ということは、もしかして僕も日常的に参照してるかも…ですか? |
|
先生
|
もちろんさ。referenceを「参照」なんて直訳した人間の顔が見たいものだ。これは、具体的なオブジェクトを指定するデータ
だ。地図付きの住民票みたいなものだよ。「首相官邸」とか「霞ヶ関ビル」とか、住所でも名前でもいい。 「次の角を左へ曲がって3つ目の信号を右折して2軒目の、コンビニがあるマンション」なんてのでも構わない。 |
|
」
|
もしかすると、前回の「邪馬台国への道標」と同じですか? |
|
先生
|
よく覚えていたねぇ。これだけは誉めてあげよう。とにかく対象となる目的、つまりオブジェクトだね、そこに正確にたどり着ければいいんだから。そういう意味では、柔軟性が高いとも言えるね。 |
|
」
|
まるでタクシーの運転手に行き先を伝えるみたいですね。 |
|
先生
|
ほうっ、君もたまにはいいことを言うね。正にその通りさ。ただ運転手に理解できないような指示じゃ話にならないがね。 「確か、その先を入った辺りに白っぽい家があったはずで、えー‥‥、あれっ、ないなぁ」なんてやってちゃ天下のマックも泣くに泣けないからね。だから、参照にはちゃんとAppleScriptに理解できるように正確にオブジェクトの要素や属性を指定しないといけないんだ。 |
|
」
|
それでset と参照の関係は? |
|
先生
|
えっ?あぁsetね。それは例えば、
set aCharacter to first character of document "私の書類" なんて書いた時、変数に文字が1つコピーされるんじゃないんだ。その代わりに変数に、ちょうどそこの文字を指すためのデータが格納される。もちろん「first
character of document "私の書類"」って文章がそのまま入るわけじゃないよ。 |
|
」
|
つまり、「あのドキュメントの最初の文字ね!ヨロシク…」って具合に指示するデータですね。 「ここ」っていう目印を立てているようなものだっ。 |
|
《 あるクラスのすべての要素について繰り返す
》
|
|
|
先生
|
さぁ、ここで図1のスクリプトを見てみよう。まず復習だが、 repeat with aFile
in (every file of aFolder) が、aFolder内のすべてのファイルについて繰り返すということ、そして (every file of aFolder)の値が「リスト」という形のデータになる。ここまではいいね。 |
|
」
|
はい。 |
|
先生
|
ところでそのリストの中身なんだが、どうなっていると思う? |
|
」
|
「参照が並んでいる」って言いたいんでしょう。 「ファイルの名前がずらずら並んでる」なんて間抜けな答をすると思ったんですか。 |
|
先生
|
分かったよ、君は賢い。でも「every file」なんて言い方ですべてのファイルが処理できるのは不思議だろう? |
|
」
|
確かに。 |
|
先生
|
実は、 every
△△ of ○○
というのは参照形式の1つで、コンテナ内の特定のクラスのすべてのオブジェクトを指定するんだ。 ここではaFolderの中のすべてのファイルだね。○○がコンテナ、△△はその要素でなければならない。 |
|
」
|
コンテナと要素、そして属性! すべての鍵はそこですね。 |
|
先生
|
だからaFileはfileクラスのオブジェクトを指している。従って、
name of aFile という指定で、fileクラスの属性であるnameが取って来れるんだ。
|
|
《 「命令」の使い方をちょっとだけ練習
》
|
|
|
」
|
ところで先生、用語説明にある単語の多くは「命令」のようですね。openとかcreateだとかって。こういうのも全部命令語なんですか? |
|
先生
|
うん、その通りだ。それはファイルメーカーProの用語説明だね。 |
![]() |
|
| 例えば、
Create New Record with Data ってなスクリプトを実行すると、新しいレコードを作ってデータを入力することができる。 |
|
|
」
|
えっ、アプリケーションのメニューでやるようなこともAppleScriptで命令できるんですか。 |
|
先生
|
当然だよ、ちょっと見ていなさい。先ず「住所録」というデータベースをファイルメーカーProで作っておく。 |
![]() |
|
|
」
|
氏名、住所と電話番号しかありませんね。 |
|
先生
|
練習だからいいんだ。では君はここで初めてのスクリプトを書いてみなさい。 |
|
」
|
えっ、僕が作るんですか? うわぁ、大丈夫かなぁ。えぇーと、これでいいんですか。 |
![]() |
|
|
先生
|
何を寝ぼけているんだい。これじゃ、オブジェクトが分からないでしょ。 |
|
」
|
あっそうか。tell applicationが必要だったんだ。ではと、これでいいですか? |
![]() |
|
|
先生
|
まぁいいから動かしてみなさい。 |
|
」
|
あれぇ、エラーです。オブジェクトが見つからないって言ってますが。 |
![]() |
|
|
先生
|
そりゃそうだろう、何のアプリケーションかは分かるけど、データベース名が指定されてないじゃないの。 住所録が既に開いてあればこれでも通用するけど。 |
|
」
|
おや、そうでした。ではこれでどうだっ。おぉっ、動きましたよ先生!これは感激だなぁ。 |
![]() |
|
|
先生
|
やぁ、よかったよかった。君がスクリプトを作れなかったらどうしようかと思っていたんだ。 |
|
」
|
でも先生、今月はなんだかスクリプトの実例があんまりなかったようでちょっと不満なんですけど。 |
|
先生
|
大丈夫。次回はいろいろなアプリケーションを使ったスクリプトの実例を山ほど見せてあげるから。 |
|
」
|
じゃ、期待していいですね! |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp