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

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

前回ですばらしいアプリケーションは完成ですが、この先を自力で試す人のために大切な事の補足です。


それでもやっぱりAppleScriptObjCはやっぱりAppleScriptと違うのです

メソッドはハンドラみたいだし、オブジェクトの値も操作できたし、これで後はAppleScriptでガリガリ書いて試してみよう、という人の為にいきなりぶつかるだろう問題だけ補足しておきます。


One More Thing

前回までで作った『clickButton_』のハンドラの最後に以下のようにAppleScriptでは見慣れた文字列をダイアローグボックスに表示するだけのソースを書き加えて実行してみます。

display dialog textFieldValue

するとこの行でエラーになり、以下のようなエラー内容がログに書き出されます。

MyTest[64898:a0f] *** -[MyTestAppDelegate clickButton:]: 
Can’t make «class ocid» id «data kptr0000000020F7760002000000» into type string. 
(error -1700)
--本来1行ですが改行を挿入しています

どうやら渡された値を『string』、つまり文字列に出来ないと言っているようです。では渡されたログにもちゃんと文字として書き出されているテキストフィールドの値は何なのでしょう?

先ほどのヘルプを読み直すと、返り値は『NSString』だよ、と書かれています。AppleScriptの値の型には『NSString』というものはありません。試しに『display dialog』の前に以下を挿入して実行してみます。

log (class of textFieldValue) as text

もし文字列なら『text』とログに書き出される筈ですが、やはり同じようにエラーになります。仕方ないのでObjective-Cのメソッドの中にクラスを調べるものがないか探して、以下に書き換えて実行してみます。

log className of textFieldValue

するとログには『NSCFString』と書き出されました。やはりAppleScriptでは扱えない値の型なのです。

基本的にObjective-Cのメソッドの返り値は『NSなんとか』という型の値になります。これはAppleScriptでは扱えない方なので、扱えるように変換を行えばいいのです。先ほどの『display dialog』を以下のように書き換えます。

display dialog (textFieldValue as text)

これで実行すると、今度はうまく行き、ダイアローグも表示されました。このようにObjective-Cのメソッドの返り値をAppleScriptの値として使う場合は、text(文字)、Number(数字)、Boolean(真偽値)など適切なものに変換して使う必要があるので気をつけてください。

逆に(textFieldValue as text)のクラスをclassNameで捕ろうとすると今度はこちらがエラーになるのですが。


最後に

AppleScriptの知識でサクッと何か作りたい、となると最初は結構戸惑います。ですが慣れてくるとAppleScriptStudioよりも楽かもしれないと思うようになってきています。またこれまで敷居が高くてなかなか取りかかれなかったObjective-Cの勉強もAppleScriptObjCでいろいろと作って見ているうちに、基本的な作業の流れを覚えられたり、作法を覚えられたり、またほんの小さなものをObjective-Cで作成してメソッドとして呼び出して試してみたりすることができるので、なんとなく手軽に試す事が出来るようになった気がします。

現状ではObjective-Cしか知らない人にもAppleScriptしか知らない人にも中途半端で面倒な環境となってしまっていますし、実際ネット上ではObjective-Cが分からないと使えない、という書き込みも散見されます。本当ならちゃんと日本語で書かれた書籍がでてくれば(未整備な実装の改善も含めて)、いろいろな人にとって有用で柔軟な環境になると思います。

人様の本を読んで勉強させていただいているので、その内容に冠ることはできるだけ避けたいところで、なかなか問題の解決策もズバリとは書くにくい状況です。再度宣伝する訳ではありませんが、現状頼りになるドキュメントはhttp://www.macosxautomation.com/』さんの『AppleScriptObjC Explored』というPDFの書籍くらいしかありません。実はこの先にもいろいろと面倒なことが待っているので、なにかあればこの中を探すのがいいだろうと思います。

卵が先か鶏が先かになってしまいますが、こうしたサイトでもなにかの参考になり、使用する人が増え情報が増える事を願って、次回(未定)は『AppleScriptObjC Explored』に被らない方向で、もう少し踏み込んだ内容に触れられれば、と思います。


何か間違いや補足等ありましたらコメントを頂けるとありがたいです。


ではご同輩、がんばりましょう。


追記: いろいろと探していたら『Mac OS X Automation』『Developing AppleScript Applications』という記事があり、そこからのリンクに『A video overview of how to connect application interfaces to their corresponding function code using Interface Builder outlets and actions.』というムービーのリンクがありました。ここまで見てきたものよりもう少しだけ複雑なインターフェースを扱っています。独習の参考になるかと思います。

更に何かないのかな、と探してみたら、『MacBreak Dev 036 • Application Interfaces using AppleScript-Objective-C』というのもあったのですが、これは基本的には上と同じものを使っているようです。このシリーズは『MacBreak Dev』としてiTunesでみれるようです。



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

新しくコメントをつける

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

ライブラリ