GO BACK

AppleScript Studio教室 その1

「AppleScript Studioの基礎知識」



■AppleScript Studioってなに?

 Mac OS Xは、今までのMacOSとはまったく違うOSです。「コアがUNIXになった」といったことだけでなく、さまざまな違いがあります。中でも、プログラミング好きの人間にとって最大の変化は「標準でアップル純正の開発環境が付属している」ということでしょう。

 Mac OS Xのパッケージには「Developer Tools」というCD-ROMが付属しています。これに、Mac OS X用ソフトを開発するために必要なものすべてが入っているのです。いうなれば、Mac OS Xを買ったユーザーは、誰もがみんなMac OS Xの開発者になれるというわけです。

 ただし、標準でソフトが付属するからといって、それだけで「誰もが」開発できるようになるわけではありません。Mac OS Xの開発環境は素晴らしいものですが、それでもやっぱり本格的なプログラミングの知識がないとCocoaアプリケーションは作れないのです。・・少なくとも、今までは。

 が、Mac OS X 10.1.2より状況はがらりと変わりました。なぜなら、このバージョンから「AppleScript Studio」と呼ばれるものが登場したからです。——AppleScript Studioとは、「AppleScriptで本格的なCocoaアプリケーションを開発できるようにしてしまう環境」のことです。AppleScriptならば、特にプログラミングの知識や素養がなくともなんとか使えるようになります。これでCocoaアプリが作れるなんて、夢のようじゃないですか?

 が、なぜだか世間では、こんな画期的な開発環境に対してあんまり注目がされていません。Macの雑誌やWebマガジンのサイトなどを見ても、Objective-Cとかいう難しげな言語を使った開発ばかりで、AppleScript Studioなんてほとんど見向きもされません。それで、「どうせ、ろくに使えない代物なんじゃないか?」と思ってしまっている人もいることでしょう。

 では、AppleScript Studioと他の言語とどう違うのか、そのあたりについて簡単に整理してみましょう。

1.実際の開発手法はほとんど同じ。
Mac OS Xでは、DeveloperToolsに付属する「Project Builder」と「Interface Builder」を使って開発を行ないます。この点は、Objective-CやJavaといった本格言語でも、AppleScript Studioでも変わりません。AppleScript Studioなんて名前が付いているので、そういう専用ソフトがあるかのように錯覚する人も多いようですが、これは「AppleScriptを使ってCocoa開発を行なうための仕組み」のことであって、そういうソフトがあるわけではないのです。

2.開発は圧倒的に楽チン!
AppleScript Studioの最大の利点はこれです。Objective-C・Javaと比べると、とにかく作るのが簡単です。もちろん「言語自体がわかりやすく簡単」ということもありますが、AppleScript Studioでは、開発を簡単に行えるようにするため見えないところでいろいろ考えてあります。
 例えば、Objective-C・Javaでは、呼び出す機能や使用する部品などを登録し、必要に応じて関連を接続するなどといった作業をして初めてコードからGUIを利用できるようになりますが、AppleScript Studioだと用意されたイベントをONにするだけで使えるようになってしまいます。

3.性能的には、やっぱり弱い。
AppleScript Studioと他の本格言語では、やはり基本的な部分でかなり違いがあります。まず、現状ではAppleScript StudioではCocoaアプリケーション以外は作れません。また、Cocoaの機能もすべてが使えるわけではなく、サポートされていない機能もけっこうあります。特にグラフィック関係が利用できないのはつらいでしょう。
 更に、作ったアプリケーションの動作速度も、やはりAppleScriptで動きますからObjective-CやJavaに比べると処理速度は遅くなります。ですから、処理に膨大な時間がかかるようなものには向きません。ただ、AppleScriptといえども今のOSとハードウェアならばずいぶんと速く動くようになってますから、ちょっとした作業を行うには十分でしょう。また5にあるように、足りない機能を後から追加することも不可能ではないのですから。

