2004/04の Past topics

1st day

気が付いたらもう4月だよ。履修登録と健康診断にいかなあきまへん。4月馬鹿なんてやっとれまへん(理由:年中馬鹿だから)。

今年度からのカリキュラムを見たら、 C プログラミングとか Web デザインとかそれらしい名前の専門科目ができていた。そうか、高校で情報科の教育が始まったから、今年度からはちゃんとやるんだな……昨年度までに入学した人はまともな科目が無くて災難だったね……ハハハ……

前後期通してとりあえず3科目6単位だけ登録した。減らすかもしれないし増やすかもしれない。

自分で測ったら身長が 3mm 縮んでて、デジタルで計測できるやつを使ったら元通りで。

ピップ氏から、こないだのそうさく畑で確保してもらっていた「はたらくおねえさん8」を受け取る。8までくるともうはたらいてませんね

Shunsaku 君と事務の人に、こないだ書いた履歴書を添削してもらった。色々ためになる話を聞けたと思う。しかしこうして周囲がきちんと就活してるのを見ると焦るし自分の無能さがイヤになってくるなあ。

東京でしか説明会をしない企業にうっかりエントリーしてしまったこととか。 Shunsaku 君は日帰りで東京まで説明会を受けに行ったそうだけど……僕はそこまでする気力がないので、エントリーを取り消そうと思う。 mozilla.party.jp 5.0はどうしよう。就職活動の一環として行ってみようかという気になりつつあるのだけど(学割使えば電車賃も少しは安くなることに気が付いたし)。しかしこんなこと程度で職が見つかるなら苦労せんわなー。

学科教習を受けに行く途中、溜め池でカルガモ親子を目撃した。なごんだ。

高速道路の走り方とかルート検索の仕方とか。教官のトークが面白かった(そういうとこしか見てないのか自分)。

今日のよかった
履歴書を添削してもらえたこと。励ましてもらえたこと。カルガモ。

2nd day

はじめてのろじょうきょうしゅう。死ぬかと思った、もとい、殺すかと思った。そいつに触れることは死を意味するッ! これが公道にいる教習車だッ!!! みたいな。発進で4回もエンストしてしまったし。ていうか信号で止まったら即坂道発進ですか。そりゃこの教習所の卒業生は坂道発進だけ異様に上手くなるわけだ……

BS2 で小説家を見つけたらをやってたので見た。大変面白かった。

XML ベースの。

Kambe さんが紹介されている MXML と XAML と XUL の比較を、補足も交えつつ勝手に日本語で書いてみた。

