翻訳中

まだ当分の間、AppleScriptにはお世話になる感じなので、現在JavaScriptの基本的なメソッドをAppleScriptに翻訳してライブラリ化しています。

AppleScriptは、「大文字を小文字に」とか「配列をスライスする」「文字列を置換する」などのよく使う操作を、一発で呼び出せません。プログラム文をガシガシ書きまくる際に、何かと面倒です。なので、.toLowerCaseや.slice、.replaceなどをサブルーチンとして作って、簡単に呼び出せる仕組みを実践中です。共通のコンポーネントとして1つのスクリプトファイル内に蓄積して、スクリプトを作る際に「load script」すれば管理も簡便です。

スクリプトのコンポーネントの扱いは、難しい事はありません。以下のようにとても簡単です。
 
file "MacHD:components:basic.scpt"〜スクリプトコンポーネントです
to myMethod_A (str)
return "こんにちは、" & str & "さん。"
end

file "MacHD:Documents:myScript.app"〜実際の自作アプリケーションです
set bsx to load script file "MacHD:components:basic.scpt"
display dialog bsx's myMethod_A ("太郎")
display dialog bsx's myMethod_A ("花子")
display dialog bsx's myMethod_A ("お集りのみな")

映像制作に使うJavaScriptのメソッドは、基本的なもので充分です。join、slice、replace、match、toUppserCaseやtoLowerCaseくらいでほとんどカバーできます。substringやsubstrなどは、sliceで代用可能でしょう。なので、AppleScriptに翻訳するメソッドもそれほど多くはならないと思います。‥‥ただ、RegExpの翻訳(というか、導入)はどうしようかな‥‥とは思っていますが。。。AppleScriptで正規表現が使えたら楽は楽‥‥ですけどネ。

メソッドは翻訳できるものの、文章表現そのものの特質までは操作できません。例えば、AppleScriptはundefinedやnullをfalseと同義に評価する機能はありませんから、制御構造はAppleScriptの流儀でおこなうほかありません。JavaScriptは未定義の変数やNaN、0なども「偽」として評価されるのが楽なんですけどね‥‥。
 
if value1 then set value2 to "OK"//AppleScriptはNG〜value1は定義していない変数なので

set value1 to 100
if value1 then set value2 to "OK"//AppleScriptはNG〜変数がbooleanではないので

set value1 to 100
set value1 to value1 is 100
if value1 then set value2 to "OK"//段取りが面倒ですが、これならOK〜誰でも読み解ける文体を重視してるんでしょうね


でもまあ、各言語の文章表現までは介入できなくても、メソッドを共通にするだけで、随分とスクリプト作成は楽になります。これもインフラの一環と言えますが、インフラを怠ると、後でとんでもない代償を払う事になりますから、根気よく地道に貯め込んでいく所存です。

関連する記事

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>

selected entries

categories

archives

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM