次回→

短期集中連載

Mac OS X開発の秘密兵器
「AppleScript Studio」

 

第1回 AppleScript Studioってなんだ?



■マクロ言語「AppleScript」とは

【画面1】
Script Editorは、Mac OSに付属するAppleScriptの専用編集ツール。これは開発中のver. 2の画面

 今、Mac OS Xの世界でもっとも注目を浴びつつある開発環境、それは「AppleScript Studio」だろう。といっても、これは本格的な高級プログラミング言語の類いでも、Javaのように彗星の如く登場した新しい言語でもない。一種の「マクロ言語」を使った開発環境なのだ。

 プログラマでない、多くの一般ユーザーにとって、もっとも身近なプログラミング環境といえば、マクロの類いだろう。表計算やスプレッドシートなどで、決まった処理を自動的に行なうための簡易言語。これが、特定のアプリケーションだけでなく、すべてのソフトで共通した仕様のマクロとして用意されたらどんなに便利だろうか。

 Mac OSの世界で、この考え方を現実のものとしたのが「AppleScript」というものだ。これは、Windowsでいえば「Windows Script Host」に相当する役割のものになるだろうか(ただし、その仕組みはかなり異なっているが)。このAppleScriptは、要するにアプリケーションを自動操作するための言語。非常にシンプルで直感的な言語仕様となっており、プログラミングに慣れていない人間でもちょっとした学習で自動処理のスクリプトが書ける。

 ちょっとAppleScriptがどれだけわかりやすい言語か、WindowsのWSH+Visual Basic Scriptと比べてみよう。

【WSH + VBScript】

Set obj = CreateObject("Scripting.FileSystemObject")
Obj.CopyFile "C:\Test","D:\Test"

【AppleScript】

tell application "Finder"
        duplicate file "Test" of disk "C" to disk "D"
end tell

 いずれも「C」ディスクの「Test」というファイルを「D」ディスクにコピーするという簡単な処理を行なうものだ。見ればわかる通り、WSH+VBScriptはいかにもプログラミング言語然とした感じだが、AppleScriptは自然言語(っていうか、英語ね)に近い雰囲気のものであることがわかる。AppleScriptを知らなくとも、読めば「なんとなくこういうことをやってるんだろう」ということが想像できる。

 WSHの悲劇は、単に機能を組み込んだだけで、他に具体的なサポートがなされないために一般ユーザーにその便利さが知られていないことにあるが、AppleScriptは少なくともそういう扱いは受けていない。Mac OSには「Script Editor」(画面1)という、スクリプトを記述しアプリケーション化する専用ツールが付属し、多数のスクリプトサンプル、更にメニューバーからスクリプトを選んで実行する機能なども組み込まれている。また、Script Editorには操作の自動記録機能があり、対応アプリケーションでの操作を記録し自動的にスクリプトとして書き出していくこともできる(ことになっているが、残念ながらほとんどのソフトが対応してなかったりする)。

 まぁ、それでも「誰もが気軽に使う」というのにはほど遠い現状なのだが、少なくともWSHの冷遇ぶりと比べれば遥かにマシだろう。特にDTPなど決まりきった処理を山ほどかかえる業務では、AppleScriptは強力な助っ人となっている。


