AppleScriptObjC を Cocoa/Objective-C アプリに統合する

Snow Leopard 登場後、いきなり超応用編からスタートしたこの AppleScriptObjC シリ ーズ(?)ですが、今回でひと区切りとさせていただきたいと思います。

もっと基礎的な部分に関しては、本家が出す、と言っているサンプルコードやドキュメントにお任せたいところですが、あまり期待できないので、精力的にサンプルコードをアップしている MacScripter / unScripted などをご参照ください。あるいは、何かリクエストをください。

最後は、Cocoa/Objective-C アプリで AppleScriptObjC を使えるようにする というお話。プロジェクト設定レベルのことなので、技術的な意義はあまりありませんが、よろしければご覧ください。

“AppleScriptObjC を Cocoa/Objective-C アプリに統合する” の続きを読む

クラスメソッドかインスタンスメソッドか

AppleScriptObjC に関しては、風のウワサで「何でもできるよ!」と聞いてはいたのですが、Cocoa/Objective-C と AppleScript の両方やっている身からすると、触っていくうちにそこかしこで「え? Cocoa のあれどうやってやるの?」という場面に遭遇します。

ふと思ったのが、AppleScript のクラスでどうやってクラスメソッドを定義するのか ということです。ひとまずの結論としては、クラスメソッドとして呼びたければそのように、インスタンスメソッドとして呼びたければそのように呼べばいい ようです。

サンプルコード

ClassMethodOrInstanceMethodScreenSnapz001

“クラスメソッドかインスタンスメソッドか” の続きを読む

Xcode 3.2 でテキストマクロを入力できなくなったら

Xcode では、「編集」→「テキストマクロを挿入」メニューから、あるいは、定義された短縮キーワードを入力した後オートコンプリートさせることによって、テキストマクロを入力することができます。例えば「init」なら init メソッドの定義、とか:

XcodeScreenSnapz012

テキストマクロの内容は、/Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources/ 以下の *.xctextmacroファイルで定義されており、私はこれを改造して使っていました。

どマイナーな機能だと思うので、ここまでで「それ何の話?」 という方もいらっしゃるかもしれませんが、その説明はまたの機会として(おい)、Xcode 3.2 にしてから前述の短縮キーワードによる入力ができなくなり、とてもしんどいので調べてみました。

“Xcode 3.2 でテキストマクロを入力できなくなったら” の続きを読む

AppleScript で書いたクラスを ObjC から使う

XcodeScreenSnapz011

Snow Leopard では、AppleScript Studio の後を継いで AppleScriptObjC.framework が導入され、Cocoa の大半の機能を AppleScript から利用できるようになりました。

例えば、AppleScript から Cocoa/Objective-C のクラスを利用したり、AppleScript でそれらのクラスのサブクラスを作成できるようになりました(言い換えれば、作成しなければならなくなった …笑)。

少し残念なのは、前述の通り 「AppleScript から Cocoa の機能を利用する」ことに重点が置かれており、Cocoa/Objective-C の世界から AppleScript を利用する ことには(まだそんなに調べていませんが)重点が置かれていないようです。

ただ、AppleScript で書いたクラスも、アプリケーションの動作中には Objective-C のクラスとして存在するわけで、それにアクセスするのは、(ヒネた内部構造になっていなければ)さほど難しくないはず…。

というわけで作成したのが、今回のサンプルコードです。

サンプルコード

Interface Builder で

テーブルビューなどの UI アイテム上で Control + Shift + クリックすると…

“trick i learnt at WWDC: ctrl + shift + click on an element in an NIB. Try it. You’ll love it…”carpeaqua

“trick i learnt at WWDC: ctrl + shift + click on an element in an NIB. Try it. You’ll love it (recent IBs only).”

Jonathan Wight

どのバージョンから対応しているのか分からないので、詳しいことは書きませんが、これは知りませんでした。便利!

Objective-J/Cappuccino

Keynote.app にそっくりなインターフェースを持つウェブアプリ 280 Slides は昨日、「ふーん、すごいねえ。リアル(?)だねえ!」くらいのノリで触っていたのですが、その内部はもっとすごいことになっていた、と。

これを読んで始めは褒め言葉のつもりで、世の中にはアホな人がいるもんだなあ と思っていたのですが、冷静に見てみると、微妙になってきたかも… すごいのは確かだし、どんなふうになっているのかぜひ見てみたいですが…

