タイトルAppleScript Working》AppleScript Studioで作るMac OS X“ネイティブ”アプリケーション(3)カテゴリーProjectBuilder/Interface Builder, AppleScript, AppleScript Working
作成日2001/12/20 17:59:43作成者新居雅行
ちなみに、作成されたアプリケーションはもちろん、プロジェクトのフォルダのbuildフォルダにある。そのままダブルクリックしても同様に使える状態になっている。中身はMac OS Xのパッケージ形式だが、Contents/Resources/Scriptsというフォルダに、コンパイル済みのスクリプトが入れられているようである。今回はアイコンなどの設定は行わなかったが、CocoaやJavaのプログラム作成のときと同様、アイコンなどを設定すれば、きちんと表示されるはずだ。また、nibファイルのローカライズなどの方法も、他のフレームワークでのときと同じようにすればいい。

◇すでにパッケージされたアプリケーションとして出来上がっている
 

作成したプログラムについて説明しよう。リストは次のようなものであるが、↓以降は前の行とつながるものとして解釈してもらいたい。

on clicked theObject
set thisWindow to window of theObject
set tableColNum to string value of text field "colNum" of thisWindow
set tableRowNum to string value of text field "rowNum" of thisWindow
set tableWidth to string value of text field "width" of thisWindow
set tableHeight to string value of text field "height" of thisWindow
tell application "InDesign 2.0J"
tell active document
make new table at selection with properties { ↓
row count:tableRowNum as number, ↓
column count:tableColNum as number, ↓
height:tableHeight, width:tableWidth}
end tell
end tell
end clicked

まず、ボタンをクリックするとこのハンドラが呼び出されるが、theObjectはボタンを参照している。ボタンが所属するウインドウを取得するにはwindowプロパティを利用すればよいので、まずウインドウへの参照をthisWindow変数に入れている。ところで、AppleScript.asdictionaryを参照してもらいたいが、Control View Suiteのクラスにbuttonがあり、それがボタンである。しかし、このクラスは、controlクラスを継承しており、そのcontrolはさらにContainer Suiteにあるviewを継承したものである。このviewクラスのプロパティにwindowがあるというわけだ。
そして、ウインドウへの参照が分かれば、そこに配置されているコントロール類への参照はプログラムのように求めることができる。たとえば、AppleScript属性のNameがcolNumのテキストフィールドは、「text field "colNum" of thisWindow」として参照できるのである。このあたりは、Application suiteのwindowクラスを参照すると良いだろう。
text fieldクラスのプロパティにstring valueというものがあって、それを使えば、テキストフィールドの中身を文字として得られるというわけである。text fieldクラスはControl View Suiteにあるが、controlクラスを継承している。controlクラスにstring valueプロパティが定義されているのである。
以上は1つの手法である。アクティブなウインドウは「window 1」などとして参照することもできるだろうし、他にもやり方があるかもしれない。だが、ウインドウを参照し、そこに配置されているコントロールへの参照方法が分かれば、あとはコントロールごとのプロパティなどが分かればユーザインタフェースとのやり取り部分は概ね制圧できたと思っていいだろう。

InDesign側のスクリプトであるが、make new tableとすることで、とりあえずは表は作成できる。ただ、表は任意の場所ではなく、テキストフレーム内となる。だから、表を作るメニューはテキストフレームに挿入ポインタがある場合に選択できるようになる。挿入ポインタがテキストフレームにあると、selectionは「insertion point 1 of text frame 1」のような感じになるのだが、これをmakeコマンドのatパラメータに指定すればいい。つまり「make new table at selection」で挿入ポイント位置に新たに表を作るというわけだ。表のプロパティをwith propertiesで後は指定すればいい。プロパティは大量にあるのだが、その中で行列数とサイズだけを指定して新たに表を作ったという次第だ。
ところで、tell applicationの後の文字列はアプリケーションファイルのファイル名でないといけないようだ。DockにはInDesignとしか出てこないが、ファイル名を指定する必要があるようだ。

AppleScriptのプログラムが長くなってしまうと、option+returnで続き行を指定した改行を入力できた。例の鍵マークはどうもキー操作はoption+Lになっているようであるが、Project Builderではどちらもうまくは機能しない。option+returnは普通に改行するし、鍵マークはエラーとなる。それで、1行を分割する方法であるが、結果的には半角の「ツ」を入力することで対処できるようだ(「ツ」って出るのはカッコ悪いけど)。半角カナの「ツ」を入力する方法としては、とりあえずことえりでは環境設定で半角カナ入力を可能にして、仮名漢字変換で全角をトランスリタレートするという方法しか思い付かなかった。

AppleScript Studioはいずれにしても本格的なアプリケーションを比較的容易に作成できるという印象が持たれる。Mac OS時代でもソリューションにつながっていたAppleScriptであるが、OSAXを使ったりすると環境を選んだり、原因不明のトラブルに見舞われたこともよくある。Mac OS XになってAppleScriptはもちろん、OS自体の土台が強固になったので、より安定した実行環境であることは十分に期待できるのである。その上で、本格的なGUIが構築できるというフレームワークが提供された。AppleScriptはもはや「マクロ言語」ではないのである。

最後にさっそく公開されているAppleScript Studio関連サイトを紹介しておこう。もちろん、サイトはスタートしたばかりだが、がんばってもらいたいと願っている。ちなみに、以下のサイトの制作者はAppleScriptの世界では名前が知られた人たちである。

◇oomori.com
 http://www.oomori.com/

◇AppleScript Studio研究所
 http://web1.aaacafe.ne.jp/~tetsuyak/ASS/
(この項、以上)
関連リンク