ModuleLoader
ModuleLoader は AppleScript のライブラリシステムです。必要最小限の記述で外部のライブラリ/モジュールとしてのスクリプトをロードすることができます。
OS X 10.9 から AppleScript にライブラリ機能がサポートが追加されました(AppleScript Libraries) 。ModuleLoader は、それ以前の2006年から継続的に開発/メンテナンスされてきたライブラリシステムです。おおよそ AppleScript Libraries と同じことができます。
すなわち、
- 決められた場所からライブラリを検索して、スクリプトオブジェクトとしてロードすることができます。
ホームフォルダ以下の及びルートディレクトリ以下の
- Library/Scripts/Modules
- Library/Script Libraries
からライブラリを探します。
- ライブラリが必要としているライブラリもロードします。
- ロードするライブラリのバージョンを指定できます。
OS X 10.9 以降では、AppleScript Libraries がファーストチョイスになるでしょう。ModuleLoader は、AppleScript Libraries と共に使うことができ AppleScript Libraries に次のような機能を追加します。
- コンパイル時にすべてのライブラリの読み込み、ライブラリを組み込んだまま保存できます。
- ライブラリすべて property に収め、実行時のライブラリ及び ModuleLoader への依存性なくして、他のコンピュータへの配布に都合のスクリプトを簡単に作れます。
- ライブラリを指定したタイミングで強制的にリロードさせることができます。
- テキストファイルやアプレット、ドロップレットもモジュール/ライブラリとして扱えます。
- 任意の場所をライブラリの検索場所に設定できます。
- 幾つもの方法で非常に柔軟に扱えます。
更新履歴
- 4.0 --
- スクリプティング機能追加ではなく、AppleScript Library とバックグラウンドアプリケーションによる実装に変更。
- macOS 10.4 の SIP でスクリプティング機能追加が使えなくなったため。
- 構文の変更:
- property ModuleName : module → property ModuleName : "@module"
- boot (module loader) for me → script "ModuleLoader"'s setup(me)
- 詳細はマニュアルで確認してください。
- スクリプティング機能追加ではなく、AppleScript Library とバックグラウンドアプリケーションによる実装に変更。
- 3.0.2 -- 2017-04-19
- 間違ったライブラリを読み込んでしまうことがある不具合を修正。
- ライブラリ名を後方一致ではなく、完全一致で探すようにした。
- 間違ったライブラリを読み込んでしまうことがある不具合を修正。
- 3.0.1 -- 2016-12-16
- AppleScriptObjC との互換性を改善。
- Local Loader アプレットの起動場所が /private/var/folders/ 以下の場合、Gatekeeper Path Randomization の影響と考え、エラーを発生するようにした(H さん、ありがとうございました)。
- 3.0 -- 2016-08-23
- AppleScript Libraries と相互運用できるようにした。
- OS X 10.9 で導入された AppleScript Libraries のライブラリの保存場所(~/Libraries/Script Libraries, /Libraries/Script Libraries) からもモジュール/ライブラリを検索/ロードします。
- AppleScript Libraries の 「use LibName : script "LibName"」形式のライブラリのロードを解釈して、AppleScript Libraries の代わりにロードします。
- module loaded by イベントを実装した時、その戻り値をロードしたライブラリとして扱われるようになった。
- コードの近代化
- Mac OS X 10.7 以降が必要になった。
- コード署名を追加した。
- AppleScript Libraries と相互運用できるようにした。
- 2.3.4 -- 2016-02-05
- ガーベージコレクションをサポートありでコンパイルした。
- 細かい修正。
- 2.3.3 -- 2011-10-08
- メモリーリークを修正。
- 2.3.2 -- 2011-10-07
- メモリーリークを修正。
- 2.3.1 -- 2011-10-03
- .applescript ファイルがロードできなくなっていた不具合を修正(匿名さん、ありがとうございました)。
- 2.3 -- 2011-09-13
- モジュールのバージョンを指定してロードする機能を追加。
- AppleMods を参考にさせていただきました。
- モジュールのバージョンを指定してロードする機能を追加。
- 2.2.4 -- 2011-03-05
- Mac OS X 10.6 の osacompile コマンドでエラーが発生する不具合を修正(匿名さん、ありがとうございました)。
- local loader オプション "collecting modules", "only local" を追加。
- 2.2.3 -- 2010-11-21
- Mac OS X 10.4 で動作しない不具合を修正。
- 2.2.2 -- 2010-08-27
- 内部の変更
- 2.2.1 -- 2010-08-18
- Mac OS X 10.6 で local loader がエラーになる不具合を修正(hiRaoka さん、ありがとうございました。)。
- 英語マニュアルの改善(Ed Stockly さん、ありがとうございました)。
- 2.2 -- 2010-05-24
- テキスト形式のAppleScript ファイル(.applescript)をモジュールとしてロードできるようにした。
- loader object に次のハンドラを追加/マニュアルに記載
- load
- set_additional_paths
- prepend_paths
- module_paths
- clear_cache
- 2.1.1 -- 2010-01-15
- タイプコードを持たないスクリプトファイルをロードできない不具合を修正。
- 2.1 -- 2010-01-12
- 新しいモジュール読み込み方式を追加。
- make loader コマンドを module loader に変更
- 2.0 -- 2009-11-25
- スクリプティング機能追加として再実装した。
- 1.3.3 -- 2009-03-11
- proxy() の返り値を parent にしたモジュールをロードする時、エラーが発生する不具合を修正。
- 1.3.2 -- 2007-09-15
- パフォーマンスの改善
- HelpBook.osax をバンドル内に収めるようにした。
- 1.3.1 -- 2007-05-14
- 英語 マニュアルを追加
- 1.3 -- 2007-02-14
- 高速化しました。
- 複数のモジュールをロードしたとき、共有モジュールを同一に保つ機能を追加しました。
- 1.2 -- 未公開
- 1.1 -- 2007-01-05
- サブフォルダの中も検索するようにした。
- 一度、ロードしたモジュールはキャッシュするようにした。
- これにより、大量のモジュールがあっても一度ロードした物は素早く値を返します。
- もちろん、更新されたモジュールは自動的に検出して最新のものをロードします。
- 1.0 -- 2006-04-12
- 初公開