Archive for the 'iPhone Simulator' Category

2012/08/07 iPhoneアプリをAppleScriptからコントロール

iPhoneアプリ(iOSアプリ)をAppleScriptからコントロールできるメドが立ちました。実際にAppleScriptからコントロールできています。

最初にお断りしておきますが……これは、「iPhoneアプリがiPhone実機で動いているところをAppleScript経由でコントロールする」という話ではありません。だいたい、AppleEventの仕組みが存在しないiOSに対してOS X側からネットワークごしにリモートAppleEventを投げ、応答があるわけがありません。

iphone11.jpg

Mac OS X上で稼働するiOSシミュレータ上で動くアプリをAppleScriptからコントロールした、ということです。確認はOS X 10.8+Xcode 4.4+iOSシミュレータ v5.1(272.21)で実施しました。

冷静になって考えれば、CocoaベースのアプリケーションであるiOSアプリが、特定のアプリ(iOSシミュレータ)の特定のウィンドウ上で稼働しているというのがiOSシミュレータの動作状態です(当然、例外はあると思います)。iOSアプリの作り方にもよりますし、普遍性がどの程度あるのかは保証のかぎりではありません。ただ、自分が関わっているiOSアプリケーションに対してコントロールを試みた、という話です。

この状態は、とくに変わったものではなく、一般的なCocoaアプリケーション内の1ウィンドウ内の各種GUI Elementに対してのアクセス……というとらえ方ができます。

とくに、技術的に困難な可能性はないと判断し、実際に試してみたら……当然のようにできました。

実際に、AppleScriptからiOSアプリケーションの画面上の情報を取得したり、特定のボタンをタップしたり……という操作を行えています(値の設定はかなり無理)。

自分としては、開発中の大規模なiOSアプリの画面スナップショット(画面数が多いので仕様書用の画像作成が大変)をひととおり自動作成するような自動処理を考えています。当然、書き出したあとは仕様書の中に貼り込んだ画面を最新のものにAppleScriptで自動で貼り替えることになります。このあたりは、日常茶飯事です。

よくも悪くも、「最高到達点」がその程度の処理内容にすぎないので、iOSアプリの開発資料の作成の手間を減らしたいとか、そういう「差し迫った必要性」がなければ、ほとんどのMac/iPhoneユーザーには関係のない話ではあります。

ただし、アプリ上のひととおりの画面のスナップショットを、仕様書上の画面番号を付けて指定フォルダに自動で保存できるとなれば、これは相当に便利です。

追記;予定していた仕様のものは、ひととおりできました。AppleScriptObjCでさらっと作って、便利に使えそうです。