■AppleScript Studioの登場が意味するもの

 このAppleScriptは、Mac OS Xに移植されて後、劇的な変貌を遂げる。Mac OS Xのアプリケーションは、「Cocoa(ココア)」と呼ばれる標準フレームワークを用いて開発される。これはウィンドウとかメニューといったアプリケーションに必要な主だった機能をまとめたもので、これを自分のプログラムから呼び出しさえすれば、何も考えずにウィンドウやメニューが作れてしまうというものだ(Windowsでいえば、「.NET Framework」が一番近いものだろうか)。

 本来、Mac OS Xは、Objective-CやJavaといった本格言語を使って開発するように設計されていた。が、アップルは更にこれを拡大し、このCocoaフレームワークをAppleScriptで利用できる仕組みを作りあげた。それが「AppleScript Studio」というものだ。

 Mac OS Xには、「Developer Tools」というものが標準で付属している。これはMac OS X用のプログラム開発に必要なソフト、ドキュメント、サンプルなどをまとめたもの。つまりMac OS Xでは、すべてのユーザーは自動的に開発者なのである(もちろん、実際に開発するかどうかは別として)。その標準開発環境でサポートされる言語に、AppleScriptも付け加えられたわけだ。

 これは、Windowsに例えるなら「MicrosoftのVisual Studio .NetにVBScriptが開発言語として追加され、すべてのWindowsにバンドルされる」というような状態だと考えればいい。それがとんでもない大盤振る舞いであることがよくわかるだろう。

 当初からMac OS XにはDeveloper Toolsがバンドルされてはいた。だが、Objective-CだのJavaだので開発できるといって、どれだけの(ノンプログラマである)一般ユーザーが喜んでプログラムを組むだろうか。はっきりいって、「一部のプログラマが更にプログラミングしやすくなったと喜んだだけ」に終わってしまった感もある。

 が、AppleScript Studioにより、状況は変わりつつある。開発に必要な知識や技術はかなり引き下げられ、それまで上級者だけのものだった開発の世界が、「初級を抜け出した」というあたりのユーザーにまで広がったのだ。現状ではAppleScript Studioはそれほど一般ユーザーの間に浸透してはいないが、こうした環境を標準で整えた意義は大きいだろう。


■Project Builderについて

 では、AppleScript Studioによる開発がどのようなものか見てみよう。Macユーザーでさえよく勘違いするのだが、AppleScript Studioという名前のソフトがあるわけではない。これは、AppleScriptで開発をする「仕組みの呼び名」であって、実際の開発はDeveloper Toolsに付属する「Project Builder」と「Interface Builder」という2本のソフトを使う。これらはMac OS X用プログラムを開発する際の標準環境とも呼べるもので、ここで使用する言語としてAppleScriptを選んで開発を行なうようになっている。つまり、Objective-CだろうとJavaだろうとAppleScriptだろうと、開発の基本的なやり方はすべて同じなのだ。

 Project Builderは、「プロジェクト」と呼ばれるものを作成するためのものだ。これは開発に必要なファイル類や各種設定をまとめて管理するためのもので、新たにプログラムを作成する場合は、まず新規のプロジェクトを作成する。製作アプリケーションに関する設定やソースコードの記述、ビルド作業などもすべてこれで行なう。

 画面2を見て欲しい。これがProject Builderの画面だ。このツールでは、画面左側に各種ファイルや設定などの項目が並び、そこから項目を選ぶと、右側にその内容が表示されるようになっている。ここでファイルの編集や各種設定を行なえる。また、ここでは1枚のウィンドウにまとめた形にしてあるが、インターフェイスは細かくカスタマイズでき、すべて別ウィンドウとして表示させたりすることもできる。

【画面2】
Project Builderは、プロジェクトに必要なファイル/情報を統合管理するツール。ここでスクリプトの編集も行なえる
【画面3】
作成するプログラムに関する各種設定はターゲットという形で管理されており、このようにビジュアルに設定変更が可能だ

 スクリプトの編集は、用意されたスクリプトファイルを選択して行なう。用語ごとに色分けして表示されるため、比較的わかりやすい。ただし最近の開発環境などでよくある自動補完機能(利用可能な用語がポップアップなどで自動的に選べる)などは、まだAppleScriptでは用意されていない。まぁ、ソースコードエディタとしては可もなく不可もなく、というレベルだろうか。

 プロジェクトのビルド(アプリケーションを作成すること)はアイコンをクリックするだけで簡単に行なえる。ビルドに関する設定は「ターゲット」と呼ばれるもので管理されており、アプリケーションの属性なども細かに設定できる(画面3)。この辺りは実に使いやすくまとめられている。


■Interface Builderについて

 もう1つのInterface Builderはどういう役割を果たすものかというと、これはウィンドウやメニューといったユーザーインターフェイスの部品をデザインするための専用ツールなのだ。もちろん単なるデザインだけでなく、ユーザーが操作した際のイベントと、呼び出すコードを関連づけるなど、GUIとソースコードの橋渡し的な機能も受け持つ。

