|
《 変数名は複合語にするのが無難
》
|
|
|
?
|
これで何とかAppleScriptの構文が体系的に分かってきました。あと、変数についても教えてください。AppleScriptの場合、使う変数についてあらかじめ宣言しておかなくてもいいんでしたよね。 |
|
先生
|
もちろんさっ! 普通のプログラミング言語と違って、AppleScriptでは「こんな名前の変数を使うぞ」なんて変数宣言をしておかなくても、いきなり勝手に適当な名前の変数を使うことができる。 |
|
?
|
今までもmyFolderとかdatabaseNameとか、勝手な変数名がたくさん出てきましたものね。 |
|
先生
|
勝手と言っても、コマンドやステートメントと同じものは使えない。混同してしまうから例えば、myVariableとかtheStringとか冠詞や限定詞と一緒に使うといいかもね。複合語にして一般的な名詞や動詞を使わない方が無難だ。もちろん、iとかjとか、x、yなど、単純なアルファベットでもいい。 |
|
《 実は日本語でスクリプトが書ける
》
|
|
|
?
|
ところで先生、日本語の変数名とかは使えないんでしょうか。 |
|
先生
|
ダイアレクトを日本語に切り替えればできるよ。変数どころか、スクリプト全体が日本語になっちゃう。 |
![]() |
|
|
?
|
えぇぇぇ〜。日本語でスクリプトが書けるんですか! |
|
先生
|
あれっ、言わなかったっけ? スクリプト編集プログラムの「書式」で日本語を選べば日本語になるよ。 |
![]() |
|
|
?
|
これは便利じゃないですか。 |
|
先生
|
そうかねぇ。私は日本語のプログラミング言語ってあんまり好きじゃないんだけど。 |
|
?
|
なぜですか。 |
|
先生
|
だってちゃんとした日本語になっていないでしょ。カッコやカンマが出てきてどうしても不自然な日本語になっちゃうよね。日本語というより、日本語の単語を並べてるってだけだよ。 |
|
?
|
でも英語より分りやすいんじゃないですか。 |
|
先生
|
問題は、アプリケーションによって、というよりFinder以外はほとんどがそうだけど、日本語に対応してないものがあることなんだ。 |
|
?
|
動かないんですか。 |
|
先生
|
そうじゃない。動くんだけど、コマンドやプロパティーが日本語にならないんだ。例えばファイルメーカーProで、 |
![]() |
|
| ってなスクリプトを日本語ダイアレクトに切り替えると下のように目茶苦茶になっちゃう 。ファイルメーカーProのコマンドは英語のままなのに、動詞と目的語の順番が変わって、しかも単語間のスペースも省かれるから、なんとまぁ見苦しい。 |
|
|
?
|
なるほど、アプリケーションが日本語ダイアレクトをサポートしていないと、話になりませんね。 |
|
先生
|
まあ、用語説明を一度日本語で読むと勉強になるというぐらいかな、役に立つって言ったら。 |
![]() |
|
|
途中結果を確認するには
|
|
|
?
|
ところで先生、作成したスクリプトが正常に動いているか、途中結果を確認するにはどうしたらいいんでしょうか。 |
|
先生
|
一番簡単な方法は、display dialogというコマンドを使ってダイアログに結果を表示させることだね注)。 使い方は簡単だよ。display dialog 表示したいデータ(文字列の形で) |
|
?
|
これは何度か使いましたよね。 例えば display dialog "Hello, My name is Jone." なんて感じにメッセージを出せるんでした。 |
![]() |
|
|
先生
|
変数が文字列データを格納していれば、変数名を直接指定することもできるしね。
set myMessage to "これは私からのメッセージです" てな風に使える。もちろん変数を使わずに1行で書いてもOKだよ。 |
|
?
|
ここでキャンセルをクリックするとどうなるんですか。 |
|
先生
|
普通はスクリプトの実行がその時点で中断されて終了する。 スクリプトにミスがあった時なんか、途中で中断できて便利だよ。 |
|
?
|
変数が文字ではなくて、数値だった場合はどうなんでしょう。 |
|
先生
|
display dialogは文字列しか受け取らないので、基本的には数値は文字列に変換してからでないと表示できない。 しかし、たいていの場合、変換は自動的にやってくれる。だから例えば、 set myResult to 23* 100 / 344 + 67 * 89 - 7834 なんていうスクリプトで、変数の中身を表示することができる。 |
![]() |
|
|
?
|
文字列への変換はいつも自動的にやってくれるんですか。 |
|
先生
|
いや、常にというわけではない。例えば次のようなスクリプトはうまく動かない。xが日付型のデータなのが原因だ。
set x to date "1995年 3月 3日 金曜日 0:00:00 AM" |
|
?
|
日付型? |
|
先生
|
まぁ、とにかく自動的に文字列に変換してくれないこともあるってことだよ。自動的に変換できない時は、こんなメッセージが出てくるはずだ。 |
![]() |
|
|
?
|
そうなると、表示できないデータもあるってことですね。 |
|
先生
|
意識的に型変換つまりtypeを変えればうまく動くこともあるがね。 |
|
?
|
型変換? |
|
先生
|
前に「as」という演算子が出てきたろう。これは、
変換する対象 as 変換したい型 というような使い方をする。さっきの例で言えば, display dialog (x as string) とすればうまく動くはずだ。AppleScriptでは、文字列はstringという名前の型として用意されている。 |
|
?
|
でも、ただ単に数を出すだけではつまらないですね。例えば、
xの値は××です みたいに、前後にメッセージを入れたいですよね。 |
|
先生
|
そうしたければ、文字列をつなげてやればいいんだ。文字列を結合させるのは、「&」という演算子を使う。 これも、足し算の+や掛け算の*と同じ様に使って構わないんだ。例えばこんな風に。 set myStore to 7834 + 12045 + 5834 + 6689 |
![]() |
|
|
先生
|
おっとっと、ちょっと気分が悪くなったんで、キミ、そこの菊水の辛口をちょっと吹きかけてくれ。 |
|
?
|
…… |
|
先生
|
おぉぉっ、生き返ったよ。 |
| 注)このほか、サード・パーティー製の Script Debugger(米国 Late Night Software社) などを使うと、1行ごとに実行させたり、その時の変数の変化などが リアルタイムで分かる。 |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp