AppleScript改良〜「だんだん」そして「おおきに」
以前、次の記事でAppleScriptを書いて、AppleScriptの勉強をしました。
- AppleScriptを書いてみました : プラスα空間 (2009年1月30日)
その時に書いた書いたのが、次の物です。
(* 究極の選択
* Copyright (c) 2009 webmaster@oichinote.com
* Created on 2009-01-30 by webmaster@oichinote.com
*)
set aList to {"キャンセル", "三倉茉奈", "三倉佳奈"}
set bList to {"", "だんだん", "おおきに"}
display dialog "どちらが好き?" buttons aList default button 1
set answer to button returned of result
set n to 1
repeat with x in aList
if answer contains x then
display dialog item n of bList
end if
set n to n + 1
end repeat
実行すると、三倉茉奈と三倉佳奈を選ぶボタンが出て来て、押したボタンに応じて返事が返ってくると言う物です。
この当時は、連想配列的な物が無い物と思って、配列(リスト)のインデックスを使っていました。その後、recordと言う連想配列に相当する変数型がある事がわかり、書き直しました。
(* 究極の選択 Record版
* Copyright (c) 2014 webmaster@oichinote.com
* Created on 2014-06-21 by webmaster@oichinote.com
*)
set xList to {¬
{person:"キャンセル", greeting:""}, ¬
{person:"三倉茉奈", greeting:"だんだん"}, ¬
{person:"三倉佳奈", greeting:"おおきに"}}
set cList to {}
repeat with c in xList
set end of cList to (person of c)
end repeat
set answer to button returned of (display dialog ¬
"どちらが好き?" buttons cList cancel button "キャンセル" default button 1)
repeat with x in xList
if answer is (person of x) then
display dialog (greeting of x)
end if
end repeat
行数としては長くなりますが、スクリプトとしては、意図がわかりやすくなっていると思います。
最初に、castとラベル付けされたキーワードを拾ってきます。Perlだとkeysに相当する部分です。repeat with文でキーワードを拾っています。次の様に書けると、この処理が簡略化できるのですが、エラーになって動きません。
set cList to every cast of every item of xList
Perlでも、keysをリストの順番通りに拾ってこようとすると、ループをまわす必要があるので、同じか。
それと、xListを定義する部分で、最後の","を追加できない様です。
set xList to {¬
{cast:"キャンセル", greeting:""}, ¬
{cast:"三倉茉奈", greeting:"だんだん"}, ¬
{cast:"三倉佳奈", greeting:"おおきに"}, ¬
}
“, ¬"を追加するとエラーになります。スクリプトの拡張性(書きやすさ)を考えたら、ここの","を無視する様な言語仕様になってくれていると良いのですが。
ちなみにですけど、三倉茉奈を選ぶと「だんだん」が、三倉佳奈を選ぶと「おおきに」が戻ってくる理由ですが、当時放映されていた朝ドラ「だんだん」の配役三倉茉奈さんの「田島めぐみ」と、三倉佳奈さんの「一条のぞみ」がそれぞれ、松江(島根県)と京都(京都府)で育っている所から、「ありがとう」のそれぞれの方言で返事をする様にしています。
朝ドラ「だんだん」については、次のページに、恐ろしいほどにまとめてあるのでご覧ください。
ディスカッション
コメント一覧
まだ、コメントがありません