【画面4】
Interface Builderは、いくつもの小さなツールウィンドウを使ってGUIをデザインする

 画面4がInterface Builderの画面だ。こちらはProject Builderとは異なり、いくつものユーティリティウィンドウが画面に並ぶ。これらの中から必要な部品を配置したり、設定画面を呼び出してデザインを行なうわけだ。

 基本的な作業手順は、まず「パレット」と呼ばれるウィンドウから使用したい部品を選んでウィンドウやメニューのデザイナに配置する。そして、Infoウィンドウと呼ばれるツールを使い、配置した部品の細かな設定を行なう、という形になる。AppleScript Studioの場合は、この他に、各部品のAppleScriptに関する設定を行なうが、基本的にはこの繰り返しでGUIの設計は完了する。いろいろウィンドウがあって複雑そうだが、作成の手順と、パレット・Infoウィンドウの使い方さえわかれば、特に専門知識がなくともGUIの設計は簡単にできてしまう。

 この2つのソフトは非常に密接な関係にあり、両者を行き来しながら開発を行なう。まぁ正直いって、慣れないうちはかなり戸惑うことが多いのも確かだ。どちらも本格的な開発環境であり、本職の開発者にとっては非常に強力なのだが、「それほど知識のない人間でも簡単に使える」とまでは至っていない。

 ただ、AppleScript Studioを使う場合、使用する機能は限られており、Objective-Cなどで開発する場合にしか使わない機能などは理解する必要もない。そうしたAppleScript Studioに必要な機能の使い方だけ覚えれば、意外に簡単に開発が行なえる。


■AppleScript Studioは実用になるのか?

 では、AppleScript Studioはどの程度使えるのだろうか。おもちゃのツール程度なのか、それとも本格開発に耐えうるものなのか。また他の言語に比べ問題点などはないのだろうか。その利点と欠点を挙げてみよう。

・全Cocoa機能が使えるわけではない

 これが、もっとも大きな点だろう。AppleScript Studioでサポートされているのは、ウィンドウやメニューといったMac OS X(Cocoaフレームワーク)のGUI関連、およびそれに付随する機能のみである。例えばネットワーク・ソケットやスレッドなどは使えないし、アプリケーション以外のプログラム(カーネル機能拡張などシステム関連のもの、スクリーンセーバーなど)は作れない。

・動作速度は遅い

 AppleScriptは、各命令文を「AppleEvent」と呼ばれる一種のシステム信号のようなものに変換し、これで通信しながら動いている。このため、本格開発言語(Objective-Cなど)で作られたものと比べると、動作速度はかなり遅くなる。ただし、最近はマシン自体が相当なパワーを備えているので、それほど複雑な処理でなければ(せいぜい数百行程度のスクリプトなら)十分実用になる速度で動くだろう。

・AppleScript以外の機能も使える

 これが、意外に見落とされがちな部分だ。Mac OS XはコアにUNIXの技術を使っている。AppleScriptではUNIXコマンドを呼び出すことが可能になっており、これらを利用することでかなり強力なことができる。また、「call method」という、Objective-Cクラスのメソッドを直接コールする機能を持っている。これにより、AppleScriptでできない機能をObjective-Cで書き、それとAppleScriptを連携して動かす、というようなこともできる。

・開発にかかる時間は圧倒的に短い!

 AppleScript Studioを使う最大のメリット、それは開発時間の短縮だろう。短に「作る時間」というだけでなはない。「そのために必要な知識や技術を修得するのにかかる時間」もだ。特に専門のプログラマでない人間が短期間にプログラムを作る場合、AppleScript Studioを使えば、他の言語(Objective-Cなど)に比べ圧倒的に短期間で開発を終えることができる。

 ざっと整理すれば、「万能ではないが、これでできることは思いのほかに大きい」という感じだろうか。ちょっとしたものなら数時間もあればできてしまうその簡便さは、本格言語では考えられないものだ。

 また本格的な開発の場合でも、短時間にプロトタイプを作成する際や、基本的なインターフェイスをAppleScript Studioで作り、実際の処理部分をObjective-Cで作成するなどといった使い方もできる。必要に応じてAppleScriptと他の言語を使い分ければよいのだ。

 というわけで、AppleScript Studioの概略がどういうものかわかったとこころで、次回は実際に簡単なアプリケーションを作りながら、具体的な開発手順などを見ていくことにしよう。

次回は来週の掲載を予定しております。

(2003年1月21日)

[Text by 掌田津耶乃]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.