Backnumber

June, 2006
May, 2006
April, 2006
March, 2006
February, 2006
January, 2006
December, 2005
November, 2005
October, 2005
September, 2005
August, 2005
July, 2005
June, 2005
May, 2005
April, 2005
March, 2005
Feburary, 2005
January, 2005
December, 2004
November, 2004
October, 2004
September, 2004
Augsut, 2004
July, 2004
June, 2004
May, 2004
April, 2004
March, 2004
February, 2004
January, 2004
December, 2003
November, 2003
October, 2003
September, 2003
August, 2003

- HMDT archive-
August, 2005

August 26

昨日の AppleScript の話。しばらく悩んでいたけど、

  • ファイルオブジェクトと文字列オブジェクトは違う
  • クラスのプロパティと同じ名前の変数は使わない

ということに気づいたら、急に動くようになった。いやー、AppleScript 楽しいね。ころっと。

もう 1 つ、NSView のコピーの話。copy メソッドが使えないので、手でやろうとしたけど、それはあまりに面倒くさい。

どうにかならんか、と考えていたら、Interface Builder は似たようなことやっているはずだよな、と思いつく。パレットからドラッグして追加するのは、NSView のコピーそのもの。ん?たしか nib ファイルでは NSView は NSCoder を使ってエンコードされているはずだから、そっちを経由すればいいのか。

ということで、次の関数で簡単にできた。

NSView* CopyView(NSView* view)
{
    NSData * data = [NSArchiver archivedDataWithRootObject:view];
    return [NSUnarchiver unarchiveObjectWithData:data];
}

悩んでた問題が解決すると、うれしい。

August 25

AppleScript で悶絶中。うぅ、AppleScript に対しては、どうも勘が働かない。

やりたいことは単純で、Cocoa プログラムから iTunes にファイルを追加したいだけなのだが、うまく動かないー。

こういうところは、iTunes も COM で提供される Windows がうらやましかったり。COM ベースだと、全部の言語のラッパーが自動的に作られるから。Mac でも、AppleScript の用語辞書をベースにして、Objective-C ラッパーを自動生成とかできないかなー。

ダイナミック Objective-C 第三回目「Cocoa実現の肝 - クラスとそのメソッドの調査方法をチェック」が出てます。今回は、クラスの調査と、respondsToSelector: を使ったメソッドの調査の話。

respondsToSelector: が出てきたことで、Objective-C の前振りは完了!次回からは実例として、Cocoa のターゲット・アクション・パラダイムの話に行く。

しかし、Objective-C も、それに影響を与えた Samlltalk も、古い技術だよな。だけど、いま周りを見渡しても、先進性は変わらない、というかそんなに発展してない。もともとソフトウェア業界って、3 年周期ぐらいで、同じ技術の焼き直しが、新しい名前を持って出てくるだけだからな。ただ環境が、CPU が速くなってたり、ネットワークが速くなってたりするだけ。

だから、プログラミングの楽しみってのはいろいろあるけど、個人的には GUI を実装してたり、使いやすいインタフェースの配置をあれこれ考える方が好き。そりゃ、効率のいいアルゴリズム考えたり、きれいなソースコードで酔いしれたり、オブジェクト指向でコンポーネントでアスペクトなアジャイルをリファクタしたらパフォーマンスが XP でしょ!っていうのも嫌いじゃないけど。でもやっぱり、デスクトップアプリケーションは、見た目と使いやすさだよな!

August 24

すっかり、週刊状態であります。

NSView のコピーをやろうとした。

あるアプリケーションで、同じコントロールをずらずらっと、並べたい。でも、コード中で手でコントロールを作るのは、面倒くさい。「じゃ、Interface Builder で作って、nib 読み込んで、インスタンスをコピーすればいいじゃん」と、思った。

だけど、NSView は NSCopying のメソッド実装してない。つまり、コピーできない。がーん。コピーは手でやるしかないのか?

でも、待てよ。NSMatrix とかは複製したものを並べているよな。NSMatrix の場合は、セルを指定するから・・・と思い立って NSCell を見たら、こっちは NSCopying のメソッド実装している。

つまり、NSView または NSControl のインスタンスを手で作ってやって、コピーした NSCell を setCell: で設定してやればいいのか?試してみよう。

August 17

相変わらず、忙しいのであります。

すっかり滞ってしまっているシイラの開発だけど、どうにか時間作ってやるから、待ってて下さい。シイラがいちばん楽しい仕事なんだがなー。

MYCOM PC WEB での Objective-C 連載、第二回目「Objective-C の動的型付け」出てます。今回は、型の話を、細かいところを詳しく。ねちっこく掘り下げていきます。

いま使っている、PowerBook G4 Titanium 初代機が半死亡。いきなり、液晶が iTunes のビジュアルエフェクトのようになって、操作不能に。持ち運べるマシンがないと仕事が滞るので、なんでいまなの、というこの時期に新しい PowerBook 12 inch を購入。

いいんです。新しいマシンの噂があろうが、インテルマシンが出ようが、必要なときが買い時なんだから、と敗戦の弁。

もひとつついでに、これも仕事がらみで、ほんといまさら PSP を購入。別に、白いやつなんて欲しくもないさ、と未練がましさ丸出し。

