用語の同義語

同義語とは

 AppleScriptでは、別の書き方をしても、全く機能に違いがないものが少なくありません。このような用語を同義語とします。
 「省略できる用語」と似ていますが、同義語の場合は省略しているわけではないので、構文確認時に単語が補完されたりはしません。

 同義語の多くは、スクリプトがより自然な英語に近くできるようにする配慮から用意されています。
 このような繊細な配慮は、AppleScriptをAppleScriptたらしめている部分ですが、日本人にとっては、気にすることが増えて面倒なだけだったりします。
 一応、ざっと眺めておく程度にして、無理に使い分けようと考えない方がいいでしょう。
 私は折角だから使い分けようかと思って、ドツボにハマりました。要するに英語が良く分かってないという事実を再確認しただけだったのでした(はっはっは)

stringとtext

 stringとtextは、ほとんどの場合同義語と考えて差し支えないのですが、命令の引数として使われる場合に、意味が異なることがあります。
 例えば、次のスクリプトは、クリップボードにスタイル付きテキスト(styled text)が格納されている場合、動作に違いが見られます。

the clipboard as string
the clipboard as text

 また、textは複数形もtextなので、パッと見ただけでは複数形か単数形かの区別がつきません。
 複数形がstringsとなって、確実に区別のつくstringを主に使うことをお勧めします。

演算子

 特に演算子には、豊富な表現が用意されています。初心者は勿論、かなりAppleScriptに手慣れてきた人でも始めてみる表現が多いのではないでしょうか。
 is not greater than or equal toという冗長な表現が必要だったかどうかは怪しいのですが、Appleが本気で「自然言語(英語)と同じ感覚で使えるコンピュータ言語」を目指していることを感じられるのは確かです。
 この表には、構文確認によって変換された後のもののみを掲載しています。実際は、省略語や同義語がさらに多く存在しますが、スクリプトを読む際には知っておく必要がないので、省略しました。

 それから、Mac OS XのScriptEditor 2.0やXcode(Project Builder)は≠,≧,≦を正しく認識できないので、この同義語に置き換えてやる必要があります。

代表的な演算子同義語
= is, is equal to
is not, is not equal to
> is greater than, comes after, is not less than or equal to
< is less than, comes before, is not greater than or equal to
is greater than or equal to, is not less than, does not come before
is less than or equal to, does not come after
starts with begins with

順序数

 順序数は序数とも言われますが、物事の順番を表すための数字のことです。
 次のスクリプトは、全て同じ意味です。

item 1 of {1, 2, 3, 4}
1st item of {1, 2, 3, 4}
first item of {1, 2, 3, 4}
front item of {1, 2, 3, 4}

 以下は数字と序数の対応表です。

12345678910-1
1st2nd3rd4th5th6th7th8th9th10th-1th
firstsecondthirdfourthfifthsixthseventheighthninthtenthlast
frontback

オブジェクトの指定

 通常、オブジェクトを指定する場合は「of 〜」を使いますが、「in 〜」や「〜's」という表現も使えます。
 例えば、次のスクリプトは同じ意味です。

item 1 of {1,2,3,4}
item 1 in {1,2,3,4}
{1,2,3,4}'s item 1

 ちょっと「〜's」の例が分かりにくかったかもしれません。次のように利用すると、だいぶ自然な表現になることが分かると思います。
 でも、「〜's」を使うことはあまりないと思います。

set theRack to {1,2,3,4}
theRack's first item

 ただし、例外的に非常に良く見かける表現に「〜's」が使われています。
 実は、次のスクリプトは同じ意味です。

AppleScript's text item delimiters
text item delimiters of AppleScript's

 また、「of me」と「my」は、「of 〜」と「〜's」の関係にあります。
 ですから、次の3つのスクリプトは同じ意味になります(me'sなんていう、怪しげな表現を使っているスクリプトは見たことありませんが)

handlerX() of me
me's handlerX()
my handlerX()

 また、「of it」と「its」も、「of 〜」と「〜's」の関係にあります。
 ですから、次の3つのスクリプトは同じ意味になります。

handlerX() of it
it's handlerX()
its handlerX()

 それから、直接引数がかける命令は、引数の前に書いても、後に書いても認識されます。
 引数と命令の関係が分りにくくなるので、あまり使うべきではないと思いますが、他のオブジェクト指向言語に馴れている人のスクリプトには出て来がちなので、スクリプトを読む時に戸惑わないように、使えるという事は知っておいていいでしょう。
 次のスクリプトは同じ意味です。

count "abc"
"abc" count

tellはofと同義ではない

 tellを使ってオブジェクトを指定することもできますが、これは「〜 of」や「〜's」と同義語ではありません。
 一見、全く同じように見える次のスクリプトは、tellでないと動作しません。

tell application "Finder" to tell disk 1 to name
name of disk 1 of application "Finder"

 これは、tellの場合、それ以後でtellで指定したアプリケーションの用語が利用できるようになるのに対し、ofではアプリケーションの用語利用の宣言にはならないからです。
 もちろん、tellでアプリケーションを指定した後は、用語の利用が可能になっていますから、ofで書いてかまいません。というか、tell〜toでひたすらオブジェクトを指定しているスクリプトは、Appleのサイトにある「AppleScript入門」でしか見たことありません(記事は無くなっています2004-03-09)
 入門記事で、こんなイレギュラーな書式を用いていいものか、かなり疑問です。
 釈迦に説法だと思いますが、通常は、以下のように書きます。

tell application "Finder" to name of disk 1

 documentなどの、主要なアプリケーションの用語は、AppleScript本体で定義されているので、tellブロックの外でも使えます。
 とはいえ、あまり多用しない方がいいですが。

name of document 1 of application "QuoEdit"

 同義語で解説するものでもないような気もしますが、流れで解説しました。
 後で、独立したトピックスとして紹介するかも。

同義語色々

 以下のような用語にも同義語がありますが、特に注意することはないと思います。

用語の種類同義語
フィルタ参照 whose,where,that
全要素参照 every, 〜s(複数形)
ハンドラ on, to
copy命令 copy〜to, put〜into
count命令 count, number of

2001-09-06 -2004-03-09 -2004-03-22