トップ 開発関連 AppleScriptObjC ASOCでアプリケーションを作ってみる-01-Xcode3.2

ASOCでアプリケーションを作ってみる-01-Xcode3.2

ここを読んでいる人の大部分はすでに何となくAppleScriptを使っている人ではないかと思います。

逆にまだAppleScriptをこれから始めようと言う人は、先ずスクリプトエディタで簡単なものから作ってみて、更に大きなもの、インターフェースを作り込んでみたいということになった時にAppleScriptObjCに取り組む事をお勧めします。


ここからいろいろと書いて行きますが、言葉の使い方、解釈、もしかしたら私の理解そのものに間違いがあるかもしれません。もしもお気付気の方はコメント欄なりにご使役を頂ければありがたいです。


プロジェクトを作る

さてこの後は取りあえず簡単なプロジェクトを作ってみることにしましょう。ところがXCodeの3.2と4.6では随分様子が違っている。3.2は日本語化されてるのに4.Xは日本語化されていないなどから始まってインターフェースが随分違ってしまっているのです。なので、初めての人でも取りあえず流れが追えるように、両方で作って比べてみる事にする。


XCode3.2による新規プロジェクトの作成

Xcodeを起動し、ファイルメニューから新規プロジェクトを選択すると以下の新規プロジェクトダイアローグボックスが表示されます。左側で「Application」を選択し、更に右上に現れる「cocoa-AppleScript Application」を選択。「Create document-based application」にチェックが入っていない事を確認して「選択...」ボタンをクリックします。


新規プロジェクト ダイアローグボックス

新規プロジェクト ダイアローグボックス

プロジェクトの名称(基本的には作成するアプリケーションの名称でもあります)と保存先を決めます。

保存 ダイアローグボックス

保存 ダイアローグボックス

プロジェクトが作成されて、以下のような状態になります。『プロジェクト名称+AppDelegate.applescript』が差し当たり用意されたスクリプトのファイルと言うことになります。また、赤文字の『MyTest.app』はビルドされると出来上がるアプリケーションを示していますが、まだ一度もビルドしていないため存在しないので赤文字になっているということになります。

プロジェクトウィンドウ

プロジェクトウィンドウ

プロジェクトに用意されたものをファインダーで見ると以下のようになります。

プロジェクトフォルダ内

プロジェクトフォルダ内

『プロジェクト名称+AppDelegate.applescript』の中身

作成されたファイル類の中の、『プロジェクト名称+AppDelegate.applescript』がAppleScriptのファイルになります。中に書き込まれているのが以下のコードですが、『プロジェクト名称+AppDelegate』という名前で Script 定義がなされ、その中に一つの property と on から始まる2つのハンドルが用意されています。

『プロジェクト名称+AppDelegate』という Script定義はAppleScriptObjCの中ではクラスとして振る舞います。クラス(class = 型)やインスタンス(instance = 実体)、またはインヘリタンス(inheritance = 継承)等はオブジェクト指向のプログラミングの考え方の基本となるもので、ネット上に沢山の解説がありますし、そのための解説だけの本も沢山出版されていますので、そちらをお読みください。

・・・とはいえ、それだけで本になってしまうような内容ですし、取りあえず動くものを作ってみたいということで先に進む為に、怒られるのを覚悟で思いっきりざっくり書くと以下のような感じでしょうか。

この場合は『MyTestAppDelegate』という Script定義 で定義された、プログラムの設計図にあたるクラスさんには『applicationWillFinishLaunching_』というハンドラと『applicationShouldTerminate_』というハンドラが定義されているのでそのハンドラが呼ばれた時にはやる事が分かるので、そのハンドラを実行するけど、それ以外は知らないから、分からないことはこのクラスの親は『NSObject』というAppleの偉い人が作ってくれたクラスなので、親元に聞いてみてくださいな、という感じでしょうか。

はい、怒らないでください。ここはそういうもの、と流して先に進みましょう。

デフォルトで入っているコード

script MyTestAppDelegate
	property parent : class "NSObject"
	
	on applicationWillFinishLaunching_(aNotification)
		-- Insert code here to initialize your application before any files are opened 
	end applicationWillFinishLaunching_
	
	on applicationShouldTerminate_(sender)
		-- Insert code here to do any housekeeping before your application quits 
		return current application's NSTerminateNow
	end applicationShouldTerminate_
end script

『applicationWillFinishLaunching_』と『applicationShouldTerminate_』というハンドラですが、これはそれぞれハンドラの名前やコメントに書かれていることからも推察されるように、アプリケーションのLaunch(起動)が終わろうとする時に呼ばれる命令に答える為のものと、アプリケーションの終了前にお片付けの為に呼ばれるハンドラになります。なので起動時に初期設定を読み込んだり環境をチェックしたりする処理は前者に書き込んだり、終了時に初期設定を書き出したりいらないファイルを消したりなどの処理を後者に書き込んだりして使います。

いつ呼ばれているか分かるように『log』を書き出すようにしてみましょう。

script MyTestAppDelegate
	property parent : class "NSObject"
	
	on applicationWillFinishLaunching_(aNotification)
		-- Insert code here to initialize your application before any files are opened 
		log "起動処理"
	end applicationWillFinishLaunching_
	
	on applicationShouldTerminate_(sender)
		-- Insert code here to do any housekeeping before your application quits 
		log "終了処理"
		return current application's NSTerminateNow
	end applicationShouldTerminate_
end script

コマンド+Sで保存します。問題なければインデントが調整され、文法に添って色分けされて保存されます。逆に問題があると、ちゃんと色分けされないので、どこか何か間違っているぞ、ということになります。


アプリケーションを動かしてみる

まだログしか書き込んでいませんが、アプリケーションを動かしてみましょう。ビルドと実行ボタンを押します。


ビルドと実行

ビルドと実行

プロジェクトウィンドウの左下に、問題なく完了しました、と表示され『MyTest』というアプリケーションが起動して、何もないウィンドウが表示されたかと思います。


ログを書き出すようにしかしていないのですから、ログが書き出されたかを確認しましょう。

Xcodeに戻り『実行』メニューから『コンソール』を選んでください。以下の様に表示されているかと思います。


ビルドと実行

ビルドと実行

多分ちゃんと『起動処理』と書き出されていることでしょう。


もう一度『MyTest』アプリケーションに戻ってみましょう。何も無い『MyTest』というウィンドウが表示され、また『MyTest』『File』『edit』などのメニューもあります。『MyTest』メニューから『about MyTest』を選ぶとバージョン等が表示されますし、『Quit MyTest』を選ぶとアプリケーションは終了します。では『Quit MyTest』を選択してみましょう。アプリケーションが終了し、先ほどのデバッグコンソールウィンドウを見てみると、『終了処理』が書き出されているかと思います。

AppleScriptに関してのデバッグはほぼこのログ書き出しでバグを追うような感じですので、書いて実行してコンソールで確認して、という繰り返しになります。


投票数:77 平均点:10.00
前
AppleScriptObjC
カテゴリートップ
AppleScriptObjC
次
ASOCでアプリケーションを作ってみる-02-Xcode3.2

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

ライブラリ