|
HMDT - Back Number / December, 2001 |
December, 2001
先日書いた、iTunes の AppleScript 集をちょっと使ってみた。一番の目玉は、AppleWorks と連動して、ジャケットを作る、ってやつかな。他にも、かゆいところに手が届くやつや、重箱の隅をつっついているようなやつ(うん?)がある。 インストールの仕方と、一通りの機能をまとめてみた。Studio AS の一環としてね。ひとつ、注意しておきたいのは、そのままでは日本語版の iTuens では動かないものがけっこうある。スクリプト内の、"Library" を“ライブラリ”にしたり、"Manual" を“マニュアル”にしたりしないといけないんだ。このへんを、きちんと吸収する仕組みを作ってほしいぞ>Apple。
もはや、旧聞に属するんですけど、Apple から iTunes の AppleScript 集が出てるよ。iTunes が AppleScript 対応になったのを言祝ぐためのもの、とリリースノートには書いてある。まるで、AppleScript Studio のリリースに合わせたかのようだな(違うと思う)。 Apple: iTunes Scripts for iTunes 2.0
AppleScript Studio Trial、"Studio AS" の続きだよ。前回は iTunes Label Maker を作るぜっ!てとこまでいった。今回は、プロジェクトを作って、GUI をデザインするとこだよ。ここまでは、オール GUI での操作なんで、あんまりプログラミングっていう感じがしないはずだ。 Trial tutorial: iTunes Label Maker
「系統的でなく」て、「興味のおもむくまま」で、「それなり」な、HMDT が、性懲りもなく、また新しいことに手を出すぞ。今回のターゲットは AppleScript Studio。そう、"December 2001 Mac OS X Development Tools" で追加された、あれです。これで、Project Builder は、C、C++、Objective-C、Java に加えて AppleScript もサポートに入った、ってわけだ。 さて、まずはとるものもとりあえず、AppleScript アプリケーションを作ってみた。いじってみたのは "iTunes"。iTunes のプレイリストから、曲名を取り出して、レベルを作る、"iTuens Label Maker" だ。これを作る過程を、チュートリアルになるように、step by step でまとめてみたんだ。 まずは、導入からどうぞ。 Trial tutorial: iTunes Label Maker
オライリージャパンから、今度「入門 Carbon」が出るんだそうな。これは、あれだ、"Learning Carbon" の日本語訳だ。英語版の内容は、いままでの Mac OS でプログラムを書いていた人を対象に、Carbon への移行をサンプルのチュートリアルをたどりながら、解説していく内容だったよな。ちなみに、もう一冊ある "Learning Cocoa" の方は、来春に日本語版が発売される予定なんだって(たぶん「入門 Cocoa」かな?)。
Apple が ADC で "December 2001 Mac OS X Developer Tools" の配付を開始しているよ(要登録)。新しい開発環境ね。さっそくダウンロードだ。でかい。210 MB を超えるぐらい。 で、細かい話はまたあとでするけど、今回の目玉は "Apple Script Studio" だ。Mac OS X native の Apple Script application が作れる、っていう触れ込みだ。これは、あの FaceSpan のようなものか? ざっとリリースノートを読んでみると、どうやらこれは独立したアプリケーションではなくて、ProjectBuilder と InterfaceBuilder を使って、UI 付きの Apple Script を作れる環境のことを、さすらしい。なるほど。たしかに、InterfaceBuilder のパワフルさを使って、Apple Script application を作れるのは、すでに PB と IB に慣れている人には、魅力だ。でも、それらに触ったことがない人が、一からやるにはちょっと敷き居が高いんじゃないかなー。とりあえず、チュートリアルをやってみるか。 あと、ドキュメントも増えたみたい。いままで、必殺の "Description forth coming" だったものが、いくつか埋められている。Cocoa Developer Documentation も、ようやく揃ってきた。ほんと、ようやっと、っていう感じだよね。
ついにたどりつきました最終回、Objective-C 最適化シリーズ「Foundation クラスの最適化」の後編だ。 あの手、この手を使って、NSArray と NSString を最適化しまくります。10 倍速くなるのには驚き。しかし、ここまでやったら、C でやった方がいいんじゃないか?徹底的にこれらのクラスを分解しているので、速くしたい時だけじゃなくて、クラスの中身を理解するのにも役に立ちます。 これにて、Objective-C 最適化シリーズはおしまし。あー、つかれた。
まだまだ続くよ、Objective-C 最適化シリーズ。「Foundation クラスの最適化」前編だぜ!いよいよ実践編。実際に最適化しまくるのだ。 速さこそ命!しかし、そんなことをいうんだったら、C を使った方がいいに決まってる。だけど Objective-C の便利さをあきらめるわけにはいかない。そんなわけで、Objective-C の有用性を保ちながら、どこまで速くできるか?って話です。C のパフォーマンスを取り入れながら、最適化を行っている。この辺は Hybrid 言語の Objective-C の強みですな。Java でやろうとすると、bridge 作ってめんどくさい。
Objective-C 最適化シリーズ「メソッドと関数呼び出しの内部」の最後、後編だっ!今度のメインは IMP の話だ。メッセージパッシングを使わないで、直接セレクタを呼び出してやるぜっ、という話だ。 これで、メソッドのお話はおしまい。う〜ん、あいまいだったとこがよく理解できた。訳をする目的の第一は、さっと読むより、一文一文を吟味して、よく理解することだからな。大学でやる輪講とかといっしょだな。いや、独りなんだけどさ。 だったら公開する必要ないじゃん、って意見もあるけど、公開しておくと、だれかが間違いを指摘してくれるかもしれないからね。
昨日に引き続いて、Objective-C 最適化シリーズ「メソッドと関数呼び出しの内部」の中編だぜっ!今回は、Objective-C でメソッド呼び出しをするときの、オーバーヘッドはどのくらいなんだ?っていう話だ。 一般に Objective-C でのメソッド呼び出しは遅い、って言われてるけど、どのぐらい遅いのか?それが一目瞭然で分かるぜっ!と、いうか、見せてるだけなんだけど。う〜ん、こりゃ遅いわ。スピードだけ考えたら、C++ の方がいいに決まってるわ。
お待たせしました!Objective-C 最適化シリーズの訳、第三回目の「メソッドと関数呼び出しの内部」です。原文は、こちらの "Method and fnction call innards" になります。 この回は、オブジェクトにメッセージを送った後は、いったい何をやっているんじゃ?っていうことを、アセンブラレベルで解説してます。今回は、C 関数の呼び出しと、共有ライブラリの呼び出しまで。アセンブラレベルで、オーバーヘッドを理解しています。
先日、「メモリ確保の基本と Foundation」のところで、「object と class object は、何を指しているんだ?」と、書いたところ、多数の方々から突っ込みをいただきました。ありがとうございます。こんなに突っ込まれるとは思っていなかったので、うれしさと恥ずかしさできりきり舞いです。 では、解決編。「object と class object とは何?」という疑問に答えるには、まず、Smalltalk や Objective-C では、クラスもオブジェクトとして扱われている、ということを理解しないといけないんだ。荻原先生の 「Mac OS X プログラミング入門: Objective-C」から抜粋を示してくれた方がいたんですけど、
ということだそうだ。だから、もとの記事を読むときは、
と、理解すればいいんだよね。 では、次の疑問。「両方ともオブジェクトっていってるけど、object と class object は、同じものなの?違うものなの?そもそも、そいつら何よ?」 この疑問に答えるには、コードを見るのがてっとり早い。まず、/usr/include/objc/objc.h を見てみよう。ここに、id 型の定義がある。id 型は anonymous な NSObject として使える型だよね。
このように、id 型は先頭に Class 型の isa を取る構造体 objc_object のことなんだ。じゃ、Class 型は?Class 型とは、[NSObject class] で取得できる、クラスオブジェクトの型のことだ。
Class 型は、構造体 objc_class なんだ。次は当然、objc_class とは何?/usr/include/objc/objc-class.h を見ると、
と、定義されている。ということは、さっきの object と class object は、
と、実装されているんだ。これが「クラスオブジェクトは、特別なオブジェクトなんだ」「NSObject とクラスオブジェクトは違うんだ!」と、いう文の意味だと思うんだけど。「NSObject は isa しか持たないけど、クラスオブジェクトは isa と superclass を持つ」、っていう文とも辻褄が合うよね。どうでしょう、有識者の方々? メールでお教えいただいたみなさん、どうもありがとうございました。
|
|
Home | Link | Download | Back Number | Speciall Issue
|