他のスクリプトから読み込まれて(ロードされて)使われるスクリプトファイルのこと。
コードを分割して、複数のプロジェクトでコードを供給することにより、より高機能なものを、より少ない手間で作ることができるはず。
ModuleLoader では、スクリプトファイル(.scpt ファイル)、スクリプトバンドル(.scptd ファイル)、スクリプトアプリケーション、テキスト形式のスクリプト(.applescript ファイル)をライブラリとして扱うことができます。ライブラリ側のコードに特別な配慮は何にもいりません。スクリプトエディタで保存した物は全部ライブラリになります。
ロードするライブラリの管理が楽になって、ロードのためのコードが最小限にできます。具体的には、
などができます。
一つ二つのスクリプトをロードするなら、load script でもそんなに苦にならないかもしれません。でも、5つくらいのモジュールをロードして、さらにそれらが別のモジュールに依存するなんて状況になると、load script ではやってられなくなります。
とにかく、モジュール/ライブラリのロードには、load script コマンドではなく、ModuleLoader か AppleScript Libraries をご検討ください。
デフォルトでは、ホームディレクトリもしくはルートディレクトリ以下の、
です。このフォルダ以下にスクリプトファイルを置けば、名前を指定するだけでライブラリとしてロードできるようになります。サブフォルダの中も探しに行きます。
ライブラリの置き場所のカスタマイズはこちらを参照してください。
現在設定されている、ライブラリの置き場所は module_paths ハンドラで調べることができます。
まずは、Local Loader の利用を考えてください。自由に移動できるライブラリの置き場所を作ることができます。
スクリプトの実行中に一時的にモジュールの場所を追加したい場合は、loader スクリプトの set_additional_paths ハンドラ、prepend_path ハンドラを使ってください。
"boot (module loader) for me" の実行によって、同じライブラリがトップレベルもしくは、どこかのライブラリで複数回ロードされた場合、それらは同じ実体を共有します。これによって、スクリプトのサイズを最小限に保つことができます。また、ライブラリを経由してのライブラリ間でデータをやり取りすることができます。
具体的な例を次に示します。まず、ロードされるライブラリです。
このライブラリ "ShareMessage" を別々の property に2回ロードしてみます。そして、片方に property の変更を行う操作をします。すると、もう一方の property のスクリプトオブジェクトにも、変更が反映されるため同じ実体を共有していることがわかります。
Script Libraries フォルダの中に、
のがある場合、上記の順番の優先度で読み込まれます。