home link download back number special issue

HMDT - Back Number / June, 2001


June, 2001


June 29 - ひとりごと
keywords: Python

きのう書いたとおり、Python の勉強をしてるよ。いまさらなにやってんだ!って?はい、そのとおりです。いまさらです。いまさらながら、やってます。

さて、なぜに Python か?いちばん最初の動機は、xml を処理できる、簡単なスクリプト言語がほしかった、ってことなんだ。そういうことなら、Perl や Ruby もあるじゃねーか、って声が聞こえてくるよ。あえてここで Python を選んだ理由は、そのオブジェクト指向な特性や、動的型付けを実現できる runtime や、強力な正規言語表現があるからでして、、、うそです。ぜんぜんそんなこと考えてねーよ。

理由は、ただ一つ、名前です。きっぱり。あ、そこ、怒らんでくれ。このサイトは、いーかげん、とてきとーがポリシーなんだから。

Python の名前の由来に関しては、こちらのページがとてもよくまとまってまるよ。読むと分かるけど、Python の名前の由来はモンティ・パイソンによっている。こういうハッカー文化がうれしいじゃない。つまり、日本でいうと、“ドリフ”とか“気狂い猫”とかいう名前のわけだ。くーっ、楽しいじゃない。書いているうちに気に入ってきたぞ。作るか?スクリプティング言語“ドリフ”。または、Drifters.framework。

June 28 - ひとりごと
keywords: Python

Python をインストールしてみたよ。おもしれぇ〜。こんなおもしろいものだったんだ。オブジェクト指向の知識がある人なら、なんのチュートリアルなしでも使えるね。すごく直感的に(プログラマの直感ね。普通はこういうのは直感的とはいうまい)書けるし。Mac OS X で、標準搭載してくれないかなぁ。Python プログラムを配付できたら、すごく便利だろうに。

June 26 - Cocoa Version Checker
keywords: NSAppKitVersionNumber

きのう書いた、AppKit のバージョンの調べ方を使ったアプリケーションを作ってみたよ。名前はそのまんま、Cocoa Version Checker だ。その使い方は、立ち上げてみれば一目瞭然。

こんな感じで、Cocoa Framework、Foundation Framework、AppKit Framework のバージョンを示してくれるんだ。OS のアップデートをしたときにでも、走らせてみるとおもしろいかもしんない。っつーか、そのぐらいしか使い道がないぞ。

さて、このアプリの仕組みは、以下の 3 つの変数を調べているんだ。

  • CocoaVersionNumber
  • NSFoundationVersionNumber
  • AppKitVersionNumber

これらはヘッダの中では宣言されていないので、extern で宣言して、リンク時にあるかどうかが分かることになるんだ。

ちなみに、上の画像は Mac OS X 10.0.3 の時のものです。10.0.4 または、10.0.3 以前で走らせた人がいたら、バージョン番号を教えて下さい。

ダウンロード:
Cocoa Version Checker 1.0

修正:
ダウンロードのページの CocoaVersionChecker1.0.dmg へのリンクが外れていたので、修正しました。指摘してくれた畠中さん、Thanks! また、畠中さんによれば、10.0.4 でもバージョン番号はいっしょだそうです。やっぱり。

June 25 - AppKit のバージョンの調べ方?
keywords: NSAppKitVersionNumber

MacWire の新居さんの記事で知ったんだけど、Apple が、NSDocumentController のバグの対策を発表していたようだ。その内容は、ドキュメントには NSDocumentController は HFS の file types をサポートしてる、って書いてあるけど、実際はしてないんじゃない?っていう話。Apple はそれを認めて、bug として認識し、対策パッチを公開している。

さて、個人的には NSDocumentController は、まだ本格的に使ってないから、あまり興味がなかったんだけど、目を引いたのは別のところだ。ソースコードの中のコメントに、“このコードは、bug が fix されたら呼びだされないよん”って書いてあるんだ。ってことは、bug が fix されたかどうかを判別しているわけだ。いったいどうやって?

