home link download back number special issue

HMDT - Back Number / October, 2001


October, 2001


October 31 - いまさらなんすけど、、、
keywords: Learning Cocoa

きょう、いまさらながら気付いたこと。

Project Builder のファイル表示から Objective-C の .h ファイルを選んで、Interface Builder で開いた .nib のウィンドウにドラッグ&ドロップすると、そのクラスが追加されるんだ。

げーん、いままで知らなかったよ。やっぱ、本はきちんと読まないとだめだ。情報元は、Learning Cocoa でした。

October 28 - Cocoa 1001、first responder の話
keywords: Cocoa, first responder

Cocoa 1001 っす。今回は first responder を取り上げてみたぜ。

いままで、けっこう曖昧に first responder を理解してたけど、これで少しは理解がすすんだかも。

October 27 - Claris は、もういない
keywords: Apple Works

こんばんは。mkino です。あぁ、いま、ちょっと酔っぱらってます。ほら、土曜日だからお酒飲まないといけないなぁー、と思って。たまたま買ってきたワインが安くてうまい。するする入っていきます。$12 でした。

あ、で、質問なんですけど。誰に向かって質問しているのか分かんないんですけど。Apple Works を使ってみようと思ったんですよ。買ってきただけで、ぜんぜん使っていない Apple Works ですよ。別にね、嫌いなわけじゃないんですよ。Claris Works は、もう、がしがし使ってましたし。もぅ、Claris 大好きですよ。学生の頃、Claris を使って卒論を書いてたんですよ。周りは TeX だぁー、Word だぁーっていってましが。でも、Claris って、なんか、20 ページより先は、システムエラーが起こって、印刷できないんですよ。それも、締め切りの 2 時間前にですよ。徹夜あけで、ふらふらの頭のときですよ。あのときは、PowerMac 8500 を使っていたんですけど、こいつを巴投げの要領で投げ飛ばしてやったら、どんなにかすっきりするかって真剣に考えましたよ。結局あのときは、10 ページずつぐらいに分けて印刷することによって、切り抜けたんですけど。

あぁ、で、Apple Works なんですよ。なんか Apple Works って、好きになれないんですよ。Claris が、清楚で、色気も、化粧っ気もないけど、いっしょうけんめいがんばるわっ、て感じの女の子なのに、Apple Works は、その女の子が上京してきて、とりあえずいろいろ化粧してみて、デビューしてみた、って感じでね。高校のころの、隣に座ってて、すごく気になってた女の子が、5 年ぶりに、偶然歌舞伎町で会っちゃった、っていうよな。あぁ、もう、何いってるか分かんないですね。もう、Claris はいないんだし。だいたいさぁ、書いててあたまきてるんだけど、Office suite が、事実上、Apple Works か、MS Office しかない、っていう今の状況は、ひどすぎやしないか?いや、絶対ひどい、いーや、ひどすぎる。どうにかしないといけない。いや、どうにかしたる。

えっと、そんなことじゃないんですよ。Apple Works なんですよ。Apple Works の 6.2 を Mac OS X 10.1 で使ってるんですけど、立ち上げると、なんかフローティングウィンドウが出るじゃないですか。これも気に入らないんだけど。で、タブがいくつか選べるんだけど、"Web" って書いてあるタブを選ぶと、それだけで、予期しない理由で終了しちゃうんですよ。そりゃ、おれだって、それだけで終了しちゃうとは予期してないですよ。いったい、何が悪いの?いや、確かに、おれが悪いのかもしれない。だからといって、そんなに簡単に、システムエラーで落ちるような製品を、世に出していいと思っているのかい、えぇ Apple さんよ!?落ちちゃ、だめでしょ。Mac OS X が堅牢になったからといって、落ちちゃだめでしょ。「他のアプリケーションには影響を与えません」とか、言ってんじゃねーよ!自分のアプリケーションに、すごい影響があっただろうが!

えっと、すいません。お聞きしたいのは、これって、落ちるのって、よく知られた問題なんでしょうか、それともわたしが悪いんでしょうか。調べればいいんでしょうけど、いまは、酔っぱらってて、それどころじゃないんです。って、誰に向かってあやまったり、質問したりしてるんだ、おれは。

