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-
November, 2003

November 24

プログラミング言語を、人に紹介するときのことを考えてみた。対象は、まったくの初心者じゃなくて、プログラミングの経験がある人。もちろん、言語の仕様とか、使い勝手とか、好き嫌いとかも伝えるんだけど、その言語を使って実際にアプリケーションを開発しようとするときは、もう少し実際的な情報が必要になると思うんだ。そんな情報を表現するために、アライブな言語と、ネイティブな言語っていう言葉を使うことにトライしてみる。

まず、アライブな言語っていうのは、あるシステムにおいて、その言語がサポートされ続けているということを表すんだ。システムの開発元、またはプログラミングツールの開発元が存在して、疑問があればサポートが答えてくれる、バグがあればフィックスされる、システムがアップデートされればそれに対応する、っていうことが行われる。さらに、コミュニティが活性化していて ML があったり、書籍が出版されていれば言うことなし。こういう言語なら、実際の開発に選択しても安心なわけだ。

そして、ネイティブな言語というのは、あるシステムやフレームワークが書かれている言語、または提供している API で使われている言語、という意味だ。ネイティブな言語以外でそのシステムやフレームワークを使おうとすると、ラッパを経由する必要がある。たとえば、Mac OS X の Cocoa のネイティブな言語は Objective-C だ。Java や Ruby を使って Cocoa にアクセスする API も提供されているいるけど、それらはネイティブな言語ではない、っていう使い方をする。

これらを使って、Mac OS X でのプログラミング環境を説明すると、

Objective-C
「ほとんど死にかけていたけど、Mac OS X でアライブな言語になった。Cocoa でのネイティブな言語。ユーザ数は少ないけど、Mac OS X があって Apple がサポートしている限りは大丈夫?」

Java
「間違いなくアライブな言語。Java API を使っている限りはネイティブになるけど、Cocoa ではネイティブな言語ではない。Web アプリケーションとかには向くけど、Cocoa デスクトップアプリケーションにはいまいち。」

C、C++
「もちろんアライブな言語。Carbon、Darwin のネイティブな言語だ。デスクトップアプリケーションを作るなら、習得しないわけにはいかないでしょう。」

Perl、Python、Ruby
「もちろんアライブな言語。ただし、スクリプティング言語の特性として、システムにネイティブな言語にはなり得ない。Web アプリケーションとかに使おう。」

AppleScript
「アライブな言語。アプリケーションをコントロールする言語だけど、ターゲットは AppleScript で書かれているわけではないので、なにかのネイティブな言語になるとは言い難い」

てな感じ。目的に応じて言語を選べばいい。

で、ここまで引っ張ってきて何を言いたいかというと、デスクトップアプリケーションには向くのは C、C++、Objective-C。つまり、C ができなきゃ始まらない、というわけだ。だから C をやれ、C を!四の五の言う前に C をやれ!ポインタ・ラブ!プリ・プロセッサ最高!好きな関数は memcpy() です!

追記:)掲示板でコメントをもらったので、修正。Smalltalk はここに乗せるのは適切ではないと判断したので、削除しました。

November 19

Safari に Cookie  漏洩の脆弱性があったそうで。リンクとか備忘録とか日記とかさんが詳しいです。

ヘチマコンピュータさんの CookieMonsterFix を使うことで、対策できます。NSHTTPCookieDiskStorage にパッチを当ててるわけで、WebKit の問題ですね。

Panther のコントローラレイヤの話だけど、勢い余って(?)キー・バリュー・コーディングのドキュメントも翻訳したよ。やっぱり、英語苦手だから、どうにもこうにも頭に入らん。訳してしまうのがいちばん手っ取り早い。

キー・バリュー・コーディングは、ただの名前ベースのメソッド呼び出しかと思ったら、意外にいろんな機能がある。上手に使えば、コントローラレイヤに限らずとても効果的なんだけど、これにべったりになるのもちょっと不安かなぁ。

なにはともあれ、興味ある方はドキュメントを。一気に訳したからな。

November 14

「Xcode を使ってみた」の話、ユーザインタフェースからビルドの新機能へと移っていくぜ。まずは、ゼロリンクだ。ゼロリンクの仕組みに、ちょっとだけ突っ込んでみた。

November 13