4.完全AppleScript対応になる!
AppleScript Studioを使う最大の利点はこれです。AppleScript Studio製のアプリケーションは、黙っていてもすべて完全AppleScript対応となるのです。これは、なかなか強力ですよ。Objective-CやJavaを使って完璧にAppleScriptに対応したソフトを作るのは実に大変なのですから。

5.機能が足りなければObjective-Cで追加できる!
これが意外に見落とされがちな部分でしょう。実は、AppleScript Studioでは、Objective-Cで作ったプログラムの機能をスクリプトから呼び出して利用することができるのです。AppleScript Studio自体は確かに機能的に限界があります。が、「だから覚えても無駄だ、Objective-Cにしろ」ということではないんです。
 Objective-Cしか知らなければ、すべてObjective-Cだけで作るしかありません。これはけっこう大変なことです。が、AppleScript Studioを覚えていれば、将来Objective-Cを使えるようになっても、「足りない機能だけObjective-Cで作り、後はAppleScriptで作る」ということが可能となるのです。

 確かに、本格言語を使った場合に比べると、ちょっと弱いのは否めませんね。当分の間、AppleScript Studioによる開発は、「これで本格アプリケーション開発をする」というより、「AppleScriptで作ったスクリプトに、Macらしいユーザーインターフェイスをつけられる」というくらいに考えておいた方がよいでしょう。

 Cocoa用に用意されているボタンやフィールドといった部品は、ほとんどすべてAppleScript Studioでも利用できます。それ以外の機能はあまりありませんが、AppleScript自体にファイルアクセスやインターネット利用の機能などがありますから、それらを使うことで 代用可能なものは多いはずです。更に、AppleScriptには「他のアプリケーションを制御する」という特技があるじゃないですか! これらを組み合わせれば、意外にしっかりしたアプリが作れることに気がつくでしょう。

 実際、筆者も簡単なアプリをいくつかAppleScript Studioで作ってますが、ちょっとしたツールなら十分使える速度で動いてくれますし、なにより「Objective-CやJavaベースで作るより圧倒的に簡単!」なのは他に代えがたいものがあります。また将来、Objective-Cを勉強し始めたとしても、AppleScript Studioの知識と経験は無駄にはなりません。AppleScriptとObjective-Cをうまく組み合わせることで、すべてObjective-Cで書くより遥かに簡単にプログラムを作れるようになるのですから。

 というわけで、「初めてプログラミングをやってみよう」という人も、「いずれ本格的にプログラミングしたい」と思っている人も、まずはAppleScript StudioからCocoaプログラミングを始めてみるのが一番だと思いますよ。


■プロジェクト作成の基本を覚える

 では、ともかくAppleScript Studioを使ってみましょう。——が、その前にいくつか注意点だけ整理しておきます。この講座は、以下の点に留意して読むようにして下さい。

 それでは、AppleScript Studioを使ってみましょう。AppleScript Studioによる開発は、DeveloperToolsの「Project Builder」と「Interface Builder」を使って行ないます。といっても、これらは役割が違っており、「Project Builder でソースコード(スクリプト)を書く」「Interface Builderでユーザーインターフェイス(メニューやウィンドウなど)を作る」というようになります。両者は別々に使うのではなく、まずProject Builderで「プロジェクト」と呼ばれるものを作成し、そこから必要に応じてInterface Builderを呼び出して利用します。——この流れを頭において、順に作業をしていきましょう。

1.まずProject Builderを起動します。そして「プロジェクト」を作成します。プロジェクトは、開発を行なう際の単位となるもののように考えて下さい。新しいアプリケーションを作るときは、そのためのプロジェクトを作るわけです。——では、Project Builderを起動し、「新規プロジェクト」メニューを選んで下さい。

Project Builderの「新規プロジェクト」ウィンドウ


2.AppleScript Studioを使う場合には、「AppleScript Application」「AppleScript Document-based Application」「AppleScript Droplet」の3つの種類のプロジェクトが用意されています。これらは「一般的なアプリケーション」「書類のウィンドウを何枚も開いて作業するマルチウィンドウのアプリケーション」「ドラッグ&ドロップでスクリプトを動かす(GUIを持たない)アプリケーション」を作るためのものです。ここでは「AppleScript Application」を選んで下さい。これがもっとも基本となる種類のものです。