October 26 - Cocoa 1001、NSCell にテキスト属性を設定する
keywords: Cocoa, setAttributedStringValue

久しぶりの Cocoa 1001、NSCell に関する、ほんのちょっとした話です。

追記:サンプルコードを追加しました。

October 24 - Mac OS X 10.1 の sudo
keywords: sudo, system admin

Mac OS X 10.1 で、terminal で sudo を使うと、以下のようなメッセージが表示されるんだ。sudo っていうのは、root 権限でコマンドを実行するためのコマンドね。

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these two things:

#1) Respect the privacy of others.
#2) Think before you type.

「わたしたちは、あなたがシステムの管理者から、通常のレクチャーを受けたものと信じています。それは、普通以下の 2 つのことに要約されます:

#1) 他人のプライバシーに敬意を払うこと
#2) タイプする前に考えること」

う〜ん、かっこいい〜!システム・アドミンの心得を、これほど簡潔にかつ、するどく言い表わせるものなのか!これは、Apple の文化なのか、それとも BSD の文化なのか、それともやはり NeXT の文化なのか?

October 23 - iPod の FireWire
keywords: iPod, FireWire

さてさて、Apple が iPod を発表してました。詳しいことは他のサイトを見ていただくとして、FireWire 接続なんだね、これ。この手のシリコン・オーディオは、USB が主流(パラレルなんてのもあった)けど、意地でも FireWire を使うところが Apple ですな。「なにいってんの、USB より FireWire の方が、速いからいいじゃない」って思うかもしれないですけど、一般に USB chip の方が安いです。だから、この手の小型デバイス(もとの値段が安い)なら、多少遅いが安い USB を選択するのが普通だと思うんですけどね。Mac としかつながないし。

さらに言えば、6 pin の FireWire です。これも、小型デバイスなら 4 pin の方がメリットあるのに、あえて 6 pin を選ぶところも、Apple の意地ですね。

意地っていう言い方は、あんまりフェアじゃないですね。Apple は、「デジタル・ハブは、6 pin FireWire 1 本でつながる」という、できるだけユーザに分かりやすい環境を提供したいのかもしれません。でも Digital Video は 4 pin が多いけど :-P

でも、面白そう。買うかも。

October 22 - Windows と WebDAV
keywords: WebDAV

WebDAV の話だ。Windows だと、IE5.5 以降を入れてると、「Web フォルダ」ってのができて、WebDAV が使えるんだ。これで、mac.com にアクセスできるんだ。

で、おれは WebDAV ってのは、HTTP を使った、仮想マウントだと思ってたんだよ。Web サーバ上の自分のディレクトリをマウントして、ディスクの一つのように扱える。そこからファイルをオープンして、セーブできる。Mac OS X 10.1 は、そういう風に使えるよね。

でも、Windows のは、そう使えない。オープンしようとすると、いったん自分のローカルにダウンロードして、保存するの。Temp フォルダに。だから、Web サーバ上のファイルを編集するには、一回ダウンロードして、編集して、セーブして、アップロードしないといけない。これじゃ、FTP といっしょじゃない?

Mac OS X みたいに、ローカルのディスクといっしょの感覚で扱えるものだと思ってたんだけど。それとも、WebDAV はただのポート 80 をとおる FTP みたいなもんなのか?調べないと分からんぞ。でも、この Windows のやつは、使いにくいよ。がるるー。

October 16 - Objective-C++ と、スマートポインタと、template
keywords: Objective-C++, smart pointer, template

Programer's High が更新されています。前回の予告どおり、template を用いた、コンパイル時のメソッドチェック機構の話です。

Objective-C++ の限界に挑んでいます。と、いうよりは、Objective-C++ は、その設計思想が、Objective-C と C++ の、たんなるハイブリッドなので、ちょっと凝ったことをやろうとすると、すぐに壁にぶつかってしまう、という好例になっていますね。

まじめに解決するならば、新しい runtime が必要になるでしょう。でも、シンプルにまとまっている、Objective-C の世界にいろいろ付け加えるのは、個人的にはちょっと嫌かも。

参考サイト:
Programer's High