MXML XAML XUL
出自 Macromedia Flex Microsoft .Net Framework Mozilla
いつから使える? 今すぐ使えます。 2006? 2007? いつになることやら…… 今すぐ使えて、いくらか実績もあります。
どんな環境で動く? Flash Player 7が動く環境なら。 Longhorn (次期 Windows )でしか動きません。 どんなプラットフォームでも動くし、 .Net のランタイムよりも小さいです。
サーバは必要? 必要。 いりません。 いりません。
挙動は何で記述すれば? ActionScript 2.0で。 .Net の言語 (Java でも Managed C++ でも C# でも VB.Net でも Perl.Net でも COBOL.Net でも……)で。 Javascript か Python か C++ で。
XPath は使える? 使えません。 使えます。 使えます。
CSS での表示変更は? 限定的ながら可。 CSS なんて知りません。 バリバリ可。

この表だけ見ると XUL いいじゃんって話になりそうだけど、そりゃ表を作ったのがオープンソース者だからで、実際には表には出てきてないところで XUL にはデメリットがたくさんあるんだな。他の二者は普及してる・するのが見込めるけど XUL は……とか、それゆえ技術資料が少ないとか、仕様が流動的とか、 XUL は GUI しか作れないけど XAML ・ MXML は応用範囲が広い( Oka 氏による簡単な解説を参照のこと)とか。

どーでもいいけど、 C# って「シー・シャープ」という名前の割にオフィシャルですら「♯(シャープ)」ではなく「 # (ハッシュ、ナンバー、ポンド)」

今日のよかった
小説家を見つけたら。

3rd day

いつの間にかカウンタが888888を通過してた。くう、見たかったなあ。

バイト先の S さんから旅行(?)のおみやげを頂いてしまった。チョコレートカステラ。

高校の先輩達と大阪城公園で花見というか宴会というか。家からエッチラオッチラ鍋セットを運んでみたり、でも使い道は結局カップ麺の湯を沸かすだけだったり、せっかく大鍋なんだからということで各種カップ麺をブチ込んでミックスしてみたり、アル×エドにおいてアルの頭のツノをエドの(略)というのはさすがにどうよ?とか、とてもとてもこんなところには恐れ多くて書けないようなミダラな(というかアホな)話とか、下でそんな腐女子トークを繰り広げられたらそりゃあ桜もモリモリ散るわとか、色々ありましたが、楽しかったと思いますよ。

今日のよかった
もらいもの。花見。

4th day

TBE の内容整理のためにとりあえずタブのプログレスリスナーを書き直した。といっても処理内容は変わっていなくて、一つの関数の中でドコドコ書いてたものを分割して処理の流れを見やすくしただけだけど。

今日は応急救護の教習を。

今日は散髪を。カラーリングで傷んでいた髪はすっかりなくなってしまいました。

ちょっと前まで話題になってた株式会社 W ェディングの系列会社のマリー J ュノから電話がかかってきました。親が取り次いだのだけれど「京都の○○(聞き覚えのない個人の名字)」と名乗っていたらしいので話を聞く前からピンと来た。すぐ切ってしまわずにいい機会と考えて株式会社ウェ D ィング体験をしてみた方が良かっただろうか? ……いや、やはりすぐ切って正解だったろう。僕は他人に騙されやすい愚かな人間なので、首を突っ込んだりしたらミイラ取りがミイラになっていたところだ。

昨日もらったチョコレートカステラを食べてみた。チョコレートケーキ……のようにも感じたけど、風味はカステラなんだね。不思議なお菓子だと思った。

mozilla.party.jp 5.0 でなんか喋ってやというお誘いを昨日正式に受けたのだけれど、隅の方にパネリストとしてちょこんと座って無責任にコメントを投げてたらいいのかなと思ってたら、30分くらい時間やるから一人でなんかプレゼンせえよというお話だった。ぎえ。マジデスカ。こんな開発者にもユーザーにも嫌われてるプログラミングのド素人の駄目ヲタを捕まえていったい何を喋れと。というわけで、「こんな内容について喋れや」みたいなリクエストがありましたら一つよろしくお願いします。 ALL

自分が勝手にやってることについて、相手に積極的なコミットを求めることが既に傲慢なんですよね。相手に協力の義務はないのだから。それを「俺のすることに不満があるなら当然○○するべきだ、しないのなら文句を語る資格なし(何もしないなら黙ってろ)!」と自分で言っちゃあ駄目ですよ。「あんたのためにもなるんだから、ちょっとぐらいの不利益は我慢するのが当然だろ」とかそういうことを云うのもそう。仮に言葉で言ってなくても、そういう態度は言外からにじみ出てくる気がする。言ってることが正当かどうかを議論する以前の段階の、そういうところで「傲慢な運動家」っぷりが目に付くから、僕は傲慢な運動家が嫌いだ。――共産党のこういう所が気に食わん、と僕が言った時の母の反応に対して考えたことなのだけれど、なんだか自分に対して言ってることのようでもあるなァ

今日のよかった
チョコカステラうまい。

5th day

XUL 云々について語るための材料にしようと思って改めて自分のコンピュータ歴とプログラミング歴をふりかえっているところ。その途中、中学時代に N88BASIC を学んだ時のイッコ上の先輩のことを思い出して、ある意味ではあの先輩がいなかったら今の僕もないよなと思いながら本名で検索してみたら、どうやらそれらしいのがヒットした。猫瀬総合研究所……プロフィールに書かれてる内容がことごとく僕の記憶してるその先輩と一致しているので、当たりに極めて近いと言わざるを得ない。中学生にして C 言語で表計算プログラムを作って賞を貰っていたような人だったのだけれど、やはりそっち系の仕事に就かれたということなのか?

<field name="foobar"><![CDATA[ ({ prop : value }) ]]></field> と書くことで XBL 中でもオブジェクトリテラルでプロパティを定義できる、というのを利用して、 addTabInternal()removeTabInternal() の中身を細かく分割してみた。昨日書いたプログレスリスナーのリライトも要はこういうこと。タブを開く・閉じる時の処理の流れが圧倒的に見やすくなったので、第三者による改造も比較的容易になったのではないかと思います。思うだけ。

朝も早よからイトコを迎えに駅まで……

今日は大学のサークルでお花見さ。といっても場所はこないだと同じ大阪城公園……当初は神戸寄りの場所で予定してたそうだけど、声をかけたら大阪の方が近い人が何人も参加を表明したためこっちになったんだとさ。

青テントと枝ばかりの木に囲まれた空気の寒い場所に陣取ってみたり。日が暮れると寒さの質がまた一段とレベルアップして。

……公園でピザの出前ができるものなのですか。知りませんでしたよ。

雨がぱらついてきたような気がしたので適当なところで切り上げて、後はカラオケで2時間。山口百恵や沢田研二など歌ってみました(まあ憶えたのは松本プロデュースのアレとかでなんだけど)。

ヤフオクで落札した AH-1S コブラ(シャークマウス&冬季迷彩)が無事に届いた。出品者の方が親切な方でとても好印象。今後のアドバイスまで頂いてしまったし。でもコブラは組み立てる時にいきなり壊しちまいました ローターって奥まで差し込まないんですね……ウッカリ力を入れてポッキリ逝ってしまいましたよ。細い軸の真ん中に根性で 0.5mm 径の穴を開けて真鍮線で繋ぎ直しましたが。

超合金アシモいいなあ。いや、アシモがというか、スーパーの袋を下げてアイボと帰り道を行くショットが萌える。

今日のよかった
花見。雑談。カラオケ。ヤフオク(コブラ)。

6th day

二回目の路上教習。いつもと違う指導教官で緊張したけれど、反面、いつもの教官では指摘してくれないことを指摘してくれたりしたのは有り難かった。一人の教官に専任してもらうというのも考え物かもなと思った。

国民年金の「学生だから払うの待ってくれ」手続きを済ませてきた。しかし来年から納めるかどうかは正直なところ決めかねている踏み倒すかどうか悩んでいる。日本に暮らす高齢者の生活を支えるために(将来の自分のために、ではなく)出資するのは全くやぶさかでないのだけれど、納めた金がそれ以外のことに国民年金の運用目的から外れたところにジャブジャブ使われることなどが納得できないから。役所の職員に中間マージンを抜かれるくらいなら、目的を見失った団体に金だけ預けるくらいなら、自分で直接祖父や祖母に仕送りした方がまだマシなんじゃなかろうかと思う。

昨日の花見の時に J 君から「明日発売だ」と聞いていたので、帰りに賭博破戒録カイジ 13(Amazon.co.jp) を買った。本誌連載は既に終了していて、結局は負けた……みたいなことを風の噂で聞いていたのでどういう結末になってるのか気になってたんだけど、いやあ、終わったなあ。うん、見事に終わった

GPL とか MPL とか BSD ライセンスとか世の中には色々あるけど違いが分かんネーヨ!! という人の救いになるかもしれない、各ライセンスの相違点のまとめ。いやあ、こういうのが欲しかったんですよ。

二つくらい続けて夢を見て、その内容がどっちも「アイデアのストックに入れておきたい!」と思えるような内容で、でも目が覚めた時にはどんなに頑張っても最初の方の夢の内容が思い出せず、まどろんだ状態で記憶をたぐってようやく一箇所だけ思い出すことができて、でも思い出せた内容は後から見てみたら全然大した事なくて、それを思い出そうとしていた間に後半の夢の内容をすっかり忘れてしまった、という時ほど「ああァァァ〜、もうッ!!!」と思う時はない。

今日のよかった
カイジ。

7th day

3回目の路上教習……に出ようとしたところで事故りました 現場はいわゆる「視界の悪い交差点」。発進しようとしたところで、横の道から飛び出した自転車と接触。 その時間の教習はもちろんお終いになったのだけれど……双方共に怪我無しの物損無しで、お咎めは無しだった(まあ、仮免だと責任は指導員持ちだし……)。見通しの悪い交差点では鼻先を突き出してこちらの存在をアピールすること、周囲の状況の確認を一瞬たりとも怠らないこと、こちらから謝らないこと(……いや、その、教官がそう言ったんですよ?)、事故ると本気で思考が止まるよね、路上での運転はいつも生きるか死ぬかの真剣勝負だ、とかの教訓を得たのでした。

で、次の時間の教習は何事もなかったかのように始まるのでした。そんなんでいいのか? 石河氏にこの事をメールしたら、日記見てて前から思ててんけどあんさんの教習所って甘々なんとちゃいまっか、ていうか極悪教官?(意訳)というコメントが返ってきた。まあそのなんといいますか、「交通事故ワースト1位の大阪」の名は伊達じゃないということでしょうか。そういう問題じゃない?

教習所周辺は坂道ばかりで、夕方ともなると交通量も多く、したくもないのに信号待ちや渋滞で坂道発進の連続で。この教習所の卒業生は坂道発進だけは異様に上手くなるという風評もさもありなんだと改めて思った。なんか前にもそんなことを書き記した気がするけれど。

Ctrl(Command)- 数字(1〜9)で1番目から9番目までの各タブに一発でフォーカスするという Firefox の機能について、数が多くなってくると目的のタブが何番目かを数えるのが大変なのでどうにかならんかみたいな要望があった。それって僕の仕事じゃない気もするんですが……でも、タブがらみの案件だし、 TBE の「タブの並べ替え」の影響を受けるはずでもあるし、ということで TBE の拡張モジュールとして作ってみました。Ctrl(Command) キーを押すとタブの下に番号が出ます。画面外のタブについてはラベルも表示します。ただ、 TBE 側の拡張モジュール受け入れ部分を修正しなければならなかったので、残念ながら TBE 本体を更新するまではこの拡張モジュールは公開できません。

風邪ひいたみたい……

今日のよかった
交通事故の経験。

8th day

公用車で靖国神社に参拝に行っていても公の場で「私的な参拝だ、何故文句を言われるのか分からない」と言える小泉首相って、ある意味すごいねと思った。

とりあえず今日は事故らずに終われました。

「ココが知りたい」について意見が集まるまで、 XUL コンテスト用の資料を作りつつ。

鼻づまりで頭に酸素がいかず辛い。

ココが知りたい XUL

mozilla.party.jp 5.0 でお話しする内容は、網羅的な「 XUL アプリ作成入門」ではなく「皆さんが特に知りたいと思う点」についてちょこちょこ解説を加えていくような感じにしようと思っています。というわけで、「自分はこういう点について知りたい」「ココが分からん」というような点がありましたら教えて頂けると嬉しいです(人気の高いところから順に採り上げていくつもりです)。

今のところ思い付いたり耳に入ったりしているのは、以下のような点。

  • XUL の良いところは何? 悪いところは?
  • XUL を使って何が作れる? 実例はどんなものがある?
  • Web サービスで使う XUL ……どんな機能があって、どう使うのか?
  • 今までの XUL アプリケーション開発で苦労した点
  • 今後の XUL の展開の可能性
  • 配布にあたってのライセンス…… GPL/LGPL/MPL って何? それにしないといけないの?
  • XAML ( Longhorn )や MXML ( Macromedia Flex )との違いは?

XUL についての一般的な話ではなく、拙作 XUL アプリについてのもっと突っ込んだ話の方がいいという声もあり。

  • タブブラウザ拡張(他の拡張機能でも可)は XUL のどんな機能を使っているか
  • 開発を通じて気づいた XUL の長所、短所
  • 海外からの反響
  • 今後の開発予定

そもそも XUL って何やねん……ということについては多分一番最初に話す(おおよそ XUL のページの紹介文まんまでいくつもり)と思うので、それ以外について、ここに挙げた中に「知りたい」と思うものがあればそれを、なければ具体的にコレが知りたいという内容を、掲示板やメールで教えて下さいまし。何も意見がもらえないと、僕が独断と偏見と好みで適当にチョイスしてしまいますので、「話を聞いてもサッパリわからんかった……」という方が続出するかもしれず。

今日のよかった
事故らなかったこと。

9th day

こ〜こはど〜この箱庭じゃ?……誤解の無いように書いておくと、これは Web サイトの形をしたゲーム。

某 A さんのエロゲークリエイター体験記が完結した。カイジのようには世の中いかないもの。

拙作 XUL アプリのインストールで詰まった人の悲惨な体験談(ちなみに、この人が詰まった問題の根本的な解決策は今年3月になるまでわからなかった)。これに限らず、便利にしたいんだと言っては「軽い Firefox 」を「クソ重い TBE のプラットフォーム」にしてしまっていたり、バグだらけの拡張機能をばらまき bugzilla に TBE のバグについての報告というノイズを増やしてデバッグ作業を邪魔していたりと、貢献するつもりで却って関係者に憎まれるようなことばかりしていると言えよう。そう思うと、 mozilla.party.jp 5.0で喋ったりなんかしたら刺されるんじゃないだろうかとか思えてくる。思うだけ。

今日も無事故で。ていうかそんな毎回事故してらんないですよ? 一時間目はいつもと違う教官。もっと気楽にいこうやということで色々雑談をしながらの運転だったのだけれど……無事教習所まで帰り着けて薄ら寒さを感じた。こんなに不注意で、話に気を取られていても、運転というのはできるものなのか。これでは気がゆるむのも当たり前だ。二時間目はいつもの教官。しかし何故か知らないけれど後ろに若い女の教官が同乗。ホントに何故なんだろう。

風邪気味で熱っぽく頭がボーッとしていて、とても XUL コンテストエントリー用の資料なんて書けない。結局、昨日と今日の二日間をかけて Ez Sidebar & Sidebar Window の解説ひとつすら完成できなかった。鬱だ。

クラリネットの講習会に参加するためにうちに来ていたイトコが帰った。帰る前にこっちで今日のオーケストラに参加して演奏したそうなんだけど、僕には行く時間がなかった。時間があっても、行くのは微妙にためらわれるのだけれど。だって自分がみすぼらしく思えるだけですから……

今日のよかった
無事故。

10th day

Ez SidebarSidebar Window を地味に更新した。 Seamonkey で What's Related などのパネルがちゃんと動作するようになった。はず。あと、 Firefox の実装に倣って、 Seamonkey でもパネルとして登録したページの中のリンクをデフォルトでブラウザの方に読み込むような機能を加えてみた。

鼻とノドの間あたりに鼻水が溜まっているようで、かんでも出てこなくて辛い。なんていうか、こう、頭を唐竹割の勢いで真っ二つに割って開いて、歯医者の使う小さな掃除機みたいな吸い取り口でずぞぞぞぞとキレーに掃除したい気分です。

イラクの法人誘拐事件の件については、見識が狭いため有用なコメントはできませんので、少なくとも今の段階では何も書かない方向で。

ビット

ビット演算おもろい。わざわざオブジェクトを使わなくても、単純なブール値のフラグなら複数個を同時に渡せるのか。速度的にはどうなんだろう。やっぱりビット演算の方が高速なんだろうか? 以下、僕以外の人にとっては常識の、情報学の基礎知識のメモ。

例えば、キーを押した時のモディファイアを表す4つのフラグ、 ctrlKey shiftKey altKey metaKey のどれが押されていてどれが押されていないかを示す方法はどうなるか。まず4つのキーにそれぞれ数値を割り当ててみる。

フラグ名 値(10進数表記) 値(2進数表記)
ctrlKey 1 0001
shiftKey 2 0010
altKey 4 0100
metaKey 8 1000

10進数で2倍になると、2進数では桁が一つ上がるというのがポイント。表で見てみるとよく分かるけれど、このとき、2進数で「1」のある位置は4つのフラグ全てで異なっている。

で、これをいくつか足し合わせてみるとどうなるか。

フラグ名 値(10進数表記) 値(2進数表記)
ctrlKey+shiftKey 1+2=3 0001+0010=0011
altKey+shiftKey 4+2=6 0100+0010=0110
ctrlKey+shiftKey+altKey 1+2+4=7 0001+0010+0100=0111
ctrlKey+metaKey 1+8=9 0001+1000=1001

計算結果を2進数で見てみると、まるで4つのスイッチを付けたり消したりしているようにも見える。ということは、これをどうにかすればこの数値から4つのスイッチそれぞれの状態を取り出せるハズ。計算結果のたった一つの数値に4つもの情報が含まれているんですな。なんか手品か魔法みたいだ。

ちなみに、 JavaScript ではここから「それぞれのスイッチの状態」を取り出すのに &(AND) 演算子を使う。例えば value = ctrlKey+shiftKey+altKey の時、足し算した値の中に「 ctrlKey 」が含まれているかどうかを「 value 」から調べたければ value & ctrlKey と書く。すると、この論理式の演算結果は value(=0111) と ctrlKey(=0001) のそれぞれの2進数表記で「1」が重なった部分の合計になる。この場合は「1」。逆に、その値が含まれていない時、例えば value & metaKey と書いた場合は、 value(=0111) と metaKey(=1000) の2進数表記で「1」が全く重ならないため、重なった部分の合計つまり0が演算結果となる。こんな風に、 AND 演算の結果が0であるかそうでないかを見れば、数値の中から「スイッチの状態」を取り出せるワケです。

今日のよかった
ビット演算。

11th day

先生!  XUL コンテスト用に用意しつつある拙作 XUL アプリの解説で「アフォーダンス特性」なんて単語が飛び出してきましたよ! なんだか激しく「やりすぎ」な気がします。そしてどうでもいいことですがこの「括弧」の使い方は激しく「荒木飛呂彦的」な気がします。

自宅の環境だとついつい遊んでしまって仕事が進まないね……

NHK の火の鳥はやっぱりなんか違和感が……グズリがいい人になってるあたりが特に。

画像の無断転載っていうかとくほたん流に言うと参照っていうか、ともかく、某ファン絵の壁紙バージョン画像がよそのサイトの背景画像として直接読み込まれていて鬱。通報して下さった方、ありがとうございます。どうやら相手方は、この手の行為を繰り返してはサイトを放置・移転を繰り返していてその筋では有名らしく、メールボム回避のためかメールアドレスが公開されていないなど、ある意味対策は万全というか何というか。仕方がないので先方の荒れ放題の掲示板を使って連絡を取らざるを得ませんでした。いきなりウンコだのグロだのの画像に差し替えて報復措置に出ることもそりゃ可能なんですが、とりあえずもうしばらくは様子を見ることにしたいと思います。

今日のよかった
通報があったこと。自作アプリの解説にもっともらしい言葉が浮かんだこと。

12th day

今日は朝から昼から教習ばかりです。観察教習の直後、同じコースを複数人で引き継ぎつつ運転し、問題点についてディスカッションするという具合だったんですが……僕以外の2人ともソツのない運転で僕の下手糞さ加減が改めて強調され、ものすげえ凹んだ次第です。ミスの指摘(右折で躊躇した。カーブミラーが見えないところまで行き過ぎた。)があったのははっきり言って僕だけだったし。それでいて指導教官の冗談などにヘラヘラしているのも僕だけだったりするから、これはもう、何かが決定的に駄目だと言わざるを得まい。

昼休憩を挟んでの教習もまた複数人でのもの。今度は路上での停車の練習だ。同乗者2人のうち1人はさっきの教習でも一緒だった人で、また駄目さ加減を思い知らされると思うと気が滅入りまくりだったのだけれど……もう1人はエンストするわブレーキングきついわとなかなかの運転で少し安心した。第二段階のここまで進んで路上でエンストするのは僕だけじゃなかったんですね。

静電気でホコリを吸着するあのぽわぽわ……まあビニール紐を解いたり割いたりすりゃ自分で作れそうなモンなんですが……買ってきたというかポイントのみの精算で入手した。何故こんなものを、というと、部屋に置いてるガンダムやらわたおにやらにホコリが溜まってしょうがないから。そして実践。うおお、こりゃキモチイイ。鬱陶しいホコリがズンドコ取れるのみならず、これで拭ったところは静電気が失われるのか何なのか、しばらくホコリが積もらないという付加効果もあったりしますか? いやホント快感だわ。

今の今まで家族の誰も気付いていなかった事実……テレホーダイの解約を忘れていたせいで2万くらいはムダに持ってかれていたようです……なんで誰も気付かないんだよ……っていうか明細くらい毎月見ようよ両親……

今日のよかった
指導教員だけでなく他の教習生の人からも色々な意見を頂けたこと。静電気。

13th day

夜行バスは学割使用だと東京までの往復で13000円ですか。安っ……!! しかも京阪バスは学割で券を買うのに学割証明要らないって……せっかくプリントしてきたのに、なんだかな……

TreeWalker って意外と高速なんだな、っていうか Mozilla の JavaScript エンジンの for ループ・ while ループは異様に遅すぎるんだな、とか思った。

T 君が一身上の都合でサークルを退会した。……って現会長が辞任ですか?! ヤバいよ役員が定員割れだよ。今後とも発展させていきたいと思っているという心強い答えをくれた現副会長、いきなり窮地だよ。まあ頑張ってくれたまえ(他人事のように)。

24k 君にレオパルドンの 3rd アブラムが出ていることを知らされ、さらに Weblog までやってることを知った。裸の大将、 Naked General ……か。

XUL/Migemo

11日、 XUL/Migemo のビューポート(現在見えている範囲)からの検索機能を実現するために送りつけたパッチが深刻な速度低下を引き起こしているという報せが……原因は明らかに、 TreeWalker でページの頭から全ての要素ノードについて「ビューポートに入っているかどうか」のチェックを馬鹿正直に行っている部分。テキストだけで 500KB に達するようなページで下部までスクロールしていると、マジで使い物になりません。致命的。

そんなわけで、一昨日昨日今日と延々試行錯誤を繰り返していた。自分で蒔いた種だし、自分のしたことがユーザーだけでなく plus7 氏にとっても迷惑になっているから、というのが口実。何か一つ目の前に注意を引くタスクがあると他のことが全部後回しになってしまう――僕が社会不適合者である決定的な点だと思います。閑話休題。

一昨日と昨日は、 nsIAccessiblegetChildAtPoint() で画面上のノードをピクセル指定で取得するという方法を使って高速化できないかと無い知恵絞って無駄な足掻きをしていた。しかし、ノードの画面上の表示順と文書順とが必ずしも一致しないという点に引っかかり却って十倍以上遅くなったりと散々だった。どう考えてもこれしかないと思うんだけどなあ……馬鹿な僕ではやはり駄目だよ……

そんな慣れないことをして頭を使って知恵熱を出す羽目に陥ったのは、「最初に見えているノード」を取得するために Find As You Type で使われている処理のしていることがまるで理解できていなかったから。なに?  frame ? ビューポートから直接「表示している最初のノード」が得られるの? でも nsPresShell とか XPConnect では触れない部分をバリバリ呼び出してるじゃあないですか……ということでああでもないこうでもないと試行錯誤を繰り返し、その中で前述の nsIAccessible の機能の存在も知ったワケなのだけれど。しかしこれがまるで見当はずれだったという哀しいオチ。 nsIFrame ってビューポートだとか HTML のフレームとかのことではなく、単にレンダリングのときのワク、 JavaScript で触れる範囲で言えば nsIBoxObject みたいな、そういうもののことだったんですな。なんてこった。

ここで行われていたことの実態が実は僕が TreeWalker を使って書いたものと基本的には同じであるということも分かった。ぬう。ネイティブコードとインタープリタ上のコードとでここまで差が出るということを見せつけられて絶望せずにはいられません。しかし嘆いてばかりもいられないので、とりあえず暫定的な措置として、 TreeWalker の NodeFilter の処理を削れるところまで削って無駄をなくしてみたり、最後にヒットした「最初に見えているノード」をキャッシュしておいて同じ流れでの検索時のタイムラグをなくしてみたりと、姑息な手で高速化を試みてみた。最終的には、当方環境だと 500KB くらいのページで最下部に TreeWalker がたどり着くまで1秒強というところまでは来れたようです。そしてもうこれ以上は僕の凡才脳味噌ではどうにもなりません……

XUL プレゼン

U 助教授に例の XUL に関するプレゼンの件についてご意見を伺ってみた。プログラミングはできるけれど XUL については知らない・ Mozilla についてもあまり知らない(使ったことはある)という人にとって、もし聞くとしたらどういうところの話を聞きたいと思うだろうか、ということで。各種言語に精通している U 助教授ならではの興味深い話を色々と聞くことができた。というか2時間もダラダラと拘束して申し訳ありません。

  • Mozilla は知って・使っていても XUL の存在自体を知らないという人の方が多そう( U 助教授は Google Toolbar を導入するにあたって初めて XUL という語を目にしたそうな……)
  • アプリケーションの対話的な開発が可能
  • ( VisualBasic 等の統合環境を使わなくても)直感的な記述で GUI を簡単に作れる
  • Donut や Sleipnir や MyIE2 のようにガワ全部を自分で作ってコンパイルしなくともブラウザの GUI を簡単にいじくれるのはプログラマとしては未体験の世界だ
  • それならば公明ブラウザやなんかのようなカスタマイズ版ブラウザを作るのも公開するのも敷居が大きく下がるだろう
  • btm 氏のカップラーメンタイマーのような部品も記述も少ないごくシンプルな例を持ち出してソースコードを例示した方がいい
  • 配付資料があった方がいいだろう

そうか……プログラムを知っている人にとっては、ガワは簡単には変えられないのが当たり前なんだなあ。僕は N88BASIC の「 GUI てナニ?」な世界からブランクを挟んで「 UI は HTML 」な JavaScript を経由し XUL アプリケーションに至ったという非プログラマな人間なので、他の言語で GUI をどういう風に書くものなのか知らなかったのだけれど、 Google で検索していて見つけた XUL と Java ネイティブでの「メニュー項目」の作り方の比較(リンク先は Java 用の XUL ツールキット「 Luxor 」のサイト。 XUL はべつに Mozilla 専用ではないという実例にこんなところで出会えたのは幸運だ。これも話のネタになりそう。)みたいな感じなのか。こんなハードコーディングに近い作り方、信じられん……って拙作 XUL アプリの中でも部分的にそういう方法をとっているところがあるのだけれど。でも全部それで作らなあかんのは勘弁願いたいなと思う。

どうでもいいと言えばどうでもいいのだけれど、実際見てもらおうということで研究室の Mac OS X マシンの Mozilla 1.6に Sidebar Window を導入してみたら……なんか Sidebar 表示中は全然メインウィンドウに触れないし  openDialog() でフラグに dialog=yes 指定があるのがマズいんだろうか? とりあえずダイアログではなく通常のウィンドウとして表示するように指定を変えてみたので、 Mac OS X ユーザーの方でどなたか検証して頂けると大変嬉しいのですが。

今日のよかった
U 助教授の客観的なご意見を聞けたこと。 Mac OS X 上で起こっていた問題について知れたこと。レオパルドン 3rd アブラムの報。

14th day

11日の分に書いた画像直リンサイトは先ほどアクセスしたら消滅(404)してました。

スレ荒れまくりですね。こうなるのは Mozilla そのもののせいなのか、周辺の支持者の素行のせいなのか。まあ、有志でやってるだけなのにあれしろこれしろとまるで対価を払っている顧客であるかのような要求ばかり寄せられたりしたら、心が荒むのも分からないではないのですけれど。八つ当たりイクナイ。

GANTZ の「ガンツ」は何か裏の意図があって名付けられているのかと思っていたけれど、ロボコンのガンツ先生が元ネタなのか。知らんかった。っていうかロボコン自体を。

XUL コンテストにエントリーしたいという旨のメールを送信した。ついでに、 btm 氏の小セッションがどんな内容になるのか探りを入れてみたりも。いや、だって、同じ内容ばかり1時間連続で聞かされたら、聞く方も飽きるでしょうし。内容が被るのだけは避けたいので。

ご助言が。僕は極度のアガリ性なため原稿を用意していったところで書いてもいないことを口走る可能性が絶大なので、原稿よりも喋るべき要点のメモとか口走る時用の資料とかを持って行った方がいいだろうなとは思ってました。

今までわざと考えなかったのかも知れないけれど、主要なセッションが終わった途端に来場者がどっと減ってガラガラの部屋で2〜3人相手に喋るという状況も、あり得るというか、なんか現在の周囲の冷めきりっぷりからするとその可能性が高いんじゃないかという気もしている。

レイキャシ……もとい、綾波

角川の通販で申し込んでいたエヴァンゲリオン 9Amazon.co.jp )が届いた。目当てはもちろん浅井真紀氏によるフル可動綾波ですが。

