ここは田舎とはいえ、物騒なことが起きないとは限らないので、 娘たちに防犯ブザーを買い与える。 紐を引っ張るとけたたましい音がして、相手をひるませるというものだ。
で、ためしに紐を引っ張ってみると予想外に大きな音がした。 いや、小さい音では役に立たないので大きな音なのは当然なのだが。
で、紐の先についているピンを戻せば音は止まる、はずであったが、 なかなか戻らない。簡単に戻せては悪党に止められてしまうので、 解除ボタンを押しながらでないと戻せないようになっているのだそうだ。
そこまではいい。落ち着いて解除ボタンを押しながらピンを戻せば音は止まるはずであった。
問題は、その場にいた家族全員が「自分こそは音を止めることができる」と信じて疑わず、 けたたましい音で鳴り続けるブザーを取りあいになったことだ。誰かが途中までやりかけて 少々まごつくと別の誰かが取り上げて自分でやろうとするのでいつまでたってもうるさいままだ。
まったく似た者家族である。ご近所には迷惑をかけたかも。
数日前、「Traitsの良さとMix-inの良さのいいとこ取りができそう」などと書いたが、 世の中そんなに甘くなかった。クラスの関係が複雑になると、メソッドの衝突の解消など Mix-inでは嬉しくないケースがかなりある。
現実に、そんなに複雑なクラス構成にするのか、という点に疑問が残らないでもないが、 この辺をきちんと考察して、論文を一本書こうかと思う。ちょっと新規性がなさすぎるか。
が、バグ取りや子育てなど、ささいなことにじゃまされて、まとまって考える時間がなかなか取れない。 うーむ。
「てれびくん」という小学館の雑誌がある。
ま、子供向けテレビを解説する雑誌で、 私の子供のころにあった「テレビマガジン」や「テレビランド」と同類のものだ。 「テレビマガジン」はまだあるようだな、そういえば。
で、息子が買っていた「てれびくん 12月号」をぱらぱらと眺めてみると。
新連載 ウルトラマン・ネクサス 原作: 円谷プロダクション 漫画: 椎名 高志
うーむ、しばらく見かけなかったと思えば、こんなところに。 しかも、サンデーに書いてる時よりずいぶんシリアスなんですけど。 陰影のくっきりしたタッチとか。
朝から東京へ。 あちこち凍ってる。いきなりガレージの前でステン。 空港までの道でもちょっとスリップした。 タイヤ交換しておいてよかった。
東京についたらオフィスへ。 明日のスライドが完成していないので作業。 本当に間に合うのか。
午後は打ち合わせ。 このプロジェクトがうまくいけば来年は本当に「Rubyでビジネス」がブレークするかも。 でも、マーケティングに課題が。OSJのような才覚がほしいわ(いや、マジで)。
夕方はRubyな忘年会。笹田くん、幹事ごくろうさま。
いろんな人に会いました。久しぶりな人、初対面の人、しょっちゅう会ってる人など。 楽しかった。
宴会中、「1.9にはグローバルなgsubとか要りませんよね。 互換性を気にしなくていいんだから消しましょうよ」との声。 確かにそうだと思ったので、その場でPCを開いてごりごりと削る。
二次会ではZevさんから「二ヶ月くらい前のcgi.rbのレポートに反応がないんだけど」と聞いた。 調べてみるとmorqでactionラベルはつけていたのだが、すっかり忘れていた。 todoもあまりにエントリが増えるとダメだね。
これもその場で作業を始めた。とりあえず10分くらいで作業はすんだが、 検証しないと。CGIのマルチパートなんか使わないからなかなか検証できないよ。 ボランティアはいないかな。
そういえば、今回もたださんとろくに話してない。
二次会で、とみたさんのX40が壊れているのを発見。 どうも静電気にやられたとか。 恐いねえ。
三次会まで付き合ってから、ホテルに。夜を徹してスライドを書く。 ちょっと遊びすぎたか。終わった頃には明るくなってきてた。
答えは「そのレベルで安心できない人はRubyを使わない方がよい」です。 だって、整数のプラスだってなんだって再定義可能なんだから。
とはいえ、滅多にないとは言え名称の重複を心配しないといけないというのも切ない。
こういう時はまず原典を参照するに限る。 改めてCLtLを参照してCommon Lispのcatchとthrowについて調べてみると、
The catch special form serves as a target for transfer of control by throw. The form tag is evaluated first to produce an object that names the catch; it may be any Lisp object.
とある。がーん、今までずっとシンボルしかダメだと思ってたよ。 任意のオブジェクトがcatch/throwできるのね。
だとすると、やり方はある。
catchに引数を省略した時にタグになるようなオブジェクトを作ってやればいいんだ。 今まではシンボルに限定していたので、今まで使われたことのないシンボルを生成する gensymのようなことをするには抵抗があったのだが(シンボルはGCされないから)、 オブジェクトでいいというのなら、とりあえず任意のオブジェクトを作って渡してやればいいのだ。
新しいAPIだとこういう使い方になる。
catch {|tag| .... throw tag }
で、tagは一度きりしか使われないオブジェクトだから(現在の実装は、Objectのインスタンスを渡す)、重複を気にせず使えるようになる。大域脱出させたい時には、tagのオブジェクトを引数で渡してやることになるだろう。
これで安心。
近い将来1.9にコミットしようと考えている。 でも、ささだくんに聞いたら、これってYARVだと実装が難しいんだって。 なかなか難しい問題だ。
申し込みサイトがオープンした。 私も発表することになっている。
っていうか、坂村センセの直後に話すのは、ひっじょうに抵抗があるんですけど。 分不相応っていうか、なんていうか。
朝から新幹線で福山から神戸に移動。
Rubyist関西勉強会で「Ruby1.9を語る」という講演を。
まあ、まだまだ変更点については抜けがあると思うけど。 変更そのものが忙しくて、網羅的な変更リストが出来てない。
増井さんが検定試験に落ちたという話。
試験中は実際のプログラミングではがんがん参照できる リファレンスマニュアルや参考書を試験中は参照できないわけで どうしても記憶力勝負になるのはいなめないんだけど、 それでも記憶に頼る問題が多すぎたかなあ。
結構いろんな人が落ちてることから考えると、 問題作成者や監修者が考えるよりも、難しめだったのかもしれない。
まあ、やさしすぎて検定としての意味がないよりはマシかなあ。
あらら。
事業そのものが駄目というよりは戦略が裏目に出たという感じみたい。
これでオープンソースビジネスは駄目だ、という印象にならないといいなあ。 まあ、オープンソースでみんなハッピーなんて、現実離れした印象を持っている人は そろそろだいぶ減ってると思いたいんだけど。