3.「次へ」ボタンを押すと、プロジェクト名を入力する画面になります。ここで「プロジェクト名」にプロジェクトの名前を入力します。ここでは「ASApp」としておきましょう。なお、「保存場所」の方は、プロジェクト名を入力すると自動的に設定されるので特に入力しなくとも大丈夫です。

 これで、新しいプロジェクトが作成され、新しいウィンドウが表示されます。これはある種のブラウザウィンドウになっていて、プロジェクトで使用するファイルを表示し編集したりできます。またプロジェクトのビルド(アプリケーションを作ること)や実行、デバッグといった作業やそのための設定などもすべてこのウィンドウで行ないます。

Project Builderのブラウザウィンドウ


 さて、このウィンドウは、左側にファイルの一覧が、右側に選択されたファイルの内容が表示されるようになっています(ファイル以外にもいろいろ使いますが、まずは基本ということで)。もし、Mac OS X 10.2を使っていたとすると、このように1枚のウィンドウではなく、何枚かのウィンドウに分かれて表示されているかもしれません。その場合には、「環境設定」メニューの「タスクテンプレート」アイコンを選び、「1つのウィンドウ」を選択して下さい。1枚のウィンドウですべて表示されるようになります。

 左側にずらりと表示されているのは、このプロジェクトで使用するファイル類です。これらはフォルダ分けして整理されており、フォルダ横の▼マークをクリックしたりダブルクリックすることで中身を表示できます。これらのフォルダにまとめられているファイル類をざっと整理すると以下のようになります。

  1. 「Script」フォルダ——AppleScriptのスクリプトファイルが入っています。10.2以前は「Application.applescript」というファイル名で、10.2では「《プロジェクト名》.applescript」というファイル名で作成されます。
  2. 「Resources」フォルダ——リソースとは、プログラム内から読み込んで利用されるデータファイルのことです。デフォルトでは、以下のようなものが組み込まれています。
    1. 「MainMenu.nib」——Interface Builderのファイル。ウィンドウなどのGUIのファイル。
    2. 「InfoPlist.strings」——aboutなどで利用するインフォメーション情報。
    3. 「AppleScriptKit.asdictionary」——AppleScript Studioの辞書データ。
  3. 「Other Sources」フォルダ——その他のソースコードファイル。「main.m」というのが入っていますが、これは起動用のObjective-Cファイルです。これは操作することはありません。
  4. 「Frameworks」フォルダ——プロジェクトで使うフレームワーク(システムに用意されているライブラリみたいなもの)。これは削除したりしてはいけません!
  5. 「Products」フォルダ——ここに作成されたアプリケーションが表示されます。

 これで、 ざっとファイル類の働きがわかりました。AppleScriptのスクリプトを作成するときは「Script」フォルダの中にあるファイルを選べばいいし、 ウィンドウやメニューといったGUIを設計したければ「MainMenu.nib」というのを選べばいいわけです。

 この他、プロジェクトのビルド関係のボタンについても触れてきましょう。これらは、ウィンドウの左上にあるアイコンです。マウスポインタをボタンの上に移動してしばらくすると、ボタン名がポップアップしてくるのでだいたいわかることでしょう。ここで、「プロジェクトのビルド」「ビルド&実行」「ビルド&デバッグ実行」「クリーニング」といった操作を行ないます。


 通常は「ビルド&実行」ボタンを押せば、プロジェクトからアプリケーションを作成し、そのまま実行します。これで動作チェックなどは行なえるでしょう。「デバッグ実行」は、スクリプトを1行ずつ実行させながら、そのときの状態(変数の値など)をチェックできるものです。これは、ある程度開発に慣れてから使ってみればよいでしょう。また「クリーニング」は、前回までのビルドで残っていたファイル類をすべて消去して一から新たにビルドし直す際に使います。ファイルを修正したのにうまくビルドしたアプリケーションに反映されないような時には、これで一度クリーニングしてから再ビルドするとよいでしょう。