気になったんで、ソースコードを追ってみた。すると、最後のところで NSAppKitVersionNumber という値を参照しているのが分かった。名前の通り、AppKit のバージョンを意味する変数らしい。これって、ヘッダの中には定義されていないんで、冒頭で extern 宣言している。つまり、undocumented な変数って言うわけね。だけど、Apple ここで公開しちゃったから、これからずっとサポートしないといけないんじゃないかな。

さらに気になるのは、コメントを読むと、現在の AppKit のバージョンは 577.0 らしい。すげぇー、そんなにバージョンアップしてるんだ。ま、それはさておくとして、コードの中で AppKit のバージョンを比較しているんだけど、これが 588.0 より大きいかどうかで比較してる。これって、588.0 以降で fix されるっていうことなのか、それとも 577.0 の間違いなのか?もしかすると、パッチのパッチが必要になるかも。

あと、知っている人は知っているんだろうけど、このパッチを当てるために、poseAsClass: っていう NSObject のメソッドを使ってる。あるクラスをばくることができるメソッドだ。くぅ〜っ、かっこいい。また惚れたぞ、Objective-C!

June 24 - Learning Cocoa
keywords: Cocoa, O'reilly

ようやく "Learning Cocoa" を手に入れました。だいぶ前に注文してたんですけど、オーダーが多いのか、何度も遅れるよ、遅れるよ、ってメールが来てました。ほんとに遅かったぞ>O'reilly

内容に関しては、あちこちで書かれてますけども、Cocoa Programming のチュートリアル的な内容です。オブジェクト指向とは何ぞや、というところから始まって、Objective-C の簡単な紹介、Project Builder、Interface Builder の使い方を経て、step by step でアプリケーションの作成を説明しています。Cocoa 入門者向けの内容となっています。まぁ、はっきりって目新しさはないです。Apple のサイトにある PDF で充分カバーできる内容ですな。

でも手元に一冊あると便利ですし、ていねいに読み込んでいくと、いままであいまいにしていたところがしっかり理解できるんで、悪い本じゃないと思います。机の横に置いて、開発の合間にパラパラと見るといいんじゃないでしょうか。

あと、内容とは関係ないけど、中の図が Studio Display になってたりして、おー芸が細かいなぁ、と思ったりしました。

June 21 - Mac OS X 10.0.4
keywords: sudo update

各所で報じられている通り、Mac OS X 10.0.4 がリリースされたようだよ。まずは、素早いアップデートはめでたい。この調子で、継続的にアップデートしてもらいたいもんです。

で、内容をざっと眺めてみると、、、アプリケーション屋さんに気になるのは、sudo のアップデートかな?一応説明しておくと、sudo は、一時的に root 権限でコマンドを実行させることができるコマンドです。どう変わったのか、Authentication に興味がある今日この頃、気になるところですな。

June 18 - Authentication API
keywords: Security.framework

最近流行りの security API について調べてみた。しっかし、すごい狭い特定分野での流行りだな。

まず、security API とはなんぞや?Mac OS X の製品版では、デフォルトでは root としてログインできなくなったよな。root とパスワードはいっしょのくせに、なんか変な気はするが。とりあえず、そっちの方が security 的には安全なのは確かだ。だけど、root としてなにかしたいときはあるよね。たとえばインストールのときとか。そんなとき、一時的に root 権限を与えるための API が security API、または Authentication API だ。こいつらは Security.framework の中にあるんだ。

Web 上には、けっこうドキュメントがそろってきた。ま、Mac OS X の開発ドキュメントなんて、3 つ以上あればけっこうって言っても言い過ぎではないよな。

まず、Apple による introduction 的なページ。このページには、Mac OS X の種々の security や cryptography サービス API の説明があるんだ。

んで、Apple から提供されているサンプル、AuthSample。ほら、コントロールパネルの中には、パスワードを入れるためのカギがついたボタンがあるやつがあるよね。あれを実現するためのサンプルだ。

