|
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-
|
|
アビーことアバディス・テバニアンが、3 月エンドでApple を退社するらしい。アビーほどの人が、10 年も Apple に留まってくれたことは、Mac ユーザとしては幸運でした。ありがとう。そして、おつかれさま。 アビーの業績については、上の記事を参照してもらえばいいんだけど、簡単に言えば、Mac OS X の心臓部にある、Mach カーネルの実際の開発に携わった人だ。もっと分かりやすく説明しよう。まず、Apple のオープンソースプロジェクトである、Darwin のページに行き、Mac OS X 10.4.5 を選択しよう。ずらっと並んでいるプロジェクトから、xnu をダウンロードする。これが、Mac OS X の中核となる、Mach カーネルのコードだ。 で、このファイルを解凍する。そして、Spotlight を使って、「Tevanian」を検索してみよう。すると、カーネルの中から、アビーが実際に書いたファイルを探し出すことができる。うーん、Spotlight 便利。 この中から、たとえば、 vm_init.c というファイルを開いてみる。すると、ヘッダ部のコメントに、
との記述が。うぉぉ、アビーの生コード!こんなところで興奮するのは、人としてどうかと思うが。 1985 年だから 20 年以上前か。そのころに書かれたコードをベースとしているソフトウェアが、まだバリバリと開発され続けているんだよな。すごい。 アビーのコード見ると、とてもきれい。関数は短いし、コメントは多いし、記法は一貫しているし。ソースコードを見ると、プログラマの性格は分かるもんで、誠実で几帳面なことが分かりますな。嘘度 50%。言ったらあれだけど、他のオープンソースのコード見ると、汚すぎてやってらんねー、というものは多い。 というわけで、個人的には「ソースコードのきれいな人」という印象があるアビー。新天地でも、またきれいなコードを書いてください。いや、さすがにもう自分では書かんか。 |
|
STEP INTO Xcode っていう本を買った。これは、Mac OS X のプログラミング環境である、Xcode の解説書。OS X のプログラミング入門と、Xcode そのものの解説が含まれる。 本は 2 部構成になっている。Part I は、OS X プログラミング入門。Xcode を使った、アプリケーション開発手順が紹介されている。それほど詳しくはない。いきなり Core Data や Spotlight の解説もあって、ちょっと散漫な感じ。Part II は、Xcode の詳しい解説。プロジェクトの構成、make の書き方、スクリプトの書き方、gdb を使ったデバッグ、パフォーマンスツールの使い方、など。それほど詳しくはないかな。 Part I と Part II のページ比率は、2 対 1 ぐらい。個人的には、Part II だけで一冊書いてくれた方が嬉しかったかな。いろいろな分野を書いていて、全体的に内容が薄い感じもする。ただ、make や gdb など、他の本では見かけない情報もあるので、そこに興味がある人は見てみるといいかも。 |
|
先週の土曜日、Monalisa-au.org さんが主催した、Core Audio のプログラミングレクチャーに参加。おじゃまさせていただきました。 Core Audio は初めて使ってみた。生の波形を計算して、Core Audio API に渡してやると、おぉー、音が鳴った。正弦波やノコギリ波や矩形波が、計算して鳴らせる。楽しい。ひたすら楽しい。 昔、PC-8801FA で、PSG 音源や FM 音源で遊んでいた頃を思い出した。当時のパソコンは、安いものは PSG(または SSG)、高いものになると FM 音源が搭載されていた。簡単な BASIC で楽譜を演奏することができて、かつ FM 音源のパラメータをいじって波形を作成することができた。さらに FA では、サウンドボード II がついていて、リズム音源と PCM 音源があるのがウリ。いろいろサンプリングして遊んでいた。 今思うと、ものすごくアヴァンギャルドな環境だったな。ろくな OS も言語も無いくせに、音楽機能だけやたら豊富だった。 |
|
さらにその後、同じく Monalisa-au.org さんの主催する、Quartz 本読書会キックオフ。とりあえず、10 名前後でスタートしそうな感じ。詳しいことは、こちらを参照してください。第 1 回目は、4/9 の予定。 Quartz 本は、Mac OS X の Quartz を使った 2D グラフィックプログラミングの本。解説されている内容は、2D グラフィックの基本(アフィン変換、ベジエ曲線、色空間、テキスト、合成、マスク、など)と、それが Mac OS X でどう実現されているか、という 2 つに分かれる。どちらか片方が分かっていれば、非常に読みやすい本だ。どっちも馴染みが無い人は、きちんと取り組めば確実に力になる。 読書会がどんな雰囲気で進むかは、第 1 回目をやってみないと分からないけど、会社勤めの方も学生の方もいるので、さらっとではなく、じっくりとした感じで進むのではないかな、と予想。 興味のある方は、Monalisa-au.org さんのエントリを参照して、こっちの ML に参加してください。ただし、読書会に参加するには、Quartz 本が必須。いま Amazon をチェックしたら、9,366 円になってる。高っ!わたしが買ったときは、それより 1,000 円近く安かったのに。 |
|
シイラ mini、バージョンアップして 1.3 を出した。Universal Binary にしたので、Intel Mac でも動きます。 あと、いろんなページで表示が乱れる問題も対処した。これ、全然原因が分からなかったんだけど、調べた結果、表示した Web ページで JavaScript エラーが起きると乱れるらしい。しかし原因が分かっても解決方法が分からん。Dashboard バグか? しょうがないので、JavaScript を無効化する、という荒技で対処してしまった。JavaScript のあるページを見たい方、ごめんなさい。解決方法が分かったら、また修正します。 |
|
シイラ 1.2.2 を緊急リリース。昨日公開された、Security Update 2006-002 をインストールすると、シイラが使えなくなる問題に対応するため。どうも、履歴を管理する WebHistory 周りで何らかの変更があったようだ。 それ以外にも、細かい機能追加、修正がいくつかある。 |
|
WWDC 2006 のスケジュールが発表されてた。8/7 から 8/11。ここ近年変らずサンフランシスコで。 8 月か。例年より、ちょっと遅め?これはきっと、Leopard のプレビューをするために、遅らせてきたんだな。そう信じたい。 |
|
レイアウトが上がって来たので、黙々と校正中。 厚い・・・書き過ぎた感も。これでもいくつか書きたいものを削ったのだが。 |
|
HMDT でも先日紹介した、Programming With Quartz だけど、Monalisa-au.org さんで、「読書会をやろう」という話が出ている。おぉ、それやりたい。いい本だが、読んでると疲れるんだよ。こういうものは、読書会向きだな。 現在、参加者を集めているようなので、興味のある方はぜひ。 |
|
先日の続き。Safari の「内容をメールで送信」に反応する、ダミーアプリケーションを作ったよ、というところから。 なんか、AppleEvent が送られてきたことは分かったので、それを解析。そのアプリケーションに送られてくる AppleEvent を受け取るために、NSAppleEventManager の dispatchRawAppleEvent:withRawReply:handlerRefCon: をオーバーライドした。 しかし、ほとんど Cocoa しかやってない私は、AppleEvent は苦手。なんか分かりやすい解説は無いのかー、と探していたら、mac_prog さんの AppleEvent の解説がぴったり。Cocoa から AppleEvent を送る様子が分かりやすく説明されている。素晴らしい。ありがとう。そっかー、やっぱり Cocoa から直接 AppleEvent は投げることができなくて、AESendMessage を使うのか。 で、そのあたりの情報をもとに、Safari から送られてきた AppleEvent を解析。すると、EvnetClass が 'mail'、EventID が 'mlpg' の AppleEvent が来ていた。デスクリプタを 2 つ含んでいる。まず、キーが 'urln' で、文字列を持つデスクリプタ。この文字列は、メールのタイトルになるらしい。そして、キーが keyDirectObject ('----') で、タイプが 'tdta' のもの。これには、でかいデータが含まれている。 このでかいデータは何か?実験してみたところ、やはりあたりをつけていたように、WebArchive らしい。WebArchive オブジェクトを、data メソッドを使ってバイトにしたものらしい。 これで、ばっちりだ。試しに、これと同じものを作ってみた。
webArchive は、ページをアーカイブした WebArchive オブジェクト。_webViewTitle は、メールのタイトルになる。bundleIdChar は、メーラアプリケーションの bundle ID を表す char 文字列だ。 データを受け取る方は、これと逆の処理をすればいい。 |
|
と、いいうわけで、解析ができたので、早速これをシイラに組み込んでみた。シイラ build06003。
ページをメールで送信するための、2 つのメニューを追加した。「ページの場所をメールで送信」は、ページの URL アドレスをメールで送るためのもの。「ページの内容をメールで送信」は、ページの内容を HTML メールで送るためのものだ。いまのところ、Apple の Mail ぐらいしか対応していないんじゃないかな。 |
|
Mac Fan の 4 月号に、次世代 Web ブラウザの特集ということで、Firefox とシイラに関する特集が組まれていた。シイラには 2 ページが割かれていて、いろいろと紹介が。 事前にメールで連絡はもらっていたけど、これほど力が入っているとは思わなかったので、びっくり。だんだんと認識されてきたなぁ、ということで、うれしいです。はい。 |
|
久しぶりに、Safari ハックネタを。 Safari 2.0 から、「このページの内容をメールで送信」というメニューがある。これは、いま Safari が表示しているページを、Apple 純正の Mail でそのままの形で送れるという、強力なもの。インパクトは強い。これはどうやって実現しているのか?調べてみた。 通常、Web ブラウザからメーラを立ち上げるには、mailto スキームを含んだリンクを使う。これには、メールの宛先、タイトル、本文などを含めることができる。しかし、この「内容をメールで送信」の強力機能は、これじゃ無理だよなあ。Apple 独自仕様を使っているでしょう。 しかも、HTML の再現性は半端じゃないし。ほぼ、そのまんまだ。これはきっと、ページの URL を渡すとか、HTML を渡すとかいう、こそくな技ではないな。ずばり、Web Kit の Web アーカイブ機能を使っているだろう。これだと、HTML に加えて、画像や CSS といったすべてのリソースを渡せるからな。と、予想。 じゃ、何を渡しているか調査してみる。そのために、まず、Mail 以外のメーラで実験してみる。たとえば、GyazMail をデフォルトメーラにして実行してみると、
やはり、できない。うーむ、Apple Mail 専用機能なのか?だけど、ちょっと待て。このダイアログには、「GyazMail.app は、対応していません。」と書かれている。つまり、なんらかの方法で、メーラが Web ページ送信機能に対応しているかどうか、調査している訳か。 大概の場合、この手の情報は Info.plist に書かれている。ということで、Mail.app の Info.plist を調査。すると、「MailLinkSupported」と「MailPageSupported」というキーが見つかる。これだな。 というわけで、mailto スキームに対応し、MailLinkSupported と MailPageSupported のキーを持つダミーアプリケーションを作成。これをデフォルトメーラにして、Safari から「内容をメールで送信」を実行してみると、、、おぉっ!起動した!そして、何かが送られてきているようだ! 何が来ているのか?これは、、、AppleEvent だな!独自仕様で、アプリケーション間通信やるとしたら、それだろ。と、いうところで、続きは次回。 |