“Objective-J/Cappuccino” の続きを読む

まつりレポート2:The Cocoa XML-RPC Framework 1.5 リリース

ちょっと前のことですが、Kaku が採用している The Cocoa XML-RPC Framework の新バージョン、バージョン 1.5 が リリース されました。

Kaku で使っているものは、僕が細々と不具合を修正してきたものなのですが、これも今年の始め、ブログもなく、ほとんど更新されていない開発者の方のウェブサイトをたまたま訪れたところ、ちょうど「新バージョンに向けてご意見・ご要望を募集中云々」といったことが書かれていたので、僕が修正したコードを送ってみたところ、それが一部採用されることになった、という次第です。

僕が参加した証として分かりやすいのは、-[XMLRPCDecoder trueDecodeObject:]という、ちょっとアレなメソッドでしょうか(ちょっとダーティーなんですが、確かこうしないと、関連するコードを大幅に書き換えないといけなくなるので逃げてます。てか結構そのまま採用されてる…笑)。

…というわけで、もし興味のある方は、試してみてください。僕も実はまだ試してない(おい)のですが、遠くないうちに Kaku に搭載してテストすることになると思います。

Notes:iPhone SDK をインストールしようとしている AppleScript Studio ユーザーの方へ

iPhone の登場は、モバイルコンピューティングの世界に大きな衝撃をもたらしました。

そして、その登場から一年。ネイティブアプリの開発を可能にする iPhone SDK の投入によって、新たな革命が起ころうとしています。

世界中の優秀な開発者たちは、いま最も注目されている携帯デバイス上で、自分の実力を試すことができる時を、今か今かと待ち構えているところでしょう。

その iPhone と並び称される Apple のプロダクトに、AppleScript Studio があ…… るわけは全くありませんが、久しぶりに AppleScript Studio のお話を。

iPhone SDK をインストールする前(Xcode のバージョン=3.0)に:

  • /Developer/Library/Xcode/Plug-ins/ASK*.pbplugin をバックアップ しておきましょう。(※ 実際は ASKPlugin.pbplugin だけでいいのですが、念のため)

理由は言えません。

RegexKitLite

Cocoa 正規表現ライブラリといえば、国産、かつ(たぶん)世界で最も利用されている OgreKit があるので、他には目が行きにくいかもしれませんが、恐らく最後発と思われる、「 RegexKit 」というフレームワークが出てきています。

国内・海外問わず、多くのアプリに採用されている、OgreKit の貫禄には負けますが、RegexKit の気合いも、なかなかのものです。まだご存じない方は、一度チェックしてみてください:

  • ライセンス — BSD
  • 正規表現エンジン — PCRE
  • 特徴
    • 64bit 対応
    • GC 対応
    • スレッドセーフ
    • キャッシュ、低レベル API などを駆使して高速、低負荷に
    • RSS フィードで更新される、Xcode 3 対応の完全なドキュメント(これが OgreKit への大きなアドバンテージかもしれない)
    • Instruments.app 用の Instruments

この RegexKit の子分(?)として、さらに最近リリースされたのが、RegexKitLite です。

“RegexKitLite” の続きを読む

3D ブラウザ Pogo と Leopard 時代の Mac アプリ

AT&T、独自の3Dブラウザ(Pogo)を作成中。その意図は?TechCrunch Japanese

ブラウザ戦争に参戦するなんて、すごく勇気あるか、あるいはすごくバカな企業かのどちらかだ。でも、規模は小さいものの、それが今まさにAT&Tがやっていることなのだ。デモを見せてもらっただけだけれど、今はプライベートベータ版(2週間ほどで招待状がもらえるはず)のPogoはMozillaを基にした3Dブラウザだ。PogoはAT&Tの事業開発グループのプロジェクトで、トロントを本拠地とする企業、Vizibleの3Dレンダリングエンジンを使っているため、他のブラウザとは見た目がとても違っている。

「3D ブラウザ」と聞いて、一瞬、バーチャル世界のキャラクターを動かして、道中にアイテムっぽく落ちているウェブサイトにアクセスする というイメージが浮かんだ(=3D に対するイメージが古い)のですが、まったく違うようです。

“3D ブラウザ Pogo と Leopard 時代の Mac アプリ” の続きを読む