2018-07-13T17:22:55+09:00

XPreferences について補足

先ほど公開した XPreferences は、AppleScript アプリケーションの設定情報をスクリプトオブジェクトとして読み書きしましょう、というもの。

AppleScriptObjC が使える今日この頃では、NSUserDefaults を使ったら良いのかもしれないけど、Objective-C のオブジェクトに変換が必要になる。無駄な変換をせず、AppleScript のネイティブデータを保存できるので XPreferences に存在価値があると思っている。

以下の、書き出した設定管理用スクリプトオブジェクトのファイルサイズ問題は、version 1.0.1 のサンプルコードで解決策を示しました。

トップレベルではなくハンドラの中でスクリプトオブジェクトを定義すると、最小限のサイズのスクリプトオブジェクトを書き出せることを見つけました。

一つ気になるのは、書き出したスクリプトファイルが書き出し元のスクリプトと同程度のファイルサイズになってしまうこと。書き出し元のスクリプトの中で定義された設定管理用スクリプトオブジェクトだけを store script するのだけど、なぜかファイルサイズが結構大きい。

たぶん、スクリプトオブジェクトのスコープにある property なども含めて書き出してしまっているからファイルサイズが肥大してしまうのだと思う。余計なものを排除して store script できないものかと、四苦八苦してみたけど、適当な術が見つけられない。

書き出し元のスクリプト内で設定管理用スクリプトオブジェクトを定義しているからいけないのであって、設定管理用スクリプトオブジェクトをバンドルないの Resources 内に別ファイルに保存しておき、実行時に読み込むようにすることが考えられます。このようにすれば、そのスクリプトオブジェクトを書き出しても相応のファイルサイズに収まってくれます。

でも、手軽さに欠けるなと。よほど巨大な AppleScript でない限り、少々設定ファイルが大きくなっても気にしなくてもいいかなと思っています。