|
Backnumber 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-
|
|
コントローラレイヤのドキュメントの翻訳で、昨日の続き。Example: Enhanced Currency Converter With Bindings が完成。例:通貨両替計算機の拡張をどうぞ。 とりあえず、あと 1 つ訳したら、ドキュメントの翻訳は終了の予定。 |
|
コントローラレイヤの翻訳、例の第二弾。今回は、配列コントローラを使ったテーブルの例だ。Example: Enhanced Currency Converter With Bindings を途中まで翻訳した、例:通貨両替計算機の拡張だ。まだ半分ぐらいしかしていないので、続きは次回に。 これも、紹介されている例を実際に書いてみた。興味ある人は、下からダウンロードしてみて。
ダウンロード:
ほとんどコードをかかずに、これだけテーブルの操作ができてしまうのは、前の状況と比べると、ほんと感激的っていえる。でもなぁ、例として使うにはいいんだけど、本番のアプリケーションで使うとなると、まだちょっと不安があるような気がするんだよなぁ。こっから先は、実際にアプリケーションを書いてみないと分からんな。 |
|
ちょっと古いようだけど、面白かったのでリンクを。Unsanity.org で、Panther の Mach-O ABI の議論がされているようで。goyou's blog さんのコメントも参照のこと。 |
|
コントローラレイヤの練習。画像情報を表示するアプリケーションを作ってみた。
作る順序は、以下の通り。
以上。書かなくてはいけないコードは、モデルのアクセッサメソッドだけ。たしかに簡単。興味がある人は、ソースコードを見てください。
ダウンロード:
|
|
やるときは、一気にやるぜ!の、コントローラレイヤの翻訳。やっと、例までたどりついた。Example: Currency Converter With Bindings を翻訳した、例:バインディングを使った通貨両替計算機だ。 実際に例を書いてみると、たしかにコードを書く量が劇的に少なくなっていることが分かる。すげぇ。これは、ちょっと感激もの。単機能のアプリケーションを書くなら、ほんとあっという間だ。いままでの Cocoa プログラミングの定石が、置き換わっていく。この記事で紹介されている例を実装したものも置いておくので、よかったら参考にしてみて。
ダウンロード:
|
|
ここまで読んでみた情報をもとに、コントローラレイヤを使った、Cocoa アプリケーションのデザイン手法を考えてみよう。まず、簡単なアプリケーション、GUI ウィンドウを 1 枚ぐらい持って、どっちかっていうと、素早く完成させることを目的とする場合。いままでは、NSObject を継承してコントローラとなるクラスを作ることが多かったと思う。で、このクラスがモデルの役割も兼ねて、いわばモデル・コントローラ、っていう感じで作ってたよな。 コントローラレイヤを使う場合は、まずモデルクラスを作ることになる。このモデルに、必要なインスタンス変数やアクセッサメソッドを持たせて、NSObjectController を使ってビューとバインディングしてやればいい。モデルとコントローラが、きっちり分かれるわけだ。 |
|
じゃあ、ビューとのバインディング以上のことをやりたい場合は?たとえば、「Open」ボタンを押されたときに、オープンダイアログを開いて、ファイルを選択して、読み込んで、モデルに設定する、といった感じの一連の動作は誰が担当するべきだろう。 やっぱり、コントローラだよな。だから、ちょっとこったことをやりたいときは、NSObjectController、または NSArrayController のサブクラスを作って、アクションメソッドを実装する、っていう感じかな。そのときも、モデルとの分離は気をつけておかないと。 |
|
またまた掲示板で教えてもらいましたが、Xcode に対応した WebObjects 5.2.2 がリリースされたそうです。WebObjects 5 は、ADC でログインをしてからダウンロード可能(要登録)。その後ソフトウェアアップデートで Xcode 対応になるそうです。試してみるべく、ただいまダウンロード中。 つーか、WebObjects って ADC でダウンロード可能だったんだ(制限ありだけど)。知らなかったよ。 |
|
ついでにチェックしたら、ADC で Xcode Tools v1.0 がダウンロード可能になっていたよ。無料配布は続くようだ。ただし、Mac OS X 10.3 が必要。 |
|
コントローラレイヤのドキュメント、さらにさらに Core Classes and Protocols を翻訳した、中心となるクラスとプロトコルを追加。だいぶ、理解してきた! |
|
コントローラレイヤの話。とりあえず、翻訳文追加。今回は Support for the MVC Paradigm を訳した、MVC パラダイムのサポート。 ここでいっていることを簡単にまとめると、コントローラはモデルとビューの間に位置するということ。そして、各レイヤのコミュニケーションには、キー・バリュー・コーディング、キー・バリュー・オブザービング、キー・バリュー・バインディングを使うということ、だそうな。 |
|
さらに Object Modeling を訳した、オブジェクトモデリングを追加。 掲示板の方で、コントローラレイヤは WebObjects の EOControl と似ている、という突っ込みを受けました。しましまさん、サンクス。そうなのか。わたしは WebObjects は知らないんですけども。そういうわけなのか、コントローラレイヤで使われている用語は、データベース分野に由来するものが多いみたい。今回訳したところはその手の用語がいろいろ出てくるんですけど、データベースの分野は疎いので、あてた日本語が適切じゃないかもしれないです。そういうのがあったら、よろしければ指摘してください。 |
|
Panther での Cocoa の新機能で、注目しているコントローラレイヤの導入。まずはドキュメントを読まないといけないねぇ、というわけで久しぶりに翻訳をしてみた。Apple の Controller Design Guidlines の中から、いくつかを翻訳してみることにした。まずは、Why Use the Controller Layer? を訳した、なぜオブジェクトコントローラを使うのか?を。 |
|
ついでなんで、コントローラレイヤの特徴とキーワードをざっと並べてみると、
といったところ。肝は、アクセスをすべてキー・ベースにしてしまったところのようだ。うーん、まだ他の人に説明できるほど理解できていないなぁ。 |
|
site-aro さんでも、Cococa はやっぱり!で Panther での Cocoa の新機能を紹介しています。 |
|
ついにきました Panther!長かったねぇー。見た目の派手さもさることながら、中身の充実っぷりも見逃せない。いやぁー、楽しい。ほんと楽しい。個人的には、新しいハードウェアが出るよりも、ずっと刺激的なことだ。 |
|
そんな Panther の注目ポイントは!あ、先に言っておくけど偏っているからね。Expose とか期待しないように。 まずはもちろん、Xcode だ!Apple が提供する開発環境だけど、Project Builder から生まれ変わったぜ!初めて触ったときの第一印象は、「これ Project Builder から何が変わったの?」「なーんか使いにくいな。UI ひどくなったんじゃないか?」といったもの。しょうがないからチュートリアルを読んでみたら、「、、、そういうことか!こ、これは面白い!」 一言でいうと、Xcode の UI は iTunes です(きっぱり)。Project Builder の発想でいくと、はまるね。iTunes のスマートプレイリストの考え方を、ファイルの探索、エラーの表示、シンボルの表示などに適応したものって言えると思う。じゃ、これは使いやすいかと問われたら?この考え方を受け入れて、どっぷり浸かればとても使いやすい。逆になじめないと、いつまでたっても使いづらい、っていう極端な UI になっている気がする。 |
|
続いての注目点!それは、Cocoa の新機能だ。今回の Cocoa の変更点は多いよ。新機能もどんどん追加されて、UI もブラッシュアップされている。新機能の中でいちばんのポイントは、もちろんコントローラレイヤの導入でしょう!モデルとビューに加えて、ついにコントローラが追加されたんだ。これは、いままでの Cocoa プログラミングスタイルを、がらりと変える可能性を持っている。でも、すげー複雑。ちょっと美しくないかも。 そんな Cocoa の新機能は、まずは Foundation のリリースノートと Application Kit のリリースノートを見ましょう。あと、dentom さんの掲示板で、簡単に紹介されています。 |
|
Safari も 1.1 にアップデート!日本語問題は解決されたのか?ざっと使っている限りは、問題ないようだが、、、 Surfin' Safari に WebCore の変更点が書かれているので、要約してみよう。
てなところ。 あと、ソースコードも公開されている。WebCore は v106、JavaScriptCore は v96 だ。あとでチェックしておかないと。 |
|
さぁて、ようやく Panther の発売日がやってきたよ!OS の基本的な機能のブラッシュアップもさることながら、デベロッパとしては Xcode なんていう爆弾が来るわけで。10.3 からまた開発の環境ががらりと変わって、わくわくする人もいれば、「Apple てめー、変更ばっかりしやがって、このやろー!」という人もいることでしょう。うちは、どっちだ。両方か。 そんな Panther の開発情報は、、、なかなか Web で公開されないねぇ。せめて 20:00 に合わせて更新されたら、うれしいんだけど。 |
|
Apple のワイアレスマウス、買っちゃったよ!箱から取り出して、電池を入れて持ってみたときの第一印象は、「重い」。いままでは、Apple の最近の USB マウスを使っていたんだけど、それに比べると重い。でも、それはさておき使ってみた。5 分後の感想は、「とんでもなく快適!」。重さはまったく気にならない。それよりなにより、ケーブルがないということが、こんなに快適だとは知らんかった。もう戻れない。 だけど、なんかスリープから復帰するとき、マウスの認識にやたらと時間がかかるんだけど。30 秒ぐらいたたないと使えない。なんで? |
|
この間少しした、iTunes の話だけど。Windows で Rendezvous が実装されているなら、他のアプリケーションからも使えないかなー、とか、なにかいたずらできないかなー、と思ってインストールされたファイルとバイナリをいじくってみたけど、ほとんどが静的にリンクされて 1 つの実行ファイルになっているので、何もできん。デベロッパ的に面白そうな情報も、ほとんど取れない。うーむ、つまらん。 |
|
iTunes for Windows がリリースされた!見た目も使い勝手も Mac 版そのまんま。Aqua インタフェースが再現されている! 気になることはたくさんあるのだけど、とりあえずまず 1 つ。会社で起動してみたんだけど、あれっ、と気づいてみたら、共有できてる。もしかして、と思って Mac 側で見たら、Mac からも共有できている。つまりこれは、Windows で、Mac と互換性のある Rendezvous が実装されているくさい。おぉー。 他にもいろいろとチェックしてみるよ。 |
|
前々から何度かいわれていたので、記事ごとにリンクを貼れるようにしてみた。左端にあるバレットにリンクをつけたので、そいつを使って下さい。リンクはトップページではなくて、アーカイブの方のファイルになるよ。 記事へのリンクを表すのにバレットを使ったけど、知らない人には分かりにくいよなぁ。初めて記事ごとへのリンクを見たときは、「なんで、自分のページにリンクを貼っているんだ?ばかじゃねーの?」っていう感じで、ぜんぜん使い方が分からなかった。これって、リンクを仕込んである文字なりアイコンなりが、その機能を意味しているものだったら分かりやすいのに。なんかないのかね。 |
|
掲示板の方でお知らせをいただいので、こちらでも紹介。園部さん、ありがとうございます。 no physics, no life さんが、Cocoa 用の正規表現フレームワーク OgreKit を公開しています。Ruby でも使われている正規表現ライブラリである鬼車を Cocoa で使えるようにしたものだそうで。また、これを利用したアプリケーションとして、Find パネルを実現するための Application Kit のクラスも提供されています。 紹介のページでは、簡単な使用例も提示されているし。正規表現ライブラリは需要も高いだろうし、なかなかいいんじゃないですか。ちょっと、使い込んでみることにしようっと。 |
|
Safari Developer News を再編!新しく、Safari Developer Center として生まれ変わりました。とはいっても、内容はほとんど変わってないっす。はじめはニュースサイトのように、毎日更新するつもりだったんだけど、Safari の開発情報なんてそんなにないので、「News」っていう語を外しました。 WebCoreHMDTv85.5 の情報は、WebCoreHMDT にまとめておいたよ。 |
|
いつのまにやら WebCore v85.5 のソースコードが公開されていたよ!ぜんぜん気付かなかった。教えていただいた山本さん、ありがとうございました。 とり急ぎ変更箇所をチェックしたけど、レンダリングの一部が少しだけ変更しているだけ。日本語関連は、予想どおり、ぜんぜん変更されていなかった。というわけで、WebCoreHMDTv85.5 をリリースするぜ。これは、新井隆浩さんの Safari の文字化けパッチを当てたものだ。Safari v85.5 用で、日本語の文章が途中で一部化ける現象を改善するよ。 インストール方法は、以下の通り。くれぐれも、自己責任でお願いするよ。この説明を読んで、やり方がよく分からない方には、お勧めしません。
新井さんのパッチをただ当てたものをここで公開するのも気が引けるけど、乗りかかった船なので続けるよ。Panther でこのパッチが必要なくなることを、期待しよう。v85.5 の修正点の細かい突っ込みは、この後で。 |
|
オブジェクト指向の言語比較論、きょうは Chain of Responsibility の具体的な例ということで、Cocoa の NSResponder と responder chain の実装を詳しく説明してみた。 別に Cocoa を特に持ち上げたいわけじゃないんだけど、今回の議論のいい例になると思って。メッセージ送信の機構をうまく使っていることがわかると思うんだけど。Chain of Responsibility の実装の話をしているときに、なんで動的なリクエストの追加にこだわっていたかが、分かるといいんだけど。実際に GUI アプリケーションを組んだことがある人なら、この利点は分かると思う。逆に、最近の Java とかが、この辺りどうなってるのかが気になるなぁ。 |
|
オブジェクト指向の言語比較論の、Chain of Responcibility に、今度はDylan の実装とAppleScript の実装を追加。Dylan は 2 さんに、AppleScript はかりやんさんにいただきました。ありがとうございました。 えーっと、そろそろ次のお題をやらないと。次は、Command と Memento あたりに目を付けている。NSUndoManager の話も絡めたいな。 |
|
オブジェクト指向の言語比較論の、Chain of Responcibility に C の実装を追加したっす。C のソースコードは qshinya さんにいただきました。ありがとうございました。あと、AppleScript でのメッセージ送信についても、ちょっぴり変更。 |