2010-04-04T00:57:31+09:00

AppleScript Studio で分割したソースコードをビルド時に一つにまとめる方法

AppleScript Studio でそれなりのアプリケーションを作るときは、AppleScript のソースコードを複数に分割しないとやってられないよね。僕が作る AppleScript Stduio アプリケーションは、だいたい次のような構造をしている。

皆さん、同じことしているでしょ?

さて、このやり方だと起動時にスクリプトをいっぱいロードしなくちゃいけないのだけど、できればコンパイル時に全部ロードしちゃいたいな、と思ったりしませんか。まあ、あんまり思わないよね。でも、ModuleLoader では、そんなことをしている。

ModuleLoader では、パフォーマンスが命だと思ったので、自分の為にスクリプトをいくつもロードするということをしなくたかった。で、どんなことをやっているかというと。

on import(a_name)
set pwd to system attribute "PWD"
if pwd is "" or pwd is ((path to startup disk)'s POSIX path) then
set pwd to "/Path/to/Project/"
else
set pwd to pwd & "/"
end if

return run script POSIX file (pwd & a_name & ".applescript")
end import

property ModuleCache : import("ModuleCache")
property XList : import("FastList")
property ConsoleLog : import("ConsoleLog")
property PropertyAccessor : import("PropertyAccessor")'s initialize()
property ModuleInfo : import("ModuleInfo")

という感じ。

まず、ソースファイル(.applescript ファイル)の場所を求めなければならないけど、コンパイル時は環境変数 "PWD" にあると仮定している。XCode のエディタでの構文チェック時は "PWD" はソースファイルの場所に成らない。しょうがなく、ファイルがある場所を書き込んでいる。そして、run script コマンドでソースのコンパイル/実行を行い、その実行結果を保持しておくことができる。

いくつか醜いところがある。

XCode の編集中の構文チェックでも、ソースコードがある場所をを取得することができれば不満が解消されるのだけど。

もし、どうしても必要になったら真似してちょうだい。