Language Guide

新版の AppleScript Language Guide は、内容としては Mac OS 9 から Mac OS X 10.4 でも通用するものだけど、Mac OS X 10.5 Leopard 以降の AppleScript 2.0 をベースに書き直されている。

用いられている説明は AppleScript 2.0 でのもので、以前のバージョンのことと対比しながらの説明は行われていない。このドキュメントが対象としているのは Leopard 上の AppleScript 2.0。もし、以前のバージョンの詳細を知りたければ、AppleScript Release Notes (Mac OS X 10.4 and earlier) を見よ、とある。

のっけから愕然としてしまいますね。

さて、新版の最初の章は Introduction というタイトルで AppleScript の紹介を行っていますが、先に書いたようにこのドキュメントが AppleScript 2.0 以降を対象にしていることを確認しておけば十分ですね。

次の章が AppleScript Lexical Conventions。AppleScript 言語の概観といった体裁になっています。以下、駆け足で。

まず、AppleScript が扱うキャラクターセットのことについて書かれています。どんな文字を使って AppleScript を記述する事ができるか?ですが、ご存知の通り AppleScript 2.0 はユニコードに対応してしまったので『正しく全世界の文字を扱う事ができる』らしいです。

つまり、スクリプト内のコメントや文字列定数に各国の言語を使うことができるということですね。もちろん、私は信じませんが。

AppleScript の構文は半角アルファベットと、いくつかの特殊記号で記述します。特殊な記号というのは文の継続を表すソフトリターンとか、AppleScript で定義されていない生のデータを表す «» とかのことです。

AppleScript で変数やクラス、属性のラベルを識別する文字列について。これらは半角英数字とアンダースコアで定義します。

AppleScript では変数の大文字小文字を区別しないので以下のような変数は全て同じものを表します。

myName
MyName
myname

ところで、Script Editor で以下のようなスクリプトを書いて構文確認を行います。

set myName to "Alan"

一度 myName として変数を定義し構文確認を行うと、以降スクリプトの他の場所で myname と小文字で書いておいても構文確認時に myName と変数名を最初に出てきた変数名にあわせてくれます(大文字小文字を変換し、最初に出てきたものに合わせるのです)。これは、便利な反面、面倒な自体も引き起こします。

もし、MyName と変数を定義しておいてから myName に変更したいと思っても構文確認時に MyName に変換してしまいます。MyName を myName に変えたいなら、スクリプトの中に出現する全ての MyName を削除してから Script Editor を終了し、再度スクリプトを開き、myName をタイプしていかないといけない。変数名の後からの変更ってちょっと面倒なのです(そんなことない?)。

閑話休題。また、数字で始まる変数は利用できません。以下は、利用できない変数の一例です。

9th_item
C-
Try&Error
Do^and^Don't

しかし、AppleScript にはどんな文字列でも変数に利用してしまうことができる秘密の方法があります。縦棒(|)を文字列の前後に付け加えると、半角英数字とアンダースコア以外の文字や記号でも変数として扱うことができます。

|9th_item|
|C-|
|日本語|
|Love\|and\|Peace|

日本語でも構いません。これらは全て変数として扱えます(実際に使うかどうかは別にして)。変数の中に縦棒(|)を含みたい時は、最後の例のようにバックスラッシュでエスケープします。

こんなもの使う場面があるのか?とお思いになるかもしれません。時々見かけるのは、レコードのラベル名での利用。また、既に他のアプリケーションでその語彙がクラスとして定義されている場合など、衝突を避けるために利用したりします。

Script Editor で開く

tell application "Finder"
    set |folders| to folders of home
end tell

このサンプルはサンプルのためのサンプルですが、スクリプトオブジェクトを作っているとこういう場面がままあります。

そして、予約語。AppleScript では全ての予約語がアルファベット小文字だけで構成されています。また、いくつかの予約語は aside from のように単語のペアになっているものがあります。以下、予約語の一覧。

apart from, and, against, after, above, about, before, back, at, aside from, as, around, between, beside, beneath, below, behind, beginning, contains, contains, contain, considering, by, but, else, eighth, does, div, copy, continue, exit, every, error, equals, equal, end, from, fourth, for, first, fifth, false, ignoring, if, global, given, get, front, its, it, is, into, instead of, in, my, mod, middle, me, local, last, or, onto, on, of, not, ninth, ref, put, property, prop, over, out of, second, script, returning, return, repeat, reference, tell, some, sixth, since, seventh, set, through, third, then, the, that, tenth, true, transaction, to, times, timeout, thru, with, whose, while, where, until, try, without

AppleScript のコメントについて。PDF の方の AppleScript Language Guide 間違ってますね。

コメントには複数行のコメントと一行だけのコメントの 2 種類あります。

Script Editor で開く

(*
    This is the comment.
    AppleScript Guru?
    Ha, ha, No!!
    I am a AppleScript fanatic believer!
*)

これが複数行にわたるコメントの書き方でコメントの前後を (* と *) で囲みます。

一行コメントは文頭にマイナス記号を 2 つつけます。

Script Editor で開く

-- one liner

AppleScript 2.0 以降ではシャープも一行コメントに使えます。

Script Editor で開く

# 一行コメント
#!/usr/bin/osascript

シャープ(#)が使えるのは最後の例のようにシェバングとしての利用を考慮したものだと思われます。このコメントは AppleScript 2.0 以前でもコンパイル済みスクリプトを実行するだけならそのまま利用できます。しかし、Script Editor などでスクリプトを開き、編集などを行うとこのコメントはエラーを発生させます。実際に確認はしていませんが、シャープで始まるコメントがあるスクリプトを Mac OS X 10.4 などに持っていても実行する分には支障はないのですね。ただ、編集時にはエラーになると。

コメントはネストさせることができます。

Script Editor で開く

(*
This is the comment.
AppleScript Guru?
Ha, ha, No!!
I am a AppleScript fanatic believer!
-- one liner
# 一行コメント
#!/usr/bin/osascript

    (*
        これもコメント
    *)
*)

コメントってネストできました?知りませんでした。

AppleScript は、冗長です。或は、冗漫といってもいいかもしれない。冗長と冗漫。どちらも同じような意味かもしれない。

AppleScript は、英語に似た文法を持つため、どうしても一行の記述が横に長くなっていきます。こういうときにソフトリターンを使って一行を分割する事ができます。

Script Editor で開く

tell application "Finder" to ¬
    folders of home

最初の行の最後にある「¬」が次の行の継続を表すソフトリターンです。見た目は二行ですが、AppleScript は一行として解釈します。「¬」は、Option + l(小文字の L )で入力できます。

ちなみに、この継続を表すリターンは Option + Return で入力できるはずなのですが、日本語環境では化けた文字が挿入されます。これは、継続を表すものではないのでエラーになります。

だから、Option + l で継続行を挿入。その後に実際に Return キーで改行とする必要があります。二度手間です。むかしは、Option + Return が使えたのに...。

以降、この章はもう少し続くのだけど、あくまでこの章は全体的な概観なので詳しいことはそれぞれ別の章に記述されている。後々、重複してくることになるし、AppleScript 2.0 だからといって見るべきところはないので割愛。

0 件のコメント :

コメントを投稿