「Xcode を使ってみた」は、さらに続くぜ。今回は、コード補完。久々に使ってみた、IDE のコード補完機能。好き嫌いで言うと、コード補完機能自体があんまり好きになれないんだけど、ちょっと我慢して使い込んでみるつもり。

November 12

「Xcode を使ってみた」の、お話第二回。今回は、スマートグループのお話。スマートグループは、知ってると便利に使えるけど、知らないと、どうやって使うんだ〜、ということになってしまうと思う。

Daring Fireball で、Panther のアンチ・エイリアシングの改善の考察を行っている。長い文章なんだけど要約すると、

  • Jaguar からは「滑らかな文字のスタイル」に「中 - フラットパネルに最適」を選択すると、ClearType のような、液晶の RGB サブピクセルを使ったアンチ・エイリアシングがかかる
  • Panther は Jaguar に比べると、垂直方向のアンチ・エイリアシングが改善されている

ということらしい。

ついでにそこで紹介されていた、codepoetryPanther でのテキストサービスの変更点まとめ。おぉう、こんなに色々あったのかい。いちばん効果が分かりやすいのは、やっぱりドロップシャドウでしょう。TextEdit でも使えるし。

November 10

前回の更新から、一週間近く間が空いてしまったね。ま、気まぐれ不定期更新なので、許してください。

それはさておき、また新連載を始めるぜっ!Panther および Xcode が出てしばらくたち、ようやく新しい環境にも慣れてきたことでしょう。そこで、Xcode の変更点をまとめ、実験してみる連載だ。名前はそのまんま、「Xcode を使ってみた」。

第一回目は、「新しくなったプロジェクトウィンドウ」。プロジェクトウィンドウの変更点をまとめてみた。

たぶん、全体で 5、6 回ぐらいの記事になるかな。

Panther 関係のドキュメントを、まとめたページを作りました。こちらの、「panther-dev」にどうぞ。Xcode の話とか、コントローラレイヤのドキュメントとかがあります。

November 4

コントローラレイヤの翻訳の最後。初期設定コントローラの例。Example: Preferences Pane の翻訳である、例:初期設定ペイン。もちろん、今回も実装例を作ってみた。ダウンロードはこちら。

ダウンロード:
CurrencyConverterPref.dmg

これで一通りドキュメントを眺めたけど、感想を。コントローラレイヤを使うと、たしかに劇的にコードの量が少なくなる。これ、ほんと。管理もしやすい。使うかどうか検討する価値は、十分にある。でも、既存のコードをコントローラレイヤに移行させようとすると、これはけっこう難しいかもしれない。

特に、モデルのアクセッサメソッドでこける場合があるかもしれない。モデルのアクセッサメソッドは、特に設定をしない限り、いつでも呼ばれるし、けっこうな頻度で呼ばれる。これは、値を得るときに計算がからんでくると、ややこしくなる。簡単な計算ならいいけれど、パフォーマンスに影響を及ぼすような複雑な計算のときは、無駄な計算が呼ばれないように、周到にモデルを設計しておかなくちゃいけない。モデルの呼び出しの制御を、システムに任せているからだね。

ということで、今の時点の感想は、「新規にアプリケーションを作るなら、コントローラレイヤを使うメリットは大きい。でもその場合、特にモデルの設計を、コントローラレイヤに合わせて、きちんと考えておく必要があるよ、きっと。」という感じかな。

November 2

昨日に引き続き、三浦さんに訳していただいた、Key-Value Observing を翻訳した、キー・バリュー・オブザービングのドキュメントです。キー・バリュー・オブザービングは、コントローラレイヤのベースとなる機能の 1 つで、値の変更を通知するメカニズムです。

November 1

いままでコントローラレイヤの翻訳をやっていたけど、なんと、三浦さんから、値変換についての訳をもらっちゃいました。ありがとうございます!というわけで、Value Transformers を翻訳した、値変換のドキュメントを公開します。Panther から導入された、値を変換するためのメカニズムで、主にコントローラレイヤで使われます。

ADC にて、Java 3D と Java Advanced Image の Developer Preview が公開。たいへん、いまさら感がただよっているような気がするけど。まぁ、「Apple は Java にコミットしている」ということを、示すことにはなると思う。それよりも、Swing をもっともっと速くしてくれ〜。


[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