|
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-
|
|
掲示板で聞かれたので、こちらで解説。 Core Data と Cocoa Bindings を使うと、コーディングなしで NSTableView や NSOutlineView にデータを表示できる。これは便利だ。だけど、実際にやってみると、保存してもう一回開いてみると、表示順序が変わっている。なんじゃそりゃ? 原因は、Core Data が NSArray ではなく、NSSet を使っているため。NSSet は順列情報を保存しない。じゃ、順列情報を持たせるには、どうすればいいのか? 結論から言うと、ジェネリックな解決方法は存在しない。モデルに合わせて、ケースバイケースで対策することになる。まず考えられるのが、順列のためのプロパティを追加する方法。別に考えられるのは、順列のためのエンティティを作成する方法。 この前の Cocoa 勉強会で、そのあたりのところを議論したので、参考にこちらのスライドをどうぞ。
ダウンロード:
これは、Core Data の FAQ になるよなぁ。 ちなみに、勉強会の席上で、なぜ NSSet を使っているのか、という話になったけど、おそらく SQL を使いたいがためだろう、という結論。XML と バイナリなら順列を保存できるのに、SQL だとできないんで、そっちに合わせたんだろう、と。 |
|
Cocoa 勉強会の話が出たので、ついでに宣伝を。もう書いちゃっても、いいんですよね?会長。 月に一度ぐらい集まって、Cocoa の初心者からディープな人までが、あーでもない、こーでもないと議論する Cocoa 勉強会。今週末にもやるけど、それで 15 回目となる、息の長い集まりだ。私も、最近になって参加させてもらっている。 そんな成果を形にしようと、このたび会誌を作成することになった。その名も「Cocoa Life」!勉強会で発表された題材を、まとめて詳しく丁寧に書いたものだ。どの書籍にも、どの Web ページにも載ってない、ここだけの情報が満載。発売日や購入方法に関しては、こちらのページを参照してください。私も書いてます。 そしてさらに、「会誌といったらコミケだろう」と、会長が思ったかどうかは定かではないけど、12 月末の「コミケ69」に参加決定!これも詳細はこちらのページを。「Cocoa 系プログラマサークル」といったくくりになるんでしょうか。そんなものは存在しないか。コミケに参加される予定の方は、ぜひお立寄を。 |
|
シイラ mini のページが新しくなった。シイラ本体のページからもリンクを貼っときました。 あと、こちらでは紹介してなかったけど、シイラ mini 1.1.1 もリリース。背景画像を変更できないことがあった問題点を修正。 |
|
シイラ mini 1.1 を公開! 先日公開したシイラ mini 1.0 にいろんなフィードバックをもらったので、それを反映させて 1.1 を作ってみた。さらに、本家シイラでもデザインをお願いしている nitram-nunca さんによって、デザインを一新。シイラらしさを残しながら、mini 独自の外観となった。
1.0 からの主な変更点は、以下の通り。
これで、ブラウザとして一通り使えるだけの機能はそろったと思う。これ以降発展していくとしたら、mini の機能を増やすのではなく、シイラの補助役としての立場を明確にする方向になるかな。 |
|
XML をいじることの多い、最近。 XML では、いくつかの文字、「<」とか「&」とか、を直接記述することができないので、実体参照を使う。NSString の文字列を、実体参照を使ったものに置き換えるものはないかなー、と探していたら、CFXML にあった。CFXMLCreateStringByEscapingEntities() と、CFXMLCreateStringByUnescapingEntities() を使えばよろし。 ただ、Google で検索すると、この関数の Panther の実装はバグがあるらしい。少なくとも、10.3.5 では。Tiger では直っているらしい。その辺は、Darwin のソースコードをダウンロードして、チェックしながら使うといいらしい。ソースが公開されてるって素敵。 |
|
正直、XML は使えば使うほど、仕様のぐずぐずさ加減に、怒りが込み上げてくる。XML 1.0 でやめておけばよかったのに。そこに namespace だの XSLT だの XPath だの付け加えて、みんなそれぞれ好き勝手な方向を向いているから、収集がつかない。なら、それらを使わなければいいって?その通りです。でも、便利そうだから、思わず使っちゃって、でもやっぱり使い物にならねーよ、うぉぉー、となるわけです。 |
|
Dashboard の話。 Dashboard では、くるっとひっくり返る環境設定パネルを実現するために、あらかじめ表面と裏面の両方を HTML に含めておく。そして、表面を表示するときは裏面を隠しておき、裏面のときは表面を隠す。 で。Apple のサンプルを見ると、利用していない面を隠すには、CSS の display 属性を操作している。block か none に指定する訳だ。これできちんと動くし、Programming Dashboard の本でもそう解説している。でも、実はこの方法だと、Web プラグインが含まれている場合、表示を切り替えるたびに初期化処理が走ってしまうようだ。そのせいなのか、どうも挙動がおかしくなる。 これを避けるには、visibility 属性を使うといいようだ。visible か hidden を設定して切り替える。環境設定を表示するときに、なんかおかしいな?と思ったら、試してみるといいかも。 |
|
ダイナミック Objective-C、「第 15 回 クラスとは何か(2) - クラス情報に直接アクセスする」出てる。Class 型を C 言語の構造体としてアクセスする、って話。 Objective-C の話なのに、やっていることはほとんど C 言語だ。もともと Objective-C は、C 言語にオブジェクト指向を付加した言語、というよりは、オブジェクト指向関連の C 言語関数を、Smalltalk ライクな書式で置き換えた、って感じだから、これでいいのだ。きっと。 |
|
Dashboard 環境で動作するシイラである、「シイラ mini」を公開。
より素早く、より手軽に Web ページにアクセスすることを目的に、徹底的な小型軽量化を推進。画像と文字の大きさを削ることで、従来の 3 分の 1 の面積比を実現!(当社比) ちなみに、さらに小型化を押し進めた「シイラ nano」も検討されたが、字が読めなくなるということで、断念。 そんな感じで、勢いで作ってみた。実用性あるかどうかは、はなはだ疑問だったけど、結構使えるんだよ、これ。ちょっとページを見たい時とか、ちらちら参照しながら作業したい時とかに、便利。必要なくなったら、さっ、といなくなるところがいいね。
ダウンロード:
|
|
最近、Dashboard づくことが多かったので、つい勢いで作ってみた。名付けて「シイラ mini」。
Dashboard のウィジェット上で動作する、シイラだ。小さい画面で小気味よく動く。出すときも隠すときも一瞬。画像も小さいけど、文字はある程度の大きさを確保。 構想 5 分、制作時間 1 時間で、動くものが出来上がった。近日公開予定。 |
|
Xcode 2.2 では、Deployment ビルドの実行中でも、クラッシュしたらデバッガと接続してくれる。デバッグシンボルがないのでソースコードのトレースはできないが、スタックトレースはできるので、どのメソッドでクラッシュしたのかは分かる。 この設定の有効/無効の切り替えは、[プロジェクト]→[アクティブな実行可能ファイルを編集]メニューから、デバッグパネルを選び、「クラッシュ時にデバッガを自動接続」チェックボックスを使う。 メモしておかないと、忘れそうだ。 |
|
Xcode 2.2 をインストールした。開発環境のアップデートは怖いので、仕事のすきまを狙って、えいっと。 メニューが再び日本語になっている。日本語は読みやすいけど、Xcode 2.0 ではリソースが抜けていたことがあったからなぁ。あまり信用せずに、様子をうかがいながら使ってみることにする。 ゼロリンクが、メニューから On/Off を切り替えられるようになっていた。一度理解するととても便利なゼロリンクだけど、導入直後は開発者を混乱の渦に突き落としていた。あえて、メニューに表示することで、存在を強調してみたか。 |
|
Dashboard 用ユーティリティプラグイン、「Jolla」を使ったウィジェットを公開してみる。「Promo」っていう名前の、アップルのトップページにある、宣伝用のバッジ画像を表示するウィジェットだ。
トップページには通常 4 つのバッジが表示されているけど、Promo ウィジェットはそのうちの 1 つをランダムに表示する。ウィジェットが表示されるたびに、新しい画像に切り替わる。画像をクリックすると、そのページに飛ぶ。 Jolla の機能のうち、HTML パースを利用したものだ。アップルのトップページからの画像のアドレスとリンクの取り出しは、getElementById() と getElementsByTagName() を使って行うことができている。
ダウンロード:
|
昨日、MOSA 主催によるウィジェット作成セミナーをやってきた。参加していただいた方、お疲れさまでした。長時間、四時間以上、にわたるセミナーだったので、大変だったと思います。しゃべる方も疲れた。のどがヒリヒリした。 セミナーは、主にウィジェットからネットワークにアクセスする方法について解説した。通常の JavaScript では足りない機能を、いかに補うかというのが主題になったかな。 そのセミナーで公開したのが、ウィジェットのためのユーティリティプラグイン「Jolla」だ。こちらは一般にも公開。Jolla は、ウィジェット作成のために便利な機能を集めたプラグインで、特にネットワーク関連の機能が充実。 現在の主な機能は、
ってところだ。特に HTML のパースは、ネットワーク上の Web ページの HTML をパースして、DOM ツリーの形でアクセスできる優れもの。これは便利だ。 というわけで、ネットワークを利用するウィジェットの作成に興味ある方は、ぜひ。 |
|
QuartzComposerWeb.plugin っていうプロジェクトが sourceforge で始まっている。Dashboard や Safari で、Quartz Composer のコンポジションを再生するためのプラグインを作っている。前に、HMDT でも作っていた、Quartz Composer Plug-In for Dashboard と同じものだ。というか、一部ソースコードを流用している、っていうことでメールが来た。 このプラグイン、作ってみたけど、現在ちょっと開発がペンディング中。どうも印象として、Apple の Dashboard の実装がまだ熟成していない印象を受けている。OS がアップデートするたびに、いろいろ変わってくるからね。そのうち大きいアップデートが来るかもしれない、と思って、様子見中。 最近噂になっている、Dashcode といっしょに、Dashboard の実装はいろいろ変わるのではないか、と予想。 |
|
来週の土曜日、Dashboard のセミナーを行います。現在、MOSA で「Dashboard ウィジェットコンテスト」というものをやっていて、それに合わせた開催です。今度行うのは、<中・上級編>ということで、すでに簡単な Dashboard の作成はマスターしている方向けです。 で、何をやるかといいますと、ネットワークからの情報の取得、にフォーカスを当てます。最近の人気のウィジェットには、地図を表示したり、気象情報を表示したり、歌詞を表示したり、テレビ番組を表示したり、といった便利なものがありますよね?って、何をさしているか、バレバレですが。そんな感じの、ネットワークから情報を取ってきて表示する、といったタイプのウィジェットを作る方法を解説します。 具体的には、
と、いったことを話します。予定です。他にも、AppleScript との連携や、便利なプラグインの紹介などもあります。 日時は 11/12(土)13:00 から 17:30 まで。長いよ!場所は、初台のアップルのセミナールームにて。そして、受講料は無料です!興味ある方は、こちらの「開催のお知らせ」を見てください。申し込み締め切りは 11/9(水)までだそうです。 |
|
MYCOM PCWEB で連載中の「ダイナミック Objective-C」だけど、13 回目は「Objective-C のエンジン部 - ランタイムに踏み込む」だ。 いままでは、Objective-C の仕様や機能をあれこれ紹介してきたけど、もうネタ切れだ。言語仕様、小さいからな。ここからは大きく方向を変えて、ランタイムライブラリの中身を紹介していく。ランタイムは C 言語で書かれているから、Objective-C からは直接取り扱うことができる。こうなると、もう、なんでもありの世界だ。 たとえば、ポージングに使われる poseAsClass: メソッドだけど、これはランタイムに対応する API がある。その API の中身をのぞけば、何をやっているか分かる。これは便利だ。さらに、そんな感じのコードを自分で書いて、しかも Objective-C の中で、実現することもできる。こうなるともう、ただの C 言語だよな。 ランタイムを取り上げる本当の狙いは、オブジェクト指向の実装の一例を十分に紹介すること。たとえば、オブジェクト指向を説明する時に、「生き物」オブジェクトがあって、「ほ乳類」オブジェクトがあって、「犬」オブジェクトがあって、云々と説明していくのもいいけど、依って立つものがないと話が眠くなるよな。 それよりも、「クラスとは何か?」と問われたら、「クラスとはこれです!」と、C 言語で書かれた Class 構造体を見せた方が分かりやすい。おれはこっちの方が好きだ。連載も、こんな感じで進めていきます。こうやっていくことで、「裸のオブジェクト指向」の姿を見せていきます。 |
|
シイラの方は、ビルド出しまくってます。こっちのページでは、10/26 に紹介したけど、その後、build050127、build051028、build051031、build051101、build051102 と出てます。 build050126 からの主な変更点を紹介すると、
という感じ。RSS の実装と、報告いただいたバグの修正や、細かい機能の改善をやってる。とても重かった RSS だけど、現在の最新のビルドでは、かなり軽くなっている。 やってもやってもキリがないので、そろそろ収斂をはからないといけない。 |
|
MYCOM PCWEB で、Tiger の Cocoa にみる MVC の完成 - スマートなデータモデルを実現する Core Data っていう記事を書いた。14 ページに渡る、超力作です。 Cocoa の MVC 構造を紹介する、ということで、Key Value Coding、Cocoa Bindings、Core Data、およびこれらの連携について解説している。特に Core Data については、これが一般に公開する記事では最初になるかな。 MVC の 3 つのレイヤが、どう協調してアプリケーションとして動作するかに焦点をあてて書いてみた。結論としては、この (13) MVC の協調動作のページにある図、ということになる。なんか、ビューとコントローラとモデルの間で、いったりきたりしているけど、これが Cocoa の MVC の、一つの「完成」された姿だと思うんだよね。 |
|
CodeWarrior 10 の販売が始まったらしい。最後の CW であろうと言われている CW 10。$99 でダウンロード販売。あと、ライセンスが限定されていてサポート無しの無料版がある。 注目される Intel 対応に関しては、「PowerPlant は Apple の Intel ベース OS にポーティング可能」とだけ書いてある。このリリースだけでは、Intel 対応がどのレベルまで行われているのか分かんない。ダウンロードして確かめるのが一番か。 あと、「Objective-C サポート」という文が含まれているのが、Cocoa 屋さんとしては気になる。どうも、エディタでコード補完やシンタックスカラーリングに対応した、というレベルらしい。コンパイラはなし。Xcode の外部エディタとして使え、ということか。 一応、新リリースという形にはなっているけど、これでおしまい、という感じがただよっている。長年、お疲れさまでした。いや、まだまだ使っていく人もたくさんいるに違いない。 |