「Launch」という命令があることはご存じでしょうか。これは、あるアプリケーションを「起動する」ための命令ですが、実際のところほとんど利用されていません。この命令以外にもアプリケーションを起動する方法があるからです。
例えばエディタの「Style」を起動しようと思えば、
tell application "Style"
activate
end tell
または
activate application "Style"
とすることで起動できます。解説書でもそうですが、アプリケーションの起動をactivateにまかせている例がほとんどです。しかしながら、「activate」と「launch」は基本的に全く違う命令です。なぜなら、本来activateは「あるアプリケーションを最前面に移動する」という命令であり、アプリケーションの起動はそれに付随して起こる動作だからです。
上の例は、launchを使った表現では以下のように表すことができます。
tell application "Style"
launch
run
activate
end tell
ずいぶん複雑になりますが、これが起動していないアプリケーションに対してactivate命令を出したときの実際の命令になります。
この例を見れば分かりますが、「launch」は「run」及び「activate」の機能を持っていません。「run」が「起動時の初期動作」、「activate」が「アプリケーションを最前面に移動する」であるとすれば、「launch」の機能は「アプリケーションの起動」そのものです。単に「launch application "Style"」と記述すれば、Styleはバックグラウンドで静かに立ち上がり、何もしません。アプリケーションメニューを見なければ、Styleが立ち上がっているかどうかすら分からない状態です。
このlaunchを必要とするのは、以下のような場合です。
・アプリケーションをバックグラウンドで起動したい。
・初期動作をさせたくない。
例えばStyleでは、activateで起動すると「untitled」というウィンドウが新規に作成されます。しかしウィンドウはスクリプトから自由に作成できますので、このような動作は存在する必要がありません。不必要なウィンドウを作成して得るものは何もないのです。またGreg's Browser等で圧縮・解凍の機能だけを利用したい場合、activateするとブラウズ用のウィンドウの表示に手間取るため、launchを使用した方がスクリプトの実行速度が高速になります。
さらに、アプレットのプロパティを取り出したり、アップレット内部のハンドラをライブラリとして利用したい場合を考えてみて下さい。「run」ハンドラを実行する必要はないはずです。このような場合、launchを使用することは非常に有益なことです。まあ、lauchを使うかどうかは、その人の趣味にもよるんですけど。