続いて Stepwise の記事、Authentication and Authorization using the Security Framework。ここでは、Authorization API の使い方が具体的に説明してるよ。実際に使うときは、AuthorizationCreate を使って初期化をして、AuthorizationCopyRights を使って認証されているかどうか調べる。root の特権で実行するには AuthorizationExecuteWithPrivileges を使う、っていう手順を踏むんだ。このページにもサンプルもあるよ。

さらに、k_suka さんのなんということはない話で、この API を使った具体的なアプリケーション PackMon が公開されています。ネットワークのパケットを監視するソフトですが、Authentication API のサンプルとして使えます。解説も詳しいっす。

June 17 - Cocoa 101、文字列の比較、検索
keywords: compare, rangeOfString

Cocoa 101、たいへん基本的な話なんだけど、文字列の比較、検索の初歩についてまとめたよ。NSString の compare、rangeOfString などを使うときの話です。

  • NSString - 文字列を比較する
  • NSString - もっと簡単に文字列を比較する
  • NSString - 文字列を検索する

ただ、たぶんアルファベットだったらこれで十分なんだろうけど、日本語が絡んでくるとやっかいだよなぁ。それはまた後日取り扱うということで。

June 15 - HMDTAppKit 1.0.5a。シートタイプのパスワードダイアログ
keywords: beginSheet, endSheet

AppKit のメタフレームワークである、HMDTAppKit。パスワードダイアログにシートタイプを追加したよ。

上の図のように、シートダイアログが使えるぜ!シートとそうでないときの使い分けはどうするのか?Aqua Human Interface Guideline を読めば、書いてあるのかな。

ダウンロード:
HMDTAppKit

June 14 - モーダルダイアログ、修正
keywords: stopModal, abortModal

先日書いた、Cocoa 101、モーダルダイアログを表示する、に関して、「Java de Cocoa」の Takaho A Endo さんから指摘をいただきました。>Thanks!

先日は、ダイアログの Cancel ボタンを押したときに、abortModal を呼んでいましたが、それはおかしいのではないか、という指摘です。で、ドキュメントを読みなおしてみると、、、なるほど、abortModal はモーダルダイアログの run loop の外から呼び出して、例外を発生させて run loop から抜ける機構である、と。ダイアログの Cancel で呼び出すのは、適切ではないですね、これは。

と、いうわけで、記事をかなり書き直しました。前回の記事を参考にした人がいましたら、ごめんなさい。あ、HMDTAppKit の方も、修正しないと、、、

また、Takaho A Endo さんも、Java を使ったダイアログの表示方法を公開しています。こちらも参考にさせていただきました。

参考:
Java de Cocoa - にょろっと出てくるダイアログ

June 13 - HMDTAppKit 1.0.4a。パスワード入力用ダイアログ
keywords: password, NSPanel, loadNibNamed

AppKit のメタ・フレームワークを提供する、HMDTAppKit。今回は、パスワード入力用のダイアログを追加してみたぜ!

HMDTPasswordPanelCtrl の askPassword を呼び出すと、上のようなダイアログを表示して、パスワードの入力待ちになるぞ。

主な機能:

  • ユーザ名、パスワードを入力するためのモーダルダイアログ
  • メインの文、"User Name:"、"Password:" のテキストを自由に変えれる
  • Text Field にデフォルト値を設定可能。入力可、不可を設定可能。上の図のように、root のパスワードを聞くときなんかに便利だぜ

あと、このコードでは、.nib を loadNibNamed:: を使って動的に呼び出しているので、そのサンプルとしても使えるよ

ダウンロード:
HMDTAppKit

June 12 - Learning Carbon
keywords: Carbon

各所で酷評されている(?)、"Learning Carbon" を手に入れたよ。現在、拾い読み中です。内容は、Moon Travel Planner のていねいな解説になっています。いままで Classic の Mac OS のプログラミングの経験があって、これから Carbon をやりたい、って人向けですね。でも、このぐらいの内容は PDF で読めるよな。どうしても、本として、手に取って読みたいって人向けです。<実はけっこう重要