立ち姿(写真:交差法で立体視可能)おすわり(写真)おすわり別角度ショット(正面)。現物はやたらちいちゃくて驚いた。直立時で12センチ足らずというのはまあ1/144ガンプラよりちょっと背が低いかなという程度なんですが、ガンダムと違って細いですから、その小ささが際立ちます。レイ・キャシールはこれよりまだ小さいというのか……もうほんとに匠の技ですな。

興味深い可動の仕込まれ方で、これがなかなかよく動く。バックドロップなんかもできちゃいます(写真)。腰周辺のラインが崩れなくて済むように、腰ではなく胸のところでひねるようになってるというのは面白いです。あと、モモの所にボールジョイントがあるおかげで微妙になまめかしいポーズも自然にとれます。お座り状態で両足がピシッと揃うのは見物。ヒザから爪先にかけてのラインがきれいなのも相まって物凄く見栄えしますね。

製品の顔はなんか微妙にスッピンぽい(=かわいくない)感じだったので、マスカラで化粧する感じで睫毛を描き足してみたりしました(アップ写真)。それから、ポーズを付けた時に特にはボールジョイントの間接部分の隙間が特に目立つので、ガンプラの要領で装甲(違)内側をグレーに塗ったりしてみています。胸と胴の間の大きな隙間も、こうしておくと影ができるのであまり目立たない……かな?