October 15 - TN2029: Mac OS X 10.1
keywords: Tech Note

Apple が、Technical Note 2029: Mac OS X 10.1 を公開していたぜっ!これは、とくにアプリケーションから使われる API レベルの、バグフィックスや変更点を記載したものだ。どどどんっ、というボリュームがあるけど、アプリケーションを作る人は、目を通そう。

あ、NSString の、x 座標がマイナスになると、きちんと描画されない、っていうバグが直ってる。あれ、Faded Words 作ってたときに、悩んだんだよなぁ、、、

October 15 - mac.com
keywords: private letter

さて、HMDT は http://homepage.mac.com/mkino2 に移転しました。つまり、ここだ。告知してくれて、いぬありがとう。

で、なぜに mac.com かというと、いぬ日記にも書いてあるとおり、WebDAV です。なぜに WebDAV かというと、いままで会社から FTP でアクセスできなかったんです。donwload はできるけど、upload はできない。それが WebDAV ならできるぜ!これがやりたかったんだ。

October 12 - 私信
keywords: private letter

私信です。ごめんなさい。また User unknwon で返ってきてしまいました。わたしが使っているメールサーバが悪いのかもしれません。Earthlink なんですけど。あんまり、その辺に強くないので、こういうとき、どうやって解決すればいいか分かりません。

ただ、メールを受け取ったときと、その記事を読んだとき、とてもうれしかったので、どうにかして、そのことを伝えたいんです。こうやって、サイトを作って、日々更新するっていうのは、きっとみなさんご承知でしょうが、すごく労力を要することですよね。あぁ、なんで、会社でさんざん働いて、疲れ果てて、うちに帰ってきてまでこんなことやってるんだー、って。思ったことあるでしょう?

ま、やりたいから、やってるんです。それが出発点です。でも、わたしには、もう一つ、信じていることがあります。それは、学生時代に、学校の先生が言っていたことなんですが、

「情報は、発信すると、集まってくる」

そうなんです。情報っていうのは、集めにいくものじゃないんです。情報を、出している人のところに、集まってくるんです。Give & Take は、Give が先なんです。それが、真理かどうかは、さておくとして、わたしは、この考え方が気に入りました。なぜなら、この、日々サイトを更新する、うずうずした気持ちに、裏づけを与えてくれるような気がしたからです。

そうだ、こうやって、サイトを更新してれば、誰かが読んで、新たな情報を教えてくれるかもしれない。その誰かを、触発するきっかけになるかもしれない。つまらないとか、レベルが低いとか、そんなもの常識だぜっ、って言われてるかもしれないけど、そういう情報も、自分にとっては、take なんだ。

ま、現実はそんなに甘くないです。メールなんぞ、こんな「いいかげん」と「てきとー」をポリシーにしたサイトには、来ないっす。だって、わたしもそんなにメール書かないもんね。だから、こちらの記事を、さらに深める形で記事を書いて下さったときは、とってもうれしかったんです。と、いうことを伝えたいのに、なぜにメールが届かない?

あ、私信の続きですけど、相互リンクの件は了解です。こちらのリンクも更新しました。ですが、えーっと、このサイトは、もうすぐ移転する予定です。っていうか、もう移転してるんですけど。新しいアドレスは、http://homepage.mac.com/mkino2 です。リンクしていただけるなら、こちらでお願いします。そうです。iDisk です。Apple にのせられた感じで、ちょっとしゃくな気分です。でも、So-net もういっぱいだから、しょーがないな。

October 11 - Programer's High による Ojbective-C++ を用いたオブジェクトの自動開放
keywords: Objective-C++, smart pointer

さて、Programer's High さんから、メールをいただきました。Thanks! 先日 Objective-C++ の翻訳をやったけど、けっこう、mkino はネガティブな反応だったよな。ふーん、あればいいけど、なくてもいっかー、という感じ。それを読んで、Programer's High さんからのメールには、こう書いてあった。

「Objective-C++の前向きな活用方法を追求してみよう」

くぅーっ。うれしいじゃないか、こういう反論。こういう、前向きな反論があると、サイトを作ってて、よかったなぁー、と思う。

