用例集

コンパイル時にライブラリをロードしたい

コンパイル時にライブラリをロードして property に設定すると、トップレベルのスクリプトに使用しているライブラリをすべて埋め込んで、実行時にライブラリや ModuleLoader との依存性がなくなります。

他の Mac へのコピーや配布する際に有用です。しかし、再コンパイルするまでライブラリが更新されないので、常に最新のライブラリを使用したい場合は、次の「実行時にライブラリをロードしたい」を参照してください。

property SimpleTextLib : module
property _ : boot (module loader) for me

-- do something

実行時にライブラリをロードしたい

実行時にライブラリをロードすると、常に最新のライブラリを使うことができます。

次のサンプルコードのように、「 boot (module loader) for me 」 を property の定義部ではなく、run ハンドラもしくは open ハンドラの中で実行するようにしてください。

property SimpleTextLib : module

boot (module loader) for me
-- do something

ローカル変数にライブラリをロードしたい

tell (module loader)
set SimpleTextLib to load("SimpleTextLib")
end tell

tell SimpleTextLib
-- do something
end tell

コンパイル時に property にロード、実行時にローカル変数にロード

property SimpleTextLib : module
property loader : boot (module loader) for me

tell loader
set SimpleListLib to load(module "SimpleListLib" with reloading)
end tell
-- do something

ライブラリの中から別のライブラリを使いたい

あるライブラリの中から別のライブラリ使いたいとします。ライブラリの中でもトップレベルのスクリプトと同じように、module コマンドを設定した property を用意します。このライブラリがロードされる時に、property にライブラリが自動的に設定されます。

property SimpleTextLib : module -- use library

on run -- test code
boot (module loader) for me
-- do test
end run

テストのために単体で作させたいときは、実行時に「 boot (module loader) for me 」を実行すれば良いでしょう。

バンドルの中のライブラリをロードしたい

AppleScriptObjC アプリケーションなどのアプリケーションバンドル内のライブラリをロードする例です。ライブラリは Resources フォルダの 「Script Libraries」 フォルダの中にあると仮定しています。

property LibInBundle : module

tell (module loader)
prepend_path(path to resource "Script Libraries")
boot for me
end tell

loader スクリプトprepend_path コマンドで、ライブラリの検索場所に Resources/Script Libraries フォルダを追加してから boot コマンドによってライブラリのロード及び設定を行います。

このようなことをするよりも、コンパイル時にすべてのライブラリを property に埋め込んでしまうのが ModuleLoader の流儀です。もしくは、 OS X 10.9 で導入された AppleScript Libries を使うのが良いでしょう。

上のサンプルは ModuleLoader の柔軟性を示すものです。