気がつけば1ヶ月ぶりの日記ですが、今日はアニメ「電脳コイル」の DVD を TSUTAYA で借りて来て、BGM 代わりにかけながら、徹夜で Cocoa Browser Air の改良作業。
Cocoa Browser Air ではこれまで、HTML で書かれた Apple の文書を、WebView 経由で DOM パーシングしてクラス名やメソッド名を取得していたのですが、libxml2 の HTMLparser で SAX パーシングするように変更しました(そのために書いたサンプルコードを Cocoa Samples にアップしています。ちょっとバグありですが、自己責任にて適当に使ってください)。
DOM は HTML のすべての木構造をメモリ上に格納してしまうので、メモリとその確保にかかる時間を喰いますが、SAX はパースしながら適宜コールバックするだけなので、メモリも時間も節約できます。WebKit はメインスレッド上でしか操作できないこともあるので、体感的にはこれで2倍くらいの高速化になります。
DOM の要素を検索して、不要な要素を取り除きながらリンクを抜き出して行く作業は、若干手間がかかるのですが、SAX だと最初から工夫しなければいけないので、ソースコードがスッキリするという効果もあります。
最近になって、「Web Services Core」とか「Collaboration Framework」とか、新しいドキュメントが追加されているので、それに追従するのがちょっと大変。
ところで、Core Graphics や Core Text など、構造体のポインタをハンドルとして使う昔ながらの関数群のリファレンスが「Opaque Type References」という名前でまとめられているのですが、これの日本語名を何としたものか思案中です。「Opaque Type(= 不透明な型)」の意味するところがちょっと不透明ですよね(ぁ。
あと残っている作業は、iPhone SDK のドキュメントのパースを SAX に移行するのと、リンクが働いていないフレームワークに対応するのと、全文検索のサポートを入れるのと。3月中に終わらせてアップする予定です。これでようやく「β版」という但し書きを取ってもいいかなと。
何を勉強するのか
まったく関係ないどうでもいい話ですが、Cocoa 関係の書籍は研究室では何冊か買ってもっていますが、自宅には1冊もありません。研究室のももう3〜4年くらい開いていませんね。それだけ Objective-C が Smalltalk 的な意味でよくオブジェクト指向しているし、その特性を活かして Cocoa が素晴らしい構成になっているということだと思います。
さらに関係ない話ですが、学生の皆さんがよく勘違いしているように見受けるのは、プログラミングが「コンピュータに何かを教える」作業だという思い込みでしょうか。私はそうではなく、ボタンを左や右に配置したり、その色を赤にしたりすることで、「ユーザの動作を制御すること」こそがプログラミングだと考えています。その視点がもてるようになると、「どうやるか (how)」でプログラミングを覚えず、「何をするのか (what)」あるいは「何故やるのか (why)」で覚えられるので、より効率的に技術が身に付く訳です。
ところで思い出していただきたいのは、たとえば「倉木麻衣の曲」にエフェクタは必ずしも必要ない、ということです。エフェクタは従属するものに過ぎません。結果がすべての「モノ作り」の世界で、技術に目を奪われると、結果として逆に技術力を失うことになるでしょう。少なくとも「プログラミング」は「科学」で扱うモノではありません。美術品や音楽をつくるのに似た「何か」だと思うのです。もちろんプログラミングする際に取り扱うことになる「情報」に関しては、「科学」と成り得る分野ですが。
コメントを書く