今回は、C++ のスマートポインタを利用した、Objective-C のオブジェクトの自動開放の話を書いています。スマートポインタは、More Effective C++ とかに書いてあるやつだね。知らない方は、そちらを参照してくれ。

ところで、なんべん返事のメールを出しても、User unknown で返ってきてしまうんです。どうすればよいのでしょう?しかたないので、この場で返事を書きます。問題点に対する提案ですが、alloc, init を直接使うのではなく、各オブジェクトにファクトリメソッドを用意して、その中で autorelease してやる、というのはどうでしょう。

+ (id) foo
{
    return [[[Foo alloc] init] autorelease];
}

shared_id aFoo = [Foo foo];

Objective-C では、よく使われるパターンですよね。

参考サイト:
Programer's High

October 9 - Defaults Editor
keywords: NSUserDefaults

Mac OS X では、defaults data base っていうサービスが提供されているんだ。これは、アプリケーションが、ユーザごとの初期設定を保存しておける、データベースなんだ。Classic の Mac OS だと、System の Preferences に保存しておいたような内容が、保存しておけるんだ。

Cocoa アプリは、NSUserDefaults を通して、defaults data base にアクセスできるんだ。ふーん、じゃ、そいつをちょっと、覗いて見ようか、、、と、思って作られたのが、Defaults Editor だ。

上の図は、Finder の初期設定を覗いているところだ。ふむふむ、こんな情報が隠されていたのね。これを編集すれば、Finder の設定を変えることができる、、、はずだけど、まだ編集機能はついてないよー。

今回の目的は、NSUserDefaults の使い方を覚えることと、NSDictionary や NSArray を、NSOutlineView を使って表示させることがメインです。だから、実際に、初期設定をいろいろいじるということは、あまり考慮されてないっす。もし本格的にそういうことをやりたいならば、たぶん、似たようなアプリはどこかにあるだろうから、そっちを探した方が、早いよね、きっと。

DefaultsEditor.tgz
DefaultsEditor-src.tgz

October 6 - Objective-C++ Release Notes:後編
keywords: Objective-C++

Mac OS X 10.1 Objective-C++ Release note訳の後編っす。前回の後ろにつなげてあるよ。

さて、Objective-C++ は、先日も書いたように、Objective-C と C++ を相互に呼び出せるようにしたものだ。基本的に、オブジェクトのやりとりは、ポインタベースでやることになってる。C++ のオブジェクトを、直接スタック上にとったりすると、いろいろ厄介なことがおこるのだ。

また、Objective-C と C++ のクラスの階層を混ぜ合わせることもできない。あくまでも、Objective-C++ は、二つの言語のブリッジであって、新しい言語を作るのが目的じゃないんだよね。

これが便利なのは、Cocoa アプリケーションで、C++ のライブラリを呼び出したいときとかだね。過去の資産を役立てることができる。あとは、Objective-C のプログラムを組むとき、C++ の利点を使うことができる。

ふーん、でも、個人的な意見では、C++ は欠点ばっかりで、シンプルでエレガントな Objective-C を使っているなら、C++ を使う必要はないよなー。と、思っていたが、いいことがあった!それは、C++ は、自動変数をどこででも宣言できる、ということ。つまり、メソッドの最初だけじゃなくて、途中で変数を宣言してもオッケーになるんだ!それも、拡張子を .mm にするだけで。10.0 との互換性はなくなるけど、これは便利かも。

October 2 - Objective-C++ Release Notes:前編
keywords: Objective-C++

Mac OS X 10.1 と Project Builder 1.1 からは、Objective-C++ がサポートされてるぜ!なにやら魅惑的な、誰でも考え付きそうな名前だが、リリースノートが公開されてるぞ。またしても勢いだけで、訳してみた。今回は前編です。Objective-C++ は、一言でいうと、Objective-C から C++ を呼び出せる、または C++ から Objective-C を呼び出せる、ということだ。これだけで、もう十分のような気がするぞ。

October 1 - Authorizatin API 完全理解
keywords: Authorization API

Authorization API に関する記事を、こちらにまとめました。まだまだ続くよ。のはず。


Home | Link | Download | Back Number | Speciall Issue

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

HMDT