Home > XModules >

必要なシステム

  • OS X 10.9 以降
    • OS X 10.14.6 で開発/テストしております。

ダウンロード

Version 4.0.5 -- 2020-04-26

古いバージョン

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 への依存性なくして、他のコンピュータへの配布に都合のスクリプトを簡単に作れます。
  • ライブラリを指定したタイミングで強制的にリロードさせることができます。
  • テキストファイルやアプレット、ドロップレットもモジュール/ライブラリとして扱えます。
  • 任意の場所をライブラリの検索場所に設定できます。
    • 幾つもの方法で非常に柔軟に扱えます。

Loading libraries at compile-time

use scripting additions
use SimpleTextLib : script "SampleLibs/SimpleTextLib"
property _ : script "ModuleLoader"'s setup(me)

SimpleTextLib's replace_text("Do your task", "your", "my")
-- result : "Do my task"

Force relaoding at run-time

use SimpleTextLib : script "SampleLibs/SimpleTextLib"

script "ModuleLoader"'s setup(me) -- force relaoding
SimpleTextLib's replace_text("Do your task", "your", "my")
-- result : "Do my task"

更新履歴

  • 4.0.5 -- 2020-04-26
    • 内部の変更
  • 4.0.4 -- 2020-04-23
    • ライブラリのバージョン指定に不等号を含めると異常終了することがある不具合を修正。
  • 4.0.3 -- 2020-03-02
    • メモリー管理のエラーを修正
  • 4.0.2 -- 2020-02-26
    • 内部の変更
  • 4.0.1 -- 2020-02-25
    • AppleScriptObjC を使ったスクリプトに AppleScriptObjC を使ったライブラリをロードするとエラーが起きることがある不具合を修正。
    • 環境変数 OSA_LIBRAY_PATH をサポート。
  • 4.0 -- 2020-02-03
    • スクリプティング機能追加ではなく、AppleScript Library とバックグラウンドアプリケーションによる実装に変更。
      • macOS 10.4 の SIP でスクリプティング機能追加が使えなくなったため。
    • 構文の変更:
      • property ModuleName : module → property ModuleName : "@module"
      • boot (module loader) for me → script "ModuleLoader"'s setup(me)
      • 詳細はマニュアルで確認してください。
  • 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 以降が必要になった。
    • コード署名を追加した。
  • 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
    • 初公開