※Mac OS X 10.2のProject Builderの問題について
 これは、筆者の環境によるのかもしれませんが、Mac OS X 10.2に付属するProject BuilderでAppleScript Studioのプロジェクトを作成すると、スクリプトファイルの保存に失敗しファイルが消えてしまうというトラブルに遭遇しました。
 この問題は、以下の3通りの方法でほぼ解決できるようです。もし同じ症状が出た人は、これらを試してみて下さい。
  1. 普通に新規プロジェクトを作成する。(全方法共通)
※方法その1
  1. 作成されたスクリプトフィルを選択し、スクリプトの表示部分を選択した状態にする。
  2. 「形式」メニューの「ファイルエンコーディング」より「日本語(Mac OS)」を選ぶ。

※方法その2
  1. 作成されたスクリプトファイルを選択して開く。
  2. 初期状態で作成されているコメント文をすべて削除する。

※方法その3
  1. 作成されたスクリプトファイル(○○.applescriptというもの)を選択し、「編集」メニューから「削除」を選ぶ。
  2. 「参照を削除」という確認アラートが出るので、ここで「参照を削除」ボタンを選ぶ。
  3. 「プロジェクト」メニューの「ファイルを追加」を選び、今削除したスクリプトファイルを選択する。
  4. 追加に関する設定ダイアログシートが出てくるので、そのままOKする。
  5. スクリプトファイルが追加される。ドラッグなどして「Script」フォルダ内に移動しておく。
 これで、問題なくスクリプトファイルが保存されるようになります。なお、この作業は、新規プロジェクトを作ったら(何かの作業を行う前に)すぐに行って下さい。スクリプトファイルを修正したり、保存のエラーが出た後で行っても、うまくいかない場合があるようです。
 また、方法その3を行なった場合、Interface BuilderのAppleScriptのスクリプトファイル設定がすべてOFFに戻ってしまうので、作業の後、これらの設定を確認するようにしましょう。特にDropletの場合、File's Ownerのidleとopenイベントが呼び出されない状態に戻ってしまうため、組み込み後、これらの設定を確認しておかないとうまくイベントが呼び出されなくなります。


■Interface Builderを使う

 Project Builderで行う作業は、あくまで「コード(スクリプト)の編集」と「アプリケーション作成のためのさまざまな設定」です。アプリケーションで使うウィンドウやメニューといったGUI部品は、Interface Builderで編集します。

 プロジェクトを作成すると、そこにアプリケーションでデフォルトで使用するGUIデータのファイルが標準で組み込まれます。「MainMenu.nib」というのがそれですね。GUIデータは、すべてこのようにnibという拡張子のファイルとして作成されます。 この「MainMenu.nib」をダブルクリックすると、Interface Builderが起動し、ファイルが開かれます。——あ! ちなみにMainMenu.nibは、フォルダのように階層を持っていて、左側の▼マークをクリックして開くと「English」という項目が表示されるはずです。Cocoaでは、多言語対応のアプリケーションを作れるようになっており、標準ではEnglishだけが組み込まれているのです。これにJapaneseなどを追加して日本語化できるようになっているのですね。

Interface Builderの画面


 これが、Interface Builderの画面です。こちらはProject Builderとは異なり、何枚ものウィンドウを使い分けて開発を行うようになっています。とりあえず、主なウィンドウ類の役割に付いて頭に入れておきましょう。

 これらを組み合わせて使うことで、インターフェイスを設計していくことができます。——基本的には、「ツールパレットから必要な部品をデザインウィンドウにドラッグ&ドロップする」「配置した部品の位置や大きさを調整する」「Infoウィンドウで部品の細かな設定をする」ということの繰り返しで、GUIは作成していけます。Infoウィンドウが、項目がたくさんあってわかりにくいかも知れませんが、実際に何度か使ってみれば、基本的な操作はすぐに体得できるはずですよ。

 では、とりあえず2つの基本ツールがどんなものかわかったところで、次回はサンプルに何か作ってみることにしましょう。

 

GO NEXT


GO HOME