このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

スクリプトが長くなったら

発言者:kozka
( Date Wednesday, October 02, 1996 17:56:16 )


みなさんはスクリプトを書いているとだんだんと長くなるスクリプトにどのような
対処をされていますか? 単純に機能毎にハンドラを分けてゆけば見やすくはなると思うのですが、
スピードはやっぱり落ちてしまうのでしょうか。他にもっと良い方法を行なっている方の意見を
是非お聞きしたいです。

例えば機能毎のスクリプトをライブラリの様な形で保存しておき、メインのスクリプトを最初に立ち上げた時にライブラリを全て読み込んで
いつでもメインのスクリプトからライブラリ内のハンドラを利用できれば便利だと
思うのですが。アップルのサンプルでは「実行スクリプトデモ」としてありますが
それだと必要になったその都度ハードディスクからスクリプトを読み込むような気が
してそれだとやっぱり遅い?かなと思います。


田中求之 さんからのコメント
( Wednesday, October 02, 1996 19:28:09 )

>必要になったその都度ハードディスクからスクリプトを読み込むような気が
>してそれだとやっぱり遅い?かなと思います。

必要なスクリプト・オブジェクトをプロパティとして読み込むようにしておけば、
コンパイルのときに読み込まれて、組み込まれますので、速度の低下は起こりま
せんよ(ただし、メモリーは多く必要になりますが)

たとえば、

on check(param)
 ....

end check

というスクリプトを、myLib というスクリプト・オブジェクト(コンパイル済みスクリプト
としてセーブしたもの)にしておき、メインのスクリプトでは

property myLibObj : load script file "MacHD:....:myLib"

としておきます。こうすると、コンパイル時に myLibObj に myLib が読み込まれます。
ですから、あとは、スクリプトの中で、たとえば先ほどの check ハンドラーを呼び出した
いなら

tell myLibOjb
  set myResult to check(param)
end tell

あるいは、

 check(param) of myLibObj

といった形で利用します。


私のサーバーの CGI は、この会議室も含めて数多くの処理を行っていますので、
上のような方法で、コーナー毎に分割したオブジェクトを読み込むようにしてます。
(9つのオブジェクトを読み込んでます)

もし一つのスクリプトにまとめようとすると、100Kぐらいのサイズになってしまう
ので (^_^;;