Archive for the 'AppleScriptObjC Explorer 2' Category

2012/04/03 AppleScriptObjC Explorer2で編集中のScriptをすべて保存してXcodeでビルド実行 v2

AppleScriptObjC Exlorer 2で、編集中のScriptをすべて保存してXcodeの最前面の(アクティブな)プロジェクトをビルドして実行するAppleScriptです。

……なるべく1行で内容が分かるように心がけていますが、さすがになんのことやら分かりにくいので、説明します。

本ScriptはMac OS X 10.6.8+Xcode 4.1+AppleScriptObjC Explorer 2 2.2.1で作成。Mac OS X 10.7上でも動くはずです。

Xcode 4.0以降でAppleScriptObjCのサポートは「悲惨」のひとことに尽きます。インデントは狂うわ、構文確認時の各種ブロックの補完は行われないわ、AppleScript構文色分けがまったくきかないわで、生産性がダダ下り。AppleScript Studioの頃には、Mac OS X 10.5の頃まではなんとか構文色分けは維持されてきたものですが……。

asoc1.png

さすがに、Xcode 4.x内蔵のテキストエディタに愛想が尽きて、AppleScriptObjC専用外部エディタである「AppleScriptObjC Explorer 2」をお買い上げ。Xcode上のファイル一覧でAppleScriptを選択した状態でコンテクストメニューを表示。「Open With External Editor」を実行してAppleScriptObjC Explorer 2でAppleScriptのテキストを編集させるようにしています。

asoc2.png

これで、構文確認時の各種ブロック(ifブロックとかrepeatブロックとかtellブロックとか)の入力補完や、AppleScript構文色分けなどが利用できます。

ただ……Mac OS X 10.6/10.7ともに、Xcodeの外部エディタとして使用した場合に、AppleScriptObjC Explorer 2からはXcodeプロジェクトのビルドやら実行やらはできません(Mac OS X 10.7上でAppleScriptエディタ上と同様にAppleScriptObjCプログラムを単体で作成・実行できます)。

そこで、AppleScriptObjC Explorer 2側からXcodeのプロジェクトをビルド&実行するようにしてみたのが本AppleScriptです。

ただし、Xcode 4.x系のAppleScript対応機能は、いまだ実装の発展途上というか、工事中で機能不全な状態なので……まともにXcodeのオブジェクト階層をたどっていく気になりません。なげやりに、GUI Scripting経由でメニュー項目を呼び出したりしています。また、ビルド&実行対象は最前面のXcodeプロジェクトであって……複数のプロジェクトをXcode上でオープンしている場合に、外部エディタで編集しているScriptの所属するプロジェクトが、Xcode上でかならずしも最前面になっているわけではありませんので……そのへんは割り切って使っています。

Xcode 4でビルドを行わせる前に、AppleScriptObjC Explorer 2側でオープン中のScriptをすべてファイル保存させています。未保存のAppleScriptが存在した場合には保存をスキップします。

AppleScriptObjC Explorer 2用のScript Menuに入れて呼び出して使っています。

スクリプト名:AppleScriptObjC Explorer2で編集中のScriptをすべて保存してXcodeでビルド実行 v2
tell application “AppleScriptObjC Explorer 2″
  set dList to every document
  
  
set sList to {}
  
repeat with i in dList
    –documentのfile属性を取得(未保存だとmissing valueになっている)  
    
set tmpFile to file of i
    
    
if tmpFile is not equal to missing value then
      tell i –保存済みのdocumentのみ保存を実行
        save
        
set the end of sList to tmpFile
      end tell
    end if
  end repeat
end tell

–複数のプロジェクトをオープンしている場合にはアクティブ(最前面)のプロジェクトを対象に
–すごい投げやりな処理……
tell application “Xcode”
  set curPrjDoc to active workspace document
  
  
–最前面のプロジェクトが、必ずしもAppleScriptObjC Explorer 2で編集中のScriptが所属するプロジェクトとは限らない
  
–編集中のScriptのファイルパスから上位フォルダに存在するXcode書類を探索して、プロジェクトを特定してもいいかも
  
–ただ、Xcodeのタコさ加減にめまいがして、真剣にXcodeをAppleScriptからつっつく気になれない……
  
  
tell curPrjDoc
    build –ビルド
  end tell
  
end tell

–GUI Scriptingから実行指定
activate application “Xcode”
tell application “System Events”
  tell process “Xcode”
    click menu item “Run” of menu 1 of menu bar item “Product” of menu bar 1
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2012/02/18 AppleScriptObjC Explorer 2 v2.2

AppleScriptObjCの世界をほぼ1人で引っ張っている感のある、Shane StanleyによるAppleScriptObjCに特化したスクリプトエディタが「AppleScriptObjC Explorer 2」です。

exp1.jpg

▲構文色分けがまったくできていないXcode 4(左)と構文色分けに対応しているAppleScriptObjC Explorer(右)

exp2.jpg
▲インデントも正確なAppleScript Explorer 2

まだ使い始めて日が浅いのですが、その特徴を紹介すると……

・Xcode 4ではまったく効かない「AppleScriptの構文に応じた色分け」ができる(これはでかい! というか、Xcode 4がダメすぎ)
・Xcode 4ではまったくダメな「インデント」が正確(Xcode 4、本当にダメすぎ)
・Xcode 4では絶望的な、ログ表示機能を備える
・単体で動作可能なAppleScriptObjCベースのアプリケーションを作成可能
・Xcode 4の外部エディタとして動作可能(XcodeでScriptのファイルを選択して、コンテクストメニューから「Open With External Editor」を実行。あらかじめFinder上で拡張子とアプリケーションの関連を変更しておく必要がある)

exp3.jpg

・定番の処理(Arrayを作るとか、ソートするとか)はメニューからScript本文中にInsert可能

exp4.jpg

exp5.jpg

・Script文中で入力補完機能を利用可能(ここだけ、まだ試していない)

といったところでしょうか。AppleScriptObjCが使えるMac OS X 10.6/10.7で動作します。

構文色分けができないとプログラミング効率が悪すぎるのと、インデントが正確でないXcode 4にシビレを切らしてAppleScriptObjC Explorerを購入(5,000円……為替レートの変動で変わる??)。

ただ、デバッグ機能についてはアプリケーション起動時に呼ばれる「applicationWillFinishLaunching_」イベントハンドラの中で実行されるコードしかデバッグできなさそうなので、デバッグ機能に期待して購入すると、期待外れになってしまうかもしれません。

総合的には……残念ながら、値段の割には……と、感じる点が多々あります。

AppleのCocoaについてのヘルプからAppleScriptObjC用のヘルプとして変換して表示するとか、既存のObjective-Cのコードをプロジェクトにインポートすると、その呼び出し用のAppleScriptObjCコードがScript本文中に展開されるとか……そういう機能を期待したいところです。

いまの段階では、ちょっと気の利いた構文色分けエディタ、というレベルです。それ以上でもそれ以下でもありません(Shane Stanleyへのお布施、という意味ではとても意義があるかもしれない)。

とりあえず30日間は試用ができるため、Xcode 4にブチ切れまくっている方は試してみるとよいでしょう。