今日のよかった
フル可動綾波。

15th day

XUL に関するプレゼンテーションはもう思ったこと全部をしゃべれるとはハナから思っていないので、しゃべるための材料をまとめるという観点から、しゃべりたかったことの全てを文章にしてみているのだけれど……なんかまだ途中なのに 30KB 近くになってる。こんなの絶対しゃべりきれねっつーの。あとはどこをカットしていくかがポイントだなあ。

参考サイトをリストアップしてみて、日本語の XUL 関連情報のあまりの少なさに改めて愕然としてみたり。ああもうお先真っ暗……

「あちらこちらで盛り上がっているようなので僕も調子に乗って他人様のキャラを描こうと思ったらエロい絵を描いてしまった。かっとなってやった。悪気はなかった。今では反省している。」まあ賢明な読者なら画像の URI は想像が付くかとは思いますが。キャラの元作者様にはこれは見せられんなあと思った。プレゼン考えなきゃいけないこんなギリギリの段階で5時間もかけて何やってんだろ自分……

今日のよかった
XAML 、 MXML についての理解が少しだけ深まったこと(使い方ではなく、どういうものかが)。

16th day

綾波はデフォルトだとシートと体が固定されないため、お座りポーズを取らせてもずり落ちてくるのが哀しい。というわけで固定ピンをはやしてみた。シートから2本、 0.5mm の真鍮線を飛び出させてます。綾波本体の方は、バックパック左右のスリットの上端に目立たないように穴を開けてあります。(写真)ポーズが限定されてしまうけれど、まあ、両面テープでベトつくのよりはマシかなと。

極めてどうでもいいことだが、レッサーパンダ( Firefox )のしっぽは横縞だ……