"Learning Cocoa" もいっしょに注文したのに(こっちが本命)、まだ来ないでやがんの、、、

June 10 - Cocoa 101、モーダルダイアログを表示する
keywords: Cocoa, modal dialog

Cocoa 101、ダイアログを表示させる、って話です。

  • NSApplication - モーダルダイアログを表示する

けっこう基本的なことなので、いまさら書くのもどうかなぁー、って思ったんだけど、実はいままで使ったことがなかったので、書いてみました。

June 9 - HMDTAppKit 0.1.3a, 項目を削除
keywords: HMDAppKit, delete

アイコン付きテーブルを実現する、HMDTAppKit、またまたほんのちょとのアップグレード。今度は、項目をテーブルから削除できるようにしたよ。

項目を選択した状態で delete キーを押すと、その項目が削除されます。

ダウンロード:
HMDTAppKit

June 6 - HMDTAppKit 0.1.2a, ドラッグアンドドロップを受け付ける
keywords: HMDAppKit, D&D

アイコン付きテーブルを実現する、HMDTAppKit が、またちょこっとアップグレードです。変更点は、テキストを縦軸の中央に書くようにしたこと、そして、なんということはない話の k_suka さんのリクエストに答えて(?)、ドラッグアンドドロップで、ファイルを追加できるようにしたよ。

ちょっと、画像が分かりにくいけど、D&D でファイルを追加してるよ。枠の強調表示もしてるぜ。さて、今回は、まだいくつか問題点があるんだ。

  • D&D しながらテーブルをスクロールさせると、枠の表示が残ってしまう
  • ファイルを追加できるけど、削除できない(あぅ、、、)

これらは、次のバージョンで修正される、かもしれないぜ!

ダウンロード:
HMDTAppKit

June 5 - Cocoa 101、Framework のヘッダを公開する
keywords: Project Builder, framework, headers

Project Builder って、Framework を作ることができるでしょ。実体は、dynamic library なんだけどね。だけど、ヘッダもまとめて管理することができるんだ。たとえば、AppKit には、<AppKit/AppKit.h> がくっついてくるでしょ。

じゃ、ProjectBilder で、この公開するヘッダを指定するには、どうしたらいい?Target パネルの Files & Build の Headers の横にある、"Pub"、"Pri" を使うんだ。

この、"Pub"、"Pri" は、こう見えてボタンなんだ。"Pub" をクリックすれば、このファイルを公開することができる。気付かねーよ、こんなもん。一時間ぐらい悩んだぞ。でも、ヘルプを見たら、一発で書いてあった。やっぱりヘルプは読まなきゃだめですね、、、

June 4 - アイコン付きテーブル
keywords: HMDTAppKit 0.1.1a

HMDTAppKit をちょこっと修正。アイコンのサイズを変更できるようにしたぞ。バージョン 0.1.1a です。

あと、画像をキャッシングすることによって、パフォーマンスを改善。速い。本来、このくらいのスピードで動かなきゃいけないんだよな、Finder って。

ダウンロード:
HMDTAppKit

June 3 - アイコン付きテーブル
keywords: HMDTAppKit

アイコンつきテキストを表示するためのテーブルのコードをリリースするよ。どんなものか、っていうと、こんな感じだ。

このサンプルは、/Applications フォルダの中身をのぞいた様子。各アプリケーションのアイコンと名前が表示されているよ。

今回のリリースでは、試しに、Framework を作ってみたよ。HMDTAppKit.framwork っていう、生意気な名前を付けてみた。このリリースには、

  • HMDTIconCell
  • HMDTIconTableDataSource
  • HMDTIconTableView

の 3 つのクラスが含まれているぞ。

あと、SampleApp も含まれている。プロジェクトに 2 つのターゲットが含まれているから、切り替えてコンパイルしてね。最初に、HMDTAppKit を。次に SampleApp をビルドだ。

ダウンロード:
HMDTAppKit


Home | Link | Download | Back Number | Speciall Issue

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

HMDT