検証用のソフトも買わないといけなかったんで、ビックカメラの売り場でソフトを探すが、う〜〜ん、欲しいものが見つからーん。かなり迷ったのが、メタルギア・アシッド。しかし一本目がこれというのは、自分が不憫な気がして、結局リッジレーサーを。そんなもんです。

ついでに DS のソフトも見てみたけど、こっちも欲しいものないー。携帯ゲーム機はあわないらしい。ちなみに、いま家でやっているのは塊魂。そりゃ、あわんわ。

August 11

今度、MYCOM PC WEB で連載をすることになった。タイトルは、「ダイナミック Objective-C」。Objective-C や Cocoa が持つ特徴を、「動的」をキーワードとしていろいろ話していこう、っていうものだ。なんて、ターゲットが狭い連載なんだ!誰が読むんだ、いったい。

この連載は、チュートリアルや入門記事ではなくて、一気に深いところへ行くつもり。第一回目が class-dump だからな。この後は、動的型付け、クラスとメソッドの調査、ターゲット・アクション・パラダイム、カテゴリ、デリゲート、ポージング、Class 構造体、ランタイム API、Toll Free Bridge、NSInputManager、SIMBL プラグイン、Aspect Cocoa、などを紹介していく予定。Cocoa プログラミング入門とかでは全然なくて、オブジェクト指向を実現している仕組みそのものにフォーカスを当てていく。

メジャ−な媒体でこんなことやってもいいのかなぁ、と思いつつも、編集の方と「ゴーイング・マイウェイで行きましょう」と盛り上がったので、突き進む。極一部の方は、期待してください。

いまテストのために、わざとアプリケーションをクラッシュさせてレポートダイアログを表示させようとしている。「そんなのはいつも出しているから、楽勝だぜ!(ダメじゃん)」と思ってたけど、意外に難しい。落とすことはできるんだけど、「シグナルにより終了しました」と出るだけで、クラッシュレポートが出ない。

何か、簡単に、確実に出す方法はないかなー。

August 2

先日書いた、CodeWarrior の件だけど、Ars Technica とか、Macworld UK とかが、少しづつ取り上げている。ただ、どこもあんまりたいした情報は無くて(情報源は Apple の ML に流れたこれらしい)、これだったらこの間の blog の方がまだ情報量あるな。

とりあえず、確実に分かっていることは、統合開発環境としての CodeWarrior は、CW 10 が出ておしまいになること。Intel 用のコンパイラが出ない以上、商業開発ソフトとしては、将来はない。

となると、次の焦点となってくるのは、フレームワークである PowerPlant X の去就。PowerPlant X とインタフェースデザイナである Constructor は、オープンソースになるらしい。(もっとも、PowerPlnat X のソースコードって、確かにもともと見れたと思うけど、全部見れてたの?それとも一部公開されていないとこがあったの?)

オープンソース、っていうだけですべて解決する訳ではない。まず最初の問題はライセンス。まだ決まって無いみたいだけど、どうなんの?GPL?LGPL?それとも独自ライセンス?商業ソフトが多く使っている PowerPlant だけに、GPL だったら致命的でしょう。

あと、管理するコミュニティの問題。これから先、Intel 対応、Mac OS X 10.5 対応など、ソースコードの管理、更新を続けていく必要があるけど、誰がやるの?Metrowerks が音頭をとってコミュニティを作るのか?それとも、それぞれのユーザの手にゆだねられることになるのか?

Metrowerks から何の発表も無いから、分からんのです。

個人的な、Metrowerks の思い出。一番初めに触った、統合開発環境は、CodeWarrior だった。VisualStudio よりも Emacs よりも先だったね。あの時は学生で、高い通常版は買えず、アカデミックパックを買ったけど、それでも高かった。でも、「これを買えば、Mac を思い通りに動かせるんだ!」と、ものすごく興奮したのを覚えている。

ちなみにそのときのパッケージは、マッチョな兄ちゃん(アーノルド)が、でかいフロッピーを持って工場で作業しているものだし、ソフトのあちこちに黄色と黒の警告パターンが使われていたし、ひたすら硬派なものだった。開発ソフトに硬派って何よ。グッズの通販では、マッチョ・アーノルドのトランクスとか売ってたし。どこに行きたかったんだよ、Metrowerks。

とりあえず買ってきて、何か作ろうとした。当時は、フレームワークなんていう概念なんて知らなかったんで、何やらマニュアルに書いてあった、C でウィンドウを表示するプログラムを打ち込んでみた。プロジェクトを作って、ソースコードを打ち込んで、コンパイルして。ここまでたどり着くのに四苦八苦。何度かトライして、コンパイル通った!実行した!画面にウィンドウが出た!これで大興奮。しかし、ウィンドウリサイズできない。ドラッグできない。メニューも出ない。(Toolbox 環境では、この辺は全部自分でコーディングする必要があった。)ということは、終了も出来ない。再起動するしかないの?ガーン。

ということで、「Mac を思い通りに動かすまでの道のりは、遠い」と、うちひしがれたのでした。それでも、あきらめ悪くこつこついじってたけど、Mac OS X の登場とともに、すぱっと Project Builder に移ってしまいました。そんな CodeWarrior がなくなるとは、世の中は動いていくなぁ。


[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer Center] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解] [Mac OS X Programming Books Review] [オブジェクト指向の言語比較論] [panther-dev]

mailto: mkino@xd5.so-net.ne.jp