草稿から、要点をまとめたメモへ。しかしやっぱり内容が多すぎる。どこを削るべきか。 XAML とかとの比較は外せないよなあ。 XUL の特徴の解説も外せないし。体験談も捨てがたい。喋る内容、喋れなかったということになるであろう内容、全てひっくるめた資料をあとから公開することはもはや避けられないか。

ちうかですね。僕に喋れる内容なんてどうせ僕の知ってる範囲のことでしかないのですから、多分期待には応えられない。メモをまとめて、そのことをより強く意識してきた。

友人達からにこやかに絶縁宣言を叩き付けられる夢を見た。よーしわかった俺に任せときなフンフン♪みたいに鼻息荒く席を外して、帰ってきたら「ごめんなー、今おらんかったやつは参加させれへんねん」。皆、顔はにこやかだけれど目が笑ってない。やっと仕留めたぜ、してやったりだ、みたいな目をしている。僕はといえば、「ああそう、せいぜい頑張ってくれよ」と皮肉を言って立ち去ることしかできず。思い上がること、のけ者にされること、仲良しと思っていて実は嫌われてたということ、そのような事態に際して大人な対処ができないこと、という4つの「一番イヤなこと」、恐怖が詰まった夢だった。非常に鬱。

卒業制作の説明を聞くために研究室に集合。鍵をもらった。割と自由に使えるらしい Mac OS X マシンがあったので、これからは Mac OS X 上でしか起こっていなかった問題の原因究明がはかどるかも知れない。とりあえずこないだの「ブラウザに触れない」問題は Sidebar が最前面表示になっていたせいだった。 Mac OS X では最前面表示のウィンドウとはモーダルウィンドウのことになるのか。

Shunsaku 君が内定を獲得したそうだ。めでたいな。つかあんた勝ち組や……(←努力をしない奴に限って勝ち組負け組という言葉を使う) そんな Shunsaku 君にプレゼンの草稿の添削というか切るべきポイントのアドバイスをもらった。ほんに有り難いこってす。

帰りのバスに乗ろうとしたら、 JR で人身事故発生だって……まあバスの運行には影響せんのですけど。怖いこっちゃ。

駅の出店(?)で何故かさーたーあんだぎーを買った。

今日のよかった
ギリギリでバイトに間に合ったこと。 Shunsaku 君の協力を得られたこと。

17th day

何とかプレゼンテーションはできた。でも配付資料がまだ手つかず……

幸いにも(?)お客さんのいない日だったので、朝から作業に時間を充てることができた。うわぁなんて不良バイトだ。でまあ、集中してやれたおかげで午前中にはほぼ全ての資料をまとめることができまして。自宅じゃ仕事進まんのか、とちょっと哀しくなった今日この頃です。

バイト先で洗い出したプレゼンテーションの問題点を手直ししたり、飯食ったり、シャワー浴びたり、などとしていたら夜行バスの時間が迫ってきた。日記(これ)を更新する間もなく出発ですよ。

夜行バスは初めて乗るのだけれど、これは結構いいんじゃないかなと思った。青春18切符で昼間に移動するとせっかくの活動時間を移動だけで潰してしまうけれど、これなら時間を有効利用できる。

今日のよかった
作業がはかどったこと

18th day

東京着。首が痛い……前の席の人が枕を使ってたけど、あれは入手しておくべきだと思った。あとエコノミークラス症候群になりそうだった。夜行バスも考え物だ(昨日付の記事と結論が変わってるよ)。

新宿駅のトイレでヒゲを剃ったり歯を磨いたりした。ホントはこういう使い方はしちゃいかんのだろうなあ。

とにかく色々なことがあった一日だった。これから先全部下り坂だと確信できるほど充実した日だった。

ショッピング

東京着が6時半で、もじら組のイベントまではいくら何でも時間がありすぎるということで、あらかじめ約束していた通り池袋で飛鳥と待ち合わせ。某英単語帳を渡すために。あと池袋の観光(?)案内。しかし現地で向こうは思いっきりこっちに気付いてくれなくてしょぼーん。まあスーツにネクタイだから無理もないけどさあ。

落ち合った時刻の段階ではホントにまだまだどこの店も開いてなかったので、ドトールで2時間ほど人生について語り合ってみたりした。なんなんですかこの2人組は。

飛鳥に「そのサイフはあり得ない。自分が採用担当ならそのサイフで落とす。」とまで言われてしまったので西友でショッピングですよ。色々あった中から税込み9450円のものを選んだ。しかし一番安かったのが6000円くらいで、ここで2番目に安い奴を選んでしまうところがまさに僕の心の贅肉だっ……! と思った。

そのあとはとりあえず東急ハンズでウィンドウショッピング。最近の食玩市場はすげえなあとか JASON X のジェイソンはあり得ないねえとかキキ(魔女の宅急便)のパンツがのぞけねえとか駄目な会話をしていたらいい時間になったのでそこでお別れしました。

mozilla.party.jp 5.0

池袋から新宿へ、そこで乗り換えて千駄ヶ谷へ。駅の外に出たらすごい人だかりで「もしかして mozilla.party.jp 5.0大盛況ですか?!」などと一瞬思ってもみたりしたけれど空しいのですぐやめた。

会場の津田ホールには迷わずに着けた……と言いたいところだけれど、入り口が分からず無駄に周りを半周もしてしまったよ。

開場1時間前ということで皆さん準備に大わらわ……かと思っていたけど意外にそうでもなかったような。 Piro ですども〜みたいな感じで紛れ込……もうと思ったのだけれどスーツにネクタイなんて格好なのはどうも僕だけみたいで浮きまくりだった。

荷物を置いて、昼食を取りに外出した。近所に何かないかな……と思って歩いていたらモスバーガー発見。もう何年も食べてない気がしたので行ってみた。セットメニューなんてのがいつの間にかできてたんですね。トクなんだかトクじゃないんだかいまいちよく分からない内容だったけれども。

戻ったらもう開場してて人もずいぶん増えていた(でも運営側にスーツ姿は僕以外見あたらず……寂しいのう)。ここで初めて KENZ 氏に遭遇。 KENZ 氏と btm 氏には(他の人にもだけど)セッション直前までホントにお世話になりました。プレゼンテーションにチェックを入れてもらったり、 Java のコードの例を示してもらったり。ご迷惑をおかけして申し訳ないです。

今までサッパリ使い方が分からなかった JavaScript デバッガの Venkman について、セッション前に準備をしている時に少し教えてもらえた。なるほど、左上のペインに現在 Mozilla で読み込まれている全てのファイルの一覧がリアルタイムで表示されて、そこから選んだものが右のペインに表示されて、そこでブレークポイントの設定やらなんやらを行うのか。全然知らなかった。 Venkman については btm 氏の小セッションでも客席から「おおー」とか「すげー」とか声が上がっていて、やっぱりすごい技術なんだなあと思った。でも僕は普段秀丸エディタと構造化エディタを行ったり来たりしてコードを書いているので、どう活かしていけばいいか悩む。

大セッションの内容には結構興味があったのだけれど、普段僕の周囲に Mozilla や XUL のことについて話せる人が全然いないので、それ系の雑談をしていたりプレゼンテーションの準備をしていたりしたらあっという間に時間が来てしまった。残念だ。

僕担当の小セッション。どのくらいの人数が残ってくれるだろうかと大変不安だったのだけれど、かなりの人が残ってお話を聞いて下さって嬉しかった。ありみかさんも来て下さってた(いつからいたんだ……)。しかしせっかく大量のカンペを用意してきたのにやはり現場ではイッパイイッパイで、手元のプレゼンテーションの画面を見ながら無心のアドリブで喋ることに終始してしまった(自分自身、何喋ったかてんで憶えてないですよ。抜けてるところがかなりあったはずだというのは分かるけど……)。あとで聞いてみたらだいたい35分くらいで予定の全ての内容を喋ってしまったらしい。もじら組関係者の人は内容が充実してて良かったと言ってくれていたけれど、こんなもので来場者の方々に理解してもらえたのだろうか、興味を持ってもらえたのだろうか、と激しく不安でいっぱいです。

btm 氏の小セッションが終わったあとにも少し時間ができたため、僕の小セッションについて質疑応答。 XPCOM の話に関しては KENZ 氏に出てきて頂いたりもした。質問者の意図を正確に読み取ることは難しい、的確に答えるのも難しい、ということを改めて感じた。自分の予想した方向に質問を曲解してしまうのは自分の良くないところだと思う。あと、他の人が前で喋ってる時に、自分が受けた質問について横で大声で喋る自分は制裁ものだと思った。

この流れの早さなら言える! ということで party が終わったあとや宴会の時などに「半分(以上)は就職活動のつもりで来てます」みたいなことを漏らしてみたら、来場者の方から名刺を頂いたり「インターンでとりあえず来てみないか」みたいな声をかけて頂いたりした。有り難いことです。と、酒の席での話を本気にしてみる馬鹿がここに一人。いいのか? ホントにおいちゃん会社までおじゃましちゃうよ?

色々話していて思ったけれど、少なくとも今の Mozilla 、 XUL 、 XPCOM には未来はないだろう、というのは XUL アプリケーション開発においては割と共通の認識ぽい。もしかしたらコードのことをよく知らない人ほど夢を見ているのかも知れない。いくらコンセプトがかっこよく聞こえてきても、実際にコードを書く人が投げ出したくなるようなものでは、生産性が上がるとは思えない。

KENZ 氏は .Net のように色々な言語( C++ だけでなく Java とか他色々)で XUL を扱えるようになればいいのにというようなことをおっしゃっていた。今だと、何かするにはまず JavaScript (か Python )で、それでできないことはもう全部 C++ でという極端な構造になっている。ここでもっと色々な言語を使えるようにしたいということだった。皆さんのこういう高度な話を聞いていると、 Web ページ感覚でサクサク作れるぜというだけのことで足を踏み入れてそのまま今に至っている自分は本当に場違いな人間だなあと思わずにはいられない。

二次会の最中に帰りのバスの時間が迫ってきたので退散。しかしバスのり場までの道がサッパリだったため、 Gashu 氏ともうお一方に道案内をして頂いた。誰かに見送ってもらえるのは幸せなことだと思う。餞別に(?)十六茶 500ml ペットボトルを Gashu 氏から頂いて、ここで本当にお別れ。

……あ。二次会の参加費払うの忘れてた

今日のよかった
飛鳥と久しぶりに会ったこと。買い物。パーティ。これまでの Mozilla や XUL に関する活動を評価してもらえたこと。出会い。見送ってもらえたこと。

19th day

夜行バスのトイレは駄目だと思った。ああ激しく揺れては落ち着いて出せません。酔って却って気持ち悪くなってしまった。

目が覚めたら他の乗客はとうの昔に全員降りていて僕だけだらしなく寝ていた。乗務員さんに「終点ですよ」と起こされたし。恥ずかしい。

メールチェックしたら140件近く溜まってて、しかしそのうち数%を除いて全てが SPAM かウィルスメールだったりして鬱。

全身がだるくてだるくてだるい。今回の疲れがどっと出た感じだ。

childNodesgetElementsByAttribute の仕様変更があった……のか? 今まで childNodesgetElementsByAttribute() で取得した結果のリストはライブなものではなく、たとえ childNodes[0] を親ノードの removeChild() で削除したとしてもリストの中身は変わらなかった。今後は、そのノードが子でなくなったり検索条件に指定された属性・属性値を持たなくなった場合、前述のメソッドで取得したリストの中身にもそれがライブに反映される。……という風に僕はこの記事を理解したのだけれど、この読み方で合っているのだろうか。

内部では大盛り上がりでも外部からは冷めた目でしか見られていないというのはどこも同じなんだなあ、と思った。では逆に、外部が大盛り上がりな時は内部はどうなってるものなんだろうか。世間ではよく「マスコミが採り上げるようになったらもうブームはとっくに終わってる」と言うようだけれど、内部は冷めに冷めてしまっていたりするのだろうか。

パーティに関するありみかさんの記事でも言われているし、現場で質問を受けた時にも思ったのだけれど、そんなもん Bookmarklet やら何やらで解決できちまうんじゃないんですかと答えたくなるような質問があったりして。しかし世の中には、工夫を強いられるのが何より面倒だ、裏側なんて見せて欲しくも何ともないからとにかくブラックボックス状のソリューションを提供してくれさえすればいい、というニーズもやはりあるのかも知れないと思った。これは、 Firefox における Web Panel の実装とその活用に工夫が必要なことと、 Ez Sidebar はそのような「ユーザーに工夫を強いる姿勢」を全面否定するものであるということを、 XUL コンテスト用に用意した資料の中で書いた時にも思ったことなのだけれど。

しない善より、する偽善という言葉は、ともすれば親切の押し売りを正当化するフレーズだということで、嫌いな人がいるかも知れない。僕がこのような言葉を使う時は、それとは違った意味合いで使っていると思う。明らかに何かした方がよいケースにおいて、「しない方が自分が自分のことを(善行を積もうとあくせくしている人に比べて相対的に)善人と思える」という考えにたどり着くことを忌避したいというのが、僕の思うところ。

昨日 KENZ 氏との話で出たことの中で書き忘れていたこと。 Windows 版 IE のコンポーネントは、埋め込むだけで基本的なコンテキストメニューや履歴などの機能が使えるのだという。ところが XUL の browser ウィジェットはそのまま書いてもコンテキストメニューも出なければ履歴もたどれない。 KENZ 氏が構想しているのは、 browser ウィジェットを補完した browser-box ウィジェットというようなものをバインディングなりなんなりで実現すれば XUL アプリケーションを開発する敷居が一段低くなるのではないか、というアイデアだった。 nsContextMenu.js や contentAreaContextOverlay.xul などを見るとそういうものを作ろうという考えは本家の方にもあったことが伺えるけれど、なんやかやで放っておかれているというのが現状のようだ。バインディングを書くことでなら僕にも協力できるかもしれない。どうでしょう、こういうものが出てきたら XUL をいじってみようかなと思います?誰ともなく

今日のよかった
無事に帰り着けたこと。

20th day

ヤフオク落札分振り込み。振り込み手数料が高くてなんか鬱。

情報組織管理論、自作の欠席届を一応提出してはみたのだけれど……あんなんでよかったんだろうか。そしてどうやって今週出た課題を知ろう。4年で僕の知り合いでこの講義を取ってる人なんてまずいない。

某大手企業の孫会社の説明会兼一次試験に行ってきた。 IEEE1394 だかなんだかのビットマスクを求めよみたいな問題があった。

シンナー拭きしすぎて綾波のアゴが紫色に……ヒィ〜!!

今日のよかった
僕のセッションの内容について言及してくれている人がいたこと。無反応・無視が一番辛いので。

21st day

いろんなハローワールドの中の XUL 編。でも XUL は GUI というよりはドキュメントフォーマットな気がするんだよなあ( HTML アプリケーションと絡めた解説でもそんな感じの話し方を敢えてした)。

やり残していた最後の仕事、小セッションの内容の文書化を終えた。ウツロな記憶を掘り起こしながらの作業はほんとに疲れる……

学費納入。65万円は重い(←ピン札じゃないとかさばるのでなおさら)。無駄にはできないとか、なのに今期は週1時間しか講義を受講していなかったり(残りを卒業制作に充てるためという名目)とか、色々考えてしまう。自分でどのくらい働けばこの額の金を手にできるのだろうか。それだけの親の苦労(まあ今回の分のうち4割は奨学金なんだけど……)を僕は生かし切れているのだろうか、思いに応えられているのだろうか。

mozilla.party.jp 5.0でお話しした社長さんからメールが。アワワワワ。自分から連絡しなきゃと思ってたのになんだかんだで後手に回ってしまいましたよ。とりあえず明日の昼に会社の方にお伺いしてもうちょっと突っ込んだ話に入ることになりました。履歴書書かねば。

ヤフオクで落札した GUNDAM FIX TRANSITION+ が届いた。ぬう、これホントに描いてるんですねえ。スゲ。

はじめての Venkman

最近の Mozilla Trunk Nightly Build で Sidebar のブックマークが開けなくなってしまっているという問題の原因調査に Venkman を使ってみた。

まずメニューの DebugExclude Browser Files のチェックを外す。すると(デフォルトでは左上のペインにある) Open Windows タブに navigator.xul という項目が出現するので、この中を辿っていって TBE の overlayFunctions.js を見つけてダブルクリック。これで、右のペインにこのファイルの内容が読み込まれる。そしたらこの中から問題になっていそうな箇所を探し出して(今回は openBookmarkItemClickOrKey の定義部)、行番号の所をクリックして適当にブレークポイントを設定する。

ブレークポイントを設定したら Navigator ウィンドウに戻り、おもむろに普通にブックマークをクリックする。そしたら、処理がブレークポイントのところで止まって Venkman がアクティブになる。この状態で Step Over ボタンを押すと、その都度処理が1行ずつ進んでいく。

すると、 try-catch 構文の try ブロックでエラーが発生していて処理が途中からすっ飛ばされてしまっていることが分かった。 try-catch の中にブレークポイントを設定してもエラーが起こった時は無視されてしまうようなので、 try ブロックに入る前にブレークポイントを設定。 Continue ボタンを押して一旦処理を終了させ、再度ブックマークをクリックするところからやり直す。

またブレークポイントで止まるので、 Step Over で1行ずつ処理を進めていく。すると、ある行で突然処理が catch ブロックに飛んでしまうのが確認できた。この行がエラーの原因というわけだ。後はもう煮るなり焼くなり好きなようにという案配。ウホッ、こりゃ便利だ。

そういうわけでエラーの原因を特定できたワケなんですが……複数の式を || だけで繋げて書いてて、どこかでマッチしたらそこで処理を次に進めて欲しかったとこなんだけど、きっちり最後の式まで評価してるせいで意図しない式評価が行われてしまってエラーが起こっていたというお話しでした。んがー。どっかで読んだ「高速化のためのテクニック」に、途中で条件式の評価結果が真になればそこで処理が次に進む(後の式は無視される)というのがあったと思うんだけど、 JavaScript はそういう風にはできてないんですか? あるいは Mozilla の JavaScript エンジンの問題ですか? それとも僕の壮大なカンチガイ?

今日のよかった
連絡を頂けたこと。 GUNDAM FIX TRANSITION+ 。

22nd day

昼の2時から会社に出向き、2時間ほど社長と人類の未来について語り合い(何やってんでしょう自分)、5月いっぱいは教習などで手一杯だから6月からとりあえずバイトみたいな感じで参加することになって、内定を頂き、外勤から帰ってこられた岩井氏に大遭遇し、世界は狭いとかそういうことを思った日。

古くは絵ばかり描いていて、やがて N88BASIC プログラミングにハマり、そのうちそこから離れて本格的に絵描きヲタの道に足を踏み入れ、作品公開のために Web サイトを作り、その Web サイトの改装のために HTML と CSS を学んで、管理の手間の軽減のために JavaScript も使うようになり、その知識を元にして XUL アプリケーション制作というプログラミングの世界に再びやってきて、そのつながりで行った mozilla.party.jp 5.0の小セッションがきっかけで社長さんに目に留めてもらい、することになる仕事はどうやら Web 関係。人生どう転ぶか分からんもんです。

今日のよかった
内定

23rd day

まじめなコンテンツとオタク系は分けてほしかったというコメントを見て、 Mozilla もいつの間にかオタクナードな人間だけの遊び道具ではなくまじめなものとして扱ってもらえるようになったのだなあと少し嬉しく思った。ン、真意を曲解してますか?

Sidebar パネルで既訪問リンクが未訪問リンクのように表示されてしまう問題の原因が分かった。 browser ウィジェットを hidden プロパティ(属性でもいいけど)で隠すと、要素が DOM ツリーから削除されたりウィンドウが閉じられたりした時と同じようにいくつかのプロパティが破棄されてしまい、再表示した際にそういう問題が起こるということのようだ。 collapsed プロパティ(これも、属性でも同じ)で隠す場合にはこの問題は起こらない。なんというか、これに限らず hidden プロパティ・ hidden 属性の扱いは非常に厄介だと思う。

書くのが遅れたけれど。ありみかさん、ご成婚おめでとうございます

gobbledygook で紹介されていた『囚人である』 ことと 『オフィスで働く』 ことの違い。ナイスネタだ。

おめでとうとかありがとうとか言ったり言われたりしても、しかし実際の所はスタートラインに立っただけで、本当に厳しくなるのはこれからなんですよね。こないだ東京で飛鳥と話していた中で出てきた話だけれど、今まででも受験や何やらで「人生の岐路」に立ってきたと言ったところで、いわゆる社会人になった瞬間にもう毎日が「人生の岐路」の連続なんじゃあないのかと。今まで辛い辛い言っていた出来事が毎日起こる当たり前になるのが、自立するってことなんではないのかと。特にこの会社は、そういう「岐路」が多そうな気がする。

progressbar も hidden 属性の影響を受けるようだ。少なくとも Windows XP では setAttribute('hidden', true) で一度消してから removeAttribute('hidden') 再表示するとプログレスバーとして機能しなくなるくさい。

バイト。受講者の方(いわゆる「給食のおばちゃん」をやっていらっしゃる)にパンを頂いた。ゴマ入りのもの。むぬぐぁ、最近の小学生はこんなうまいもんを食っとるのか! けしからん!

なんとなく萌えミシュランとか見て、刺激を受けてみたりした。また時々見るようにしたいと思ったので Sidebar パネルに突っ込んどく。

萌え研究日誌(2004/4/24)愛情脳萌え脳という「異なる脳」説が興味深いと思った。恋愛的感情や生殖的衝動といったものは不可分なものではなく分解して考えることができるという話に通じる。

手塚治虫 恐怖短編集 科学の暴虐編Amazon.co.jp )を古本屋で買ってみた。こんな作品も描いていたのか……

今日のよかった
祝いの言葉をもらえたこと。ゴマ入りパン。

24th day

ある角度から見ると、様々な要素が一つでも欠けていたら今こういう結果になっていなかったかも知れない。社長が来ていなかったり僕へのオファーがなかったりしたら出会いもなかったろうし、バイトをしていなかったら交通費などの経費を理由にオファーを断っていたかも知れないし、教習をキャンセルしたりといった決断を自分で下していなかったら誰も支持なんかしてくれない全く良いところの見つからないプレゼンにしかならなかったろうし、 Mozilla の仕様が変わらなかったら XUL を自分からいじることもなかったろうし、中学時代にプログラミングをかじらなかったらいじろうとも思わなかったろうし、以下略。

また、別の角度から見ると、幼い頃の自分がしたことが引き金になって中学時代の自分が生まれ、それが引き金になって XUL をいじる自分が生まれ……という風にドミノ倒しのように今の自分が導き出されたと考えることもできる。

おさんぽおさんぽで紹介されているエセ NGO の実態を暴いているというサイトを見てみたのだけれど、どのリンクがどこに繋がっているのか、どのような構成になっているのか、メンタルモデルを全く構築できなかったので、ちいとも読まずに Firefox のタブを閉じた今日この頃です。

20日に説明会と足切り試験を受けた某社から、26日に次の試験をやるから来いという旨の通知が届いた。しかし説明会での話の内容から自分の志向とこの会社の志向とはそぐわないなと思っていたので、辞退することにする。……せっかくのチャンスを棒に振るのかと言われそうだけれど、仮に受けたところで、僕の方はもうこの会社に対する熱意がないのだし、余計な手間をかける・かけさせるくらいならとっとと断るのがお互いのためだと考えたから。

一昨日古本屋で見かけてなんとなく読んでみたこんな会社は就職するな!Amazon.co.jp )に、「もっといい学生が採れるかもしれない」と考えて内定通知を出し渋る採用担当と、「この学生を見過ごしたら次はこれ以上はないかもしれない」と考えてすぐに内定通知を出す採用担当がいる、という話が書かれていた。僕が速攻で「この会社に」と決めたのも、この後者の例と同じ考えがはたらいている。

バイト先のオーナーに、5月いっぱいで辞めたいという意思を伝えた。しかし今このタイミングで僕が抜けると、残るスタッフの皆さんはホントに大変なことになってしまうのだよなあ。罪悪感。でも優先順位を付けざるを得ない。

明日は一週間ぶりくらい(もっとか?)の教習。いきなり行ったら絶対死ぬと思ったので父に頼んで人通りのないところで軽く練習など……のつもりが、夕方のラッシュ時にコーナンまで行って燻蒸剤買って帰って来るというひどく実用的なルートで練習をする羽目に。ひい。ディーゼル車だからかワゴンだからか、教習車とは全然違う加速の仕方・曲がり方にかなり戸惑った。

今日のよかった
バイト先の方々に好意的に受け止めてもらえたこと。大切な友人が祝いの言葉をくれたこと。運転の練習。

25th day

国民保護法制ですか。なんかもうドサクサ紛れの法案通過が多すぎて(それをする彼らにも、それを許す我々にも)ウンザリだ。

ジョジョ立ちが新聞記事に!

朝から父の指導のもと公道で練習ですよひぃぃぃ。

バイト終わって教習に向かおうと思ったけれど教習所のバスがどこに止まるのか分からなかったので仕方なくトボトボ歩いていたら後ろからそのバスに追い抜かれ残念な気持ちになりました。だいたい40分くらい歩いたか……意外と近いのね。教習の内容は、所内での方向転換(かつて車庫入れと呼ばれていた技術)でした。

家に帰り着いたら、なんかまた運転の練習するぞとか父が言うんです。なんでそんな急にやる気になるんですかひぃぃぃぃぃ。まだ高速教習もしてないのに近畿自動車道でカッ飛ばしてきました。あと住宅地の細い道で前後を車に挟まれヘルプを求めたりとか。疲れた。

いつの間にダニが発生していたのか布団で寝るとカユいというヤバイ状況だったのだけれど、乾燥させてみたら何も起こらなくなった。

今日のよかった
運転の練習ができたこと。

26th day

最近特に、自分語りが鼻につくなと思った。自分

アンチ厨の行動パターンあれこれ。

いろんなヒーローがいるもんだなと思った。

弱いということと、それを守りたいと感じることと、その感情を悪用することに関する話。こういう話をそっち系の人相手にほのめかすと、異様な反論が帰ってくるもんなんですよね。やれ「そんな事実はない」だの「逆差別のレッテルを貼って差別を正当化する気か」だのと。認めたがらないんですよね、自分の属する集団にそういう人間がいることを。相手の集団にそういう人間をめざとく見つける割には。

以前にも書いたことの繰り返しなのですが、正しい HTML がどうとか Valid な書き方がどうとか、かつての自分と今とでは動機が全然違うかも知れないけれど、少なくとも今は、そういうものを志向するのは僕にとっては「いいプログラムを書こう」と考えることと同じなのです。ある日突然自分が記憶喪失になったとして、ソースコードを見てすぐに再編集できるかどうか? そう考えると、例えば重要な要素の ID を a だの b だのという英字一字にするとか、何の注釈も埋め込まずに table を入れ子にしまくるとか、そういうことは考えとして浮かびすらしないでしょう。将来の事態に対する一種の保険であり、僕にとっては切実な問題なのです。そのような危機感を感じない・感じる必要のない人にああしろこうしろと説くのは時間の無駄であると言えます。言い換えると、「説得の鍵」は「いかに相手の心に自然に危機感を植え付けるか」ということです。

縦列の教習。

長生きしてや

今まで、自分以外の人に「死なないで」とか「生きて」とか言う人がどういう考えでそう発言するのか僕にはサッパリわからなかった。生きていたら色々教えてもらえるからとか、家事を手伝ってくれるからとか、そういう理由で「死なれては困る」からそう言うのだろうか、と思っていた。でも今は何故か、父や母やあれだけケンカした弟や友人達や、全然関係ない人についても、「死んで欲しくない」とか「生きて欲しい」とか素直に思っている。大塚愛の「さくらんぼ」すらニコニコして聴くことができる(←あぶない人一歩手前)。

先日、社長と2時間話した時に出てきた考え方だけれど、自分の体表と同じ範囲だけではなく、周囲の人、会ったこともない友人、名も知らない通りすがりの人、あらゆる人を包含するような大きさに、それだけでなく、今この時間を共有している人々を水平に・2次元的に包含するだけでなく先祖方向や子孫方向といった縦軸方向に・立体的にも、「自分の範囲」が(一時的にでも)広がったということかも知れない。あるいは、仮免許を取得して公道で練習ができるようになり、今まで以上に「死」が身近になったからかも知れない。幸運が続いて、幸せを強く感じているからかも知れない。それら全てのせいなのかも知れない。今日このタイミングで考え至ったのが、その証拠かも知れない。

多分物凄く当たり前のことなんだろうと思うのですが、自分の中では、何か一つ真理にたどり着いたような感覚です。

今日のよかった
教習が無事進んだこと。

27th day

今日の踏んだり蹴ったりその1。目が冷めたらバスの出発時刻10分前。週1回だけの講義に遅刻確定ですよ……

今日の踏んだり蹴ったりその2。誤ってカード類をぶちまけた。部屋の中だったからまだ良かったが。

今日の踏んだり蹴ったりその3。強風に煽られ傘全壊。微妙にいい値段の傘だったのに、全部の骨が見事に折れて下さりやがりました。道理で皆さん傘を手にしている割には差してなかったわけですね。天気予報なんて見てる暇なかったんだよチクショウ。

今日の踏んだり蹴ったりその4。大学にある UFJ 銀行の ATM のユーザビリティ最悪。支払いを硬貨のみでするか紙幣のみでするか硬貨と紙幣でするか、って、そんなもんいちいち選択させんでもええがな。何を考えていればこんなインターフェースを作れるんだろうかと理解に苦しむ。しかも間違えたと思って「取り消し」したらそれまでの入力が全てご破算になって最初からやり直しだし。ひどいよ。このせいで振り込みが間に合わず、処理が明日付になってしまった。

今日の踏んだり蹴ったりその5。みずほ銀行の支店が近くにないのでその UFJ の ATM からみずほの口座に振り込まなければいけなかったのだけれど、振込額が860円で手数料が420円、使った金の1/3が手数料……(というか860円というのもそのうち340円は送料だ)

どうでもいいけど、コンビニの機械でも振り込みできるようにして欲しいと思いませんか?誰ともなく

今日の踏んだり蹴ったりその6。 Mac OS X 上でのデバッグが思うとおりに進まなかった。これは後述。

内定出たよと教授などに言いふらしてみた一日。サークルの顧問をして下さった I 教授が自分のことのように喜んで下さった(のか?)のが嬉しかった。しかしうちの大学だけなのかも知れないけれど、この時期に内定が出ているのはやはり早い方のようで。

24k 君からヤバコプターAmazon.co.jp )を借りた。いやー、相変わらず混沌としてますね。「ヤバーコード」とかの小ネタ大好き。

Mac OS X 上でのデバッグ

Mac OS X 上でタブバーの表示がおかしくなる問題について、研究室の OS X マシンで色々とテストしてみた。

Mac 上の Mozilla はなんかよく分からんが一つのファイルにまとまってて中身が見れない。 Disk Copy だかいうユーティリティで作られたディスクイメージらしいのだけれど展開の仕方が分からず1時間は悩んだ。 Control- クリックでコンテキストメニューを出して「中身を表示」だかなんだかの項目を選ぶだけで良かったと気付いた時にはもう……

でまあソースとか見てみたんですが、どこが原因になっているのか見当すら付かず。これでまた1時間は無駄にした。結局、 DOM インスペクタで表示した結果を注意深く分析するだけで良かった。

あと、手を加えた TBE を読み込ませる段階でも参った。展開したファイルをそのまま読ませたら Mozilla が何故かフリーズするわ、そしたら DOM インスペクタが使えないわ、 Zip It で作ったファイルはリネームしても使えないわ、全く思い通りに行かない。

そういう苦難を乗り越えてやっと分かったことは、 Aqua 風の表示を実現するために Classic テーマで使われている特殊なバインディングが問題の原因になっていたということ。 Windows やその他のプラットフォームでは「新しいタブを開く」「タブ」「タブを閉じる」の三つの無名内容がタブバー直下にあるため、タブバー直下の第二・第三の無名内容に対して色々と処理を行っていた。それに対して、 Mac 用の Classic テーマではこれらの無名内容が stack の中の vbox の中の hbox の中、という風にだいぶ奥まったところにある。そのため、前述のような構造であることを前提にしていた処理では、タブバーの中身全体第三の無名内容すなわち「タブを閉じる」ボタンのボックスであると見なしてしまい、結果、全てのタブが画面右端に小さく表示されるという問題が起こってしまっていた。というわけだ。

これ用の対処をするのはさして難しくない、というかもうできたんだけれど、別のテーマを使うとやっぱりこういう問題が起こる可能性があるわけで。一般的解決策というものはないのだろうか。マジ困る。とりあえず少し処理を書き換えてみはしたけどさあ。

とりあえず言えることは、こういうプラットフォーム依存の問題はホントに僕一人では解決できないということ。情報提供してもらっても半分くらいは無理だと思う。状況が全く読めないのでトンチンカンなことをしてしまいがちだから。申し訳ないのだけれど、 Windows 2000条で再現できない問題は基本的には利用者側で対処してもらうしかないです。その成果を送ってもらえればパッチとして反映しますのでどうか一つ宜しく。

今日のよかった
Mac OS X 上での問題の解決の糸口が見つかったこと。

28th day

最近自分語りが鼻につくなあ、と思った矢先に見かけた記事ARTIFACT で紹介されていた)。

偽善者度は51%だった。だいたい安定してこの値。

しばらく見てなかったけど Timidity++ は着実に進化しているのですね。 GUI がちょっとだけ改善されていたり、同じコンフィグファイルと音色を読み込ませても明らかに旧版よりも音質が向上してたり。

山道の教習。今日の段階で、検定までの見通しがだいたい立った。5月半ばには全部の課程を終えて検定に進めるはず。うまくいけば。

今日のよかった
普通免許取得までの見通しが立ったこと。

29th day

おお Mozilla は onscroll イベントハンドラに対応してるのか! と喜んだのも束の間、スクロールバーをつまんだ時以外はイベントが発行されないという致命的バグがあった。

既読タブのハイライト表示機能は外部モジュールとして分離します。きちんとしたものにしようとしたら結構処理が増えてしまったので。

正直なところ、菅直人や福田官房長官やなんかの「国民年金未納問題」なんてのはかわいいもんじゃないのと思う(成人してから一度も払ってませんというわけでもないようだし)。それとは全く別のところで、僕は国民年金という制度に不信感を抱いているわけで。

ロビン・フッドおもろい。大変楽しめました。しかしこれがもう13年も前の映画なのか……

今日のよかった
ロビン・フッド。

30th day

高速教習に行ってきました。

教習終わってバイト先に着いてかまどやで弁当買って食べて一息ついたところで、今日は第5週でバイト休みの日だということが発覚した。激しく ショボーン しかし僕が着いた時点でシャッター開いてたりして事務の人まで勘違いしてた風な雰囲気だ。僕が来てなかったら土曜朝までシャッター上がりっぱなしですよ。不用心ですなあ。

天獄1巻オマケ(いや、むしろこっちが本当の商品くさいのだけれど)の砂姫フィギュアの詳細が公開されている。ええ、ええ、もちろんイーエスブックスで予約が始まったと同時に既に申し込んでますよ……

バイトが終わってから学科教習を1時間だけ受ける予定だったのが、バイトそのものがお休みだったため、2時間受けてきた。残り2時間。

こないだ代金を振り込んだ落札物が到着した。

今日のよかった
予定よりも学科教習を進められたこと。落札物が無事到着したこと。