最新 追記

Matzにっき


2005年12月01日 [長年日記]

_ 壮行会

先日うちの会社に入社してさっそく東京に配属になった同僚の壮行会に参加しました。

おいしかったです。しっかり食べて騒いだ割に壮行会で送り出される本人のあいさつが、 最後にほんの少しだけと、ほんとうに応援する気があるのかという展開でしたが、 いえいえ、私たちなりのやりかたでしっかり応援してますとも。

私たち、(株)ネットワーク応用通信研究所は、Linux、オープンソース、Rubyなどに詳しい人材を随時募集しています。勤務地は東京または松江です。われこそはと思う方は jobs@netlab.jp まで連絡してください。


2005年12月02日 [長年日記]

_ Firefox 1.5

正式版が出て、Debianパッケージもできたので、 さっそく入れてみる。

今まで使ってたプラグインが軒並み使えない。

使えたプラグイン

  • All-In-One Sidebar
  • Dictionary Search
  • DOM Inspector
  • Mouse Gestures
  • PDF Download
  • ScrapBook

使えないプラグイン

  • Mozex (これは痛い、と思ったが、Editus Externusプラグインが使えた)
  • SearchStatus (寂しいが、無くても困らない)
  • Tabbrowser Extension (TabMix Plusで代用)
  • SessionSaver .2 (本当に困っている)

結局、どうしても困るのはSessionSaverだけか。 ブラウザが落ちたときとかタブの状態を保存してないと情報が失われるんでつらいんだよねえ。 TabMix Plusにも「Firefoxの次回起動時に、前回のセッションを復元する」というオプションがあるのだが、私のところではセットしてもなにも起こらない。Tabbrowser Extensionの同種の機能も効かなかったので、SessionSaverを使っていたのだが、早く使えるようにならないかなあ。

レンダリングが高速になったのはありがたい。画期的に速い。 あと、カーソルの感じがだいぶ違うなあ。全般に良くなってる。

それだけにSessionSaverは惜しいなあ...。


2005年12月03日 [長年日記]

_ [OSS] ITmedia エンタープライズ:FSF、GPLライセンス改定計画を発表

1月16日、17日にMITでGPLv3の素案を発表するとのこと。実は昨日、FSFからメールが届いていて、 「来ないか」と誘われたのだが、旅費の工面ができそうにない気がする。

ZDNetの記事によると、新GPLの骨子は以下のようなものらしい。

  • 国際的なライセンス:現行のライセンスは、主に米国の法律を主眼に置いて作成されたものだ。
  • 遡及的な互換性:バージョン2.0を閲覧し、コードを変更する自由を、今と同じように保護する必要がある。
  • 予想される結果の明示:既存の権利保有者に害を及ぼしてはならない。
  • 開発コミュニティとの対話:関係者すべての意見を検討することが重要。

どれももっともだが、すべて満たすことは現実には不可能な気がする。

どの辺を落とし所にするのか非常に興味がある。


2005年12月04日 [長年日記]

_ [教会]米子

朝早く、日曜にしては早く起きて(起こされて)、子供たちを起こして米子に移動。 米子の集会に参加。

米子の教会は松江よりも人数が多いなあ。元気もある感じ。 人口もさほど変わらないし、田舎具合も大差ないし(米子の方が産業が衰退してるかも)、 なにがその違いを生むのだろうか。非常に興味深い。

証会ではたくさんの人が前に並んだが、特に子供の参加が多かったのが印象的であった。 姪っ子も並んでいたが、いざ前に出ると恥ずかしくて発言できず。これもかわいいものだ。

_ 一族集結

ほんとうに久しぶりに一族全員がそろった。前回は昨年三月。 この1年半の間に一人増えている(うちの末娘)。総勢21名。 写真を撮るのも一苦労だ。だれかが目をつぶってたり、機嫌が悪かったりするからね。

あと数週で弟のところに二人目が生まれるから、 次回はもっと増えてるだろう。末の弟もそれまでに結婚してないとは言えないし、 可能性としては*1

大変楽しかった。一族は繁栄しておる。このまま繁栄しつづけてほしいものだ。

*1  彼はこの日記を読んでるからプレッシャーをかけてもいかんがな


2005年12月05日 [長年日記]

_ 低レベル

[ruby-dev:27399]で、 『4434046683』が紹介されていたので、 いつか読もうと思っていたが、松江では入手できない。 一度だけ見かけたときに捕獲しておくべきだったな。

先週東京に行ったときにも見つからなかった。 が、東京オフィスに実物があったので眺めてみた。

なかなか良い本のようなので購入を決意して、Amazonで購入した。

しかし、実物を見たときからわかっていたことだがこの本はなかなか「低レベル」で、 読むのがつらい。「低レベル」といっても、デキが悪いわけでも、 初心者むけというわけでもなくて、要するに「マシンに近い」ということ。

どうも普段やってることが言語処理系なんてマシンから遠いところにいるせいか、 このような「低レベル系」が苦手だ。

実は先日来『1593270038』という本の監訳しているのだが、 これも低レベルで大変だった。良い本なのは確かなのだが、 私がお手伝いできたのは文字コードに関する部分がほんのわずかだけだった。 監訳料はお断りしないといけないかしら?

_ [Ruby] Why Ruby is an acceptable LISP

RubyがLispの良い点を継承しているので、 「受け入れられる」Lispになるかもしれないという話。 来月発行の「ハッカーズライフ」を先取りされたようなネタ。

具体的には

  • 簡潔な関数型言語である点
  • 実用的なマクロがある

点を取りあげている。前者についてはブロックによる簡潔な高階関数が紹介されている

Lisp:
;; Call 'fn' once for each natural number.
(defun each-natural-number (fn)
  (loop for n from 1 do (funcall fn n)))

  ;; Print 1, 2, 3...
  (each-natural-number
    (lambda (n) (format t "~D~%" n)))

Ruby:
def each_natural_number(fn)
  n = 0
  loop { fn.call(n += 1) }
end

each_natural_number(lambda {|n| puts n })

または
def each_natural_number
  n = 0
  loop { yield n += 1 }
end

each_natural_number {|n| puts n }

実用的なマクロについては、ブロックやリフレクション(たとえばRailsが使っているような)DSL的表現によって提供できると述べている。

しかし、案の定Lispファンから反論が来ていて

Ruby is not Lisp. A Lisp is a Lisp because it’s code is represented as its basic data structure.

RubyはLispじゃない。Lispはコードが基本的データ構造で表現されているからこそLispなんだ

だそうだ。ごもっとも。

しかし、あらかじめ予想したようなエントリがあった。

Power vs Popularity」では、 「確かにLispの方が強力だ(マクロあるし)。では、なぜRubyがはやって、Lispはマイナーなままなのか? また、人気とパワーのトレードはどのくらいが適切か?」について、自答している(作者はLispファン)。

で、結論は要するに「Rails」ということらしい。つまり、Lispにはなんでもできるパワーはもっているが、結局自分でLisp on Railsを作らなくちゃいけない。そんなことしたくないから、Rails(とそれを使うためにRuby)を選んでいるわけだ。

「どこまでできるか」という可能性よりも、「今できる」という現実の方が人気に直結するということらしい。言語屋としてはちょっとさみしい結論だな。


2005年12月06日 [長年日記]

_ [教会] Drinking Problem

Child: Father, we have drinking problem in our ward.
Father: Really? I didn't know that.
Child: Our water fountain is broken.

教会のWater Fountain(冷水が出るやつだ)が、ずっと壊れていたのだった。 給水管が腐食して、外れてしまったのだ。困ったものだ。

が、任期を終えて帰ってきた父が直してくれるという。 教会で待ち合わせて、修理してもらった。

うちの父はなんでも直せる。伝道中も重宝されたらしい。 お風呂のリフォームもこなしたといってたな。 実家も二部屋ぐらい自分で工事して増やしてたし。

こういう才能を受け継がなかったのが悔やまれる。

_ 『わたしたちの田村くん』

4840231524

で、その時に母から本を預かった。 『4840230668』、 『4840231524』。 末の弟から長女へ貸してあげることになっていたのだそうだ。 あの二人、けっこう趣味が合うらしい。

これってアレですか、いわゆるひとつのライトノベルってやつ?

しかし、なにげに読んだらおもしろかった。若い頃を思い出すわ。 タイトルから想像される内容と違って、田村くんの一人称視点であった。 なんだか男性が喜ぶシチュエーションなのだが、作者は女性のように見える名前だ。 男心を理解しているのか、実はわくわくする要素に男女差はそれほどないのか。

長女が読んだら感想を聞いてみよう。


2005年12月07日 [長年日記]

_ Perl format string integer wrap vulnerability

printfのフォーマット指定子にinteger overflowがあったという話。 Perlでは落ちるらしい。Pythonはチェックしているとか。 Rubyでは上記記事にある値では落ちない。

でも、別の数ではやっぱり落ちるらしい。

integer overflowのチェックを加えた。しかし、gcc 4.xでは

(n*10)/10 != n

という条件は、どうやら 10/10 を先に計算して最適化により消してしまうらしい。 手元のPython 2.3.5(gcc 4.0.3 20051111でコンパイルされている)ではinteger overflowチェックは動いていないようだ。

仕方がないのでむりやり一時変数に代入して最適化を止めた。 volatileまではつけなくてもいいみたい。

しかし、integer overflowはまだあちこちに残ってそうだなあ。

_ ゾープ・ジャパン、Zope 3のトレーニングコースを実施

オープンソースビジネスには大賛成だ。

トレーニングでの学習内容は、Zopeのコンフィグとインストールから始まり、強力なZopeのフレームワークまでをカバー。Zope 3 Webアプリケーションサーバを使ってWebアプリケーションを構築したい開発者をターゲットとし、参加者はPythonプログラミング言語とWebアプリケーション開発の入門的な知識を要する。また、必須ではないものの、Zope 2でのアプリケーション開発に習熟していると効果的であるという。また、事前準備としては、Pythonチュートリアルの学習が必要。

コース日時は2006年1月30日〜2月1日の3日間で、それぞれ10時〜17時。場所は東京都内で、定員は最大10名(最小開催人数3名)、費用は31万5千円(税込)/人となっている。

しかし、3日間で31万5千円かあ。まあ、当然の値段のような気もするし、 めっちゃ高いような気もする。すくなくとも個人は払えないし。

この値段でRuby on Railsでやったら何人集まるだろうか。


2005年12月08日 [長年日記]

_ テーマ変更

クリスマスも近くなったので、 例年通り「Xxx」に変更。

しかし、この名前はなんとかならんのか。

でも、例年不評なんだよなあ。「会社で読めなくなった」とか、「眼が痛い」とか。 でも、懲りずにやるんだけど。


2005年12月09日 [長年日記]

_ W-Zero3

東京出張。午前中時間が空いたので秋葉のヨドバシカメラに寄ってみる。

そういえば今日はWILLCOMのW-Zero3の予約日であったのだな。 行列ができている。実機も4台展示されていたので触ってみる。

....うーん、これはPDAとしてはあまり使い勝手が良くないな。 一番基本となりそうなカレンダーやTODOへのアクセスが悪いし、 ソフトウェア自体もあまり使いやすそうでない。

実は値段も安いし真剣に購入を考えていたのだが、 実機に触って買う気が減少してしまった。 実際にはカスタマイズとかでなんとかできるのかもしれないけど、 もうちょっとなにができるか調べないと私は買えないな。

などと考えているうちに予約は打ち切り。どうにも、 衝動買いができないタイプ。

その後、そのままヨドバシカメラをふらふらと歩く。 傷みかかってるユニクロのPCバッグの後継ぎになりそうなバッグを発見。 なかなか良いのが無かったので助かる。

今日は荷物になるので、購入は来週くらいか。


2005年12月10日 [長年日記]

_ [Ruby] 名前重要 (Range編)

先日来、ruby-talkでRangeについていろいろと議論されていたことを解消できるめどが立った。

しかし、その完全解決にはひとつ、もしくはふたつメソッドを追加する必要があるのだが、 良い名前が思いつかないのだ。困った。

ひとつめは大小比較で包含関係を判定するRangeクラスのメソッド。 1.8でいうとinclude?に相当するのだが、1.9ではこれは基本的に、 要素として含むかどうかという離散的な包含関係を意味することにした。 ただし、include?とmember?は数だけは例外として大小関係で判定する。

名前の候補としては「encompass?」と「span?」があがっているが、 いまいちピンとこない。便利なメソッドなのでできるだけ短い名前にしたいのだが、

beg <= x <= end

という関係が明確に分かるとありがたい。

もうひとつは、succで作られる列に含まれるかどうかを判定するメソッド。 つまり、このメソッドの名前を仮にfooとしたとすると、

x.foo(beg,end)

は begからendまでsuccを使って順に値を生成した場合、その列にxを含むとき、真を返すというもの。 xを含まない、あるいはsuccを使ってbegからendにたどりつけない場合には偽を返す。

これがあるとinclude?などの包含関係の判定でループを回さなくてもすむので効率が向上する。 効率だけの問題なので、なくてもいいし、直接呼ばれることもないので短い名前である必要もない。 「between?」に近いのだがComparable#between?が大小関係で比較すると決まっているので、 離散的なこちらには別の名前をつけたい。

なにかいい名前はないものか。

_ 待合室で無線LAN

娘の視力がまた下がったので、眼科へ。

待ち時間に娘は読書、私はPCを開けていろいろと。 しかし、ふと気がつくとキューに入れただけのはずのメールが配送されている。 知らない間に無線LAN接続していたらしい。FREESPOTか?

ま、ネットが使えるのはありがたいことではあるが。


2005年12月11日 [長年日記]

_ [教会] 松江

今週は朝、気持ちよく起きられた。教会へ。

司会。年末は連絡事項が多い。今年はクリスマスと元旦が日曜日なんだなあ。 クリスマスは最初の礼拝だけ。元旦は通常通り。

集会終了後、キャロリングの練習をしてたら、 次女が「気持ち悪い」と言い出した。風邪でも引いたか、疲れが出たか。

吐いたけど、しばらく休んだら、元気になったようだ。

今日は一日おとなしくさせよう。天気も悪いし。


2005年12月12日 [長年日記]

_ W-ZERO3ふたたび

電器屋に寄ったら、W-ZERO3の実機が置いてあった。

先日は行列の中で急いで触ったが、さすがに田舎では注目している人も居ないのか、 放置されており、気がねなくチェックできた。

まず、全体にきびきびと動く。さすがに性能は高いようだ。 もっとも私の場合、比較対象がPalmだったりするので当然だろうな。

次、WILLCOMがどういう位置づけを狙っているのかはよくわからないが、 私としてはどうしてもPDAとして考えてしまう。 で、PDAとしてはソフトのフォーカスが甘い。

Todayというソフトウェアが、中心になるようだが、 これが(デフォルトで)表示するのは

  • 不在着信
  • 未読メッセージ
  • 未読ライトメール

である。ここから考えるとこれはPHSの機能をカバーしているということだな。 しかし、PDAとして考えるなら中心になるのは「スケジュール」や「ToDo」だろう、やっぱり。

ところが、これらのソフトウェアはあんまり練れていないようで、 Palmよりも使い勝手が落ちる。というか、普段使ってるKontactよりも落ちるのはいかんだろう。 Windows Mobileということは野良ソフトが流通すれば(あるいは自分で作れば)改善できることなのかも しれないが、やはりすぐにしっくりとはいかないだろうな。

ただ、カスタマイズの範囲は思ったより広いようで、 最初感じた、全然使い物にならない、という印象はだいぶん薄れた。

あとは入力である。キーボードは思ったより使いやすい。 ただ、変換・スペースが左手で打つことを期待しているのは、 普段スペースに右手を使う私にはなかなか慣れない。

手書き認識もあるが、字の汚い私には使えないから関係ない。 しかし、PCのキーボードほど打ちやすいわけではないので、 POBoxのような予測入力が欲しかったなあ。

総合すると、「使い物にならないわけではない」、 「体の一部になるには標準ソフト+カスタマイズでは不十分そう」、 「追加でインストールするソフトウェア次第だろうが、どれだけ期待できるか」 というところだろう。

買って後悔しない人も多いだろうが、 私はWindows Mobile用PIMソフトウェアの様子をもうちょっと見てからにしたい。

追記

Todayには「仕事」や「今後の予定」も表示できるようだ。

となると、「なんか使いにくい」というのはPalmのスケジューラに慣れている、 というだけのことなのか。ま、当分は入手難だろうから、様子を見よう。 同じシャープなら「りなざう」にPHSが付いたものだったら、 もうちょっと手の出しようがあったのだが、 これほど話題にはならなかったかもしれないなあ。

追記2

東京事務所の人がさっそく入手していた。手が早い。


2005年12月13日 [長年日記]

_

月曜から降ってたんだけど、こんなに積もるとは思ってなかった。 銀世界だよ。温暖化が進む最近では年内にこんなに積もることはあまりなくなったように思う。

っていうか、寒いよ。うちは純和風住宅で断熱がなってないから、めちゃめちゃ冷える。

_ [Ruby] Ruby: A New Danger

えーと、なんだかよく分かりませんが、「Rubyは危険」だそうです。

ニンジャが先祖伝来のRubyを教えてくれるのだが、 それは人格を破壊する禁断の技であった...とか、なんとか。


2005年12月14日 [長年日記]

_ タイヤ交換

スノータイヤがあまりにもすり減っていたので交換した。

ちょっと出費。

_ ぶつけた

で、帰り道、車をぶつけてしまった。またまたキズが付いちゃった。 さらに出費だなあ。

_ [Ruby] Ruby on Rails v 1.0 released!

1.0リリースおめでとう。どこもリリースエンジニアリングは大変ですな。

なお、1.8.4は計画通り12月24日(日本時間)リリース予定です。


2005年12月15日 [長年日記]

_ 東京出張

朝から東京へ。 あちこち凍ってる。いきなりガレージの前でステン。 空港までの道でもちょっとスリップした。 タイヤ交換しておいてよかった。

東京についたらオフィスへ。 明日のスライドが完成していないので作業。 本当に間に合うのか。

午後は打ち合わせ。 このプロジェクトがうまくいけば来年は本当に「Rubyでビジネス」がブレークするかも。 でも、マーケティングに課題が。OSJのような才覚がほしいわ(いや、マジで)。

_ 忘年会

夕方はRubyな忘年会。笹田くん、幹事ごくろうさま。

いろんな人に会いました。久しぶりな人、初対面の人、しょっちゅう会ってる人など。 楽しかった。

宴会中、「1.9にはグローバルなgsubとか要りませんよね。 互換性を気にしなくていいんだから消しましょうよ」との声。 確かにそうだと思ったので、その場でPCを開いてごりごりと削る。

二次会ではZevさんから「二ヶ月くらい前のcgi.rbのレポートに反応がないんだけど」と聞いた。 調べてみるとmorqでactionラベルはつけていたのだが、すっかり忘れていた。 todoもあまりにエントリが増えるとダメだね。

これもその場で作業を始めた。とりあえず10分くらいで作業はすんだが、 検証しないと。CGIのマルチパートなんか使わないからなかなか検証できないよ。 ボランティアはいないかな。

そういえば、今回もたださんとろくに話してない

二次会で、とみたさんのX40が壊れているのを発見。 どうも静電気にやられたとか。 恐いねえ。

三次会まで付き合ってから、ホテルに。夜を徹してスライドを書く。 ちょっと遊びすぎたか。終わった頃には明るくなってきてた。


2005年12月16日 [長年日記]

_ 呪われたプレゼン

スライドを仕上げてから仮眠。 その後、ホテルをチェックアウトして、オブジェクト倶楽部クリスマスイベントの会場へ。 と、その前に乗り換えの新宿で軽く朝ご飯。 たこ焼き(それで朝ご飯か)を食べながら、PCで会場の位置を確認。

小田急線で参宮橋へ。

で、会場に着いたらマシンがレジュームしない。 あらら、と思って電源を切り、再度スイッチを入れると なんとBIOSから起動しない。 昨日のとみたさんに引き続きIBMマシンは厄日なのか。 どうして私がプレゼンしようとするとマシンに嫌われるのか。

「Access IBM」ボタンを押しながら電源ボタンを押すと 4回に1回くらいの割合でBIOSが起動する。 BIOSの設定に問題はないように思うが...。

で、BIOS設定画面から改めて起動すると 4回に3回くらいの割合でgrubの画面に到達する。 で、そこまでいくとxdmの起動までうまくいく。

しかし、しばらく使っていると原因不明のハングアップに。

とりあえず、うまく起動できたところまで持っていって 恐る恐るプレゼンを始める。

が、やっぱり途中で固まってしまう。 リブートもしない。あらら。

今までも、プレゼンしようとするとプロジェクターに出力されないことは数知れず。 うまくいくはずの新しいマシンでも今年のRubyConfで出力できなかったし、 今度はマシンそのものがブートしないとは。やっぱり呪われているのか。

そこで記憶を頼りにしゃべりでカバーしようとしたが かなり無理がある。でも英語でなくてよかった。

途中休憩を入れさせてもらって再挑戦したらブートした。 だましだましプレゼン再開。 今度は最後までハングせずに終了。

なんともかともひどいことであった。 期待して私の発表を聞きに来た人はごめんなさい。 まあ、おかげでテンションの高いプレゼンにはなったような気もする。

とりあえずこちらにスライドを置く。 ちょっと高橋メソッド風味。誤字だけは直してある。が、実際の発表はこのスライドだけではとても表現できない。いや、良くも悪くも(主に「悪くも」かな)。

私は、いわゆる「アジャイル」な人ではないので、 ここで話しているアジャイルは、XPとかのことではなく、 「変化を許容するやり方」全般のことだと思ってほしい。 途中むりやりXPのプラクティスにつなげてるけど、これは愛敬。

最後に質疑応答。

「Rubyはテストに向かないのでは?」という質問。

「確かにテストを書いてると頭の中の「これから作ろうとしているもの」のイメージが逃げて行ってしまうように感じることもある。でも、それはRubyに限った話ではなく、イメージとコードが近いRubyで目立つだけ」が答え。しかし、あとで考えると「ドライブ感」を重視したテスト方式って開拓の余地があるかも。

「豊富なリテラルを追加する予定がありますか、時刻リテラルとか」という質問。

「とりあえず予定はない」が答え。しかし、しっかりruby-listを読んでいるのね。

「Rabbit使ってください」が要望(須藤さん)。

「はい、...たぶん」が答え。8年以上使っているMagicPointに愛着があるのと、 スライドの準備をするときには時間的余裕がなくて新しいツールを試してみる暇がないことが多いんだよね。あと、Debianパッケージがあると試しやすいなあ。

「本日中に帰宅せよ」との指令があったので、懇親会には出席できず。 ちょっと残念。

帰ったら、島根は東京より寒かった。

_ Thinkpadを復活させよ

帰宅中、空港でBIOSの自己診断プログラムを動かすと、 どうもメモリーがおかしいらしい。

帰宅して、ドライバで裏蓋を開け、 DIMMを差し直すと、とりあえず通常のBIOS画面が表示され、ブートした。

その後、一度ハングしたがもう一度DIMMカードを差し直したら 通常に戻ったようだ。なんだったんだ。やっぱり呪われていたのか。

そういえば、とみたさんのマシンも復活したようだ。


2005年12月17日 [長年日記]

_ クリスマス会

教会のクリスマス会。

今回はあまりお手伝いはできなかった。 せいぜいお菓子の袋詰めとか、 イスを並べたりとか。

準備のときに出張とかで参加できなくて、 段取りがわからなかったのが痛いな。

来年はもうちょっとマシな形でクリスマス会にかかわりたい。

あ、私以外の皆さんはがんばってた。 ハンドベルとかコーラスとかスキットとか パワーポイントプレゼンテーション(!)とか。

教会員でない人も何人かいらっしゃっていたけど、 彼らはどういうふうに感じたのかなあ。 イエス・キリストのことを考える機会になってくれたらいいけど。

特にいきなりスキットに巻き込まれた彼とか。


2005年12月18日 [長年日記]

_ [教会] 松江

雪だ。夕べはめちゃめちゃ寒かったので、積もった雪がさらさらのままだ。 こんなパウダースノーを下界で見たのは子供のとき以来のような気がする。

私は朝から評議会があったのだが、 妻が運転が不安だということで、みんな一緒に連れていくことにする。 普段より早かったが子供たちが良く協力してくれたのでなんとかする。 結局少しだけ遅刻してしまったのだが、これは子供たちよりも我々親が原因だろう。

いや、妻は朝ご飯の準備とか大変だったんだけど。

集会は普段通り。でも、雪のため来れない人とか風邪引いた人とかもいるようで、 出席は普段より少なかったかな。

午後、出雲支部のバプテスマ会がある。 知り合いの息子さんともうひとり。うれしいニュースであった。 でも、ご両親にあいさつできなかったのはちょっと残念かな。

_ Thinkpad不調

とりあえず正常動作しているように見えるThinkpad X31だが、 たまにハングする。土曜に再起動してから日曜の夜までもったので 直ったと思ってたのになあ。

こうなると原因がなんだか判定するのは難しい。 Debianのアップデートでソフトウェアに問題が発生した可能性もあるし、 あるいは昨日のメモリ問題が直っていないのかもしれない。 確認のしようがない。どうやって絞りこめばよいのか。

BIOSの自己診断プログラムではもう問題は発見できないし、 ブートもちゃんとするようになった。 BIOSが上がらないといった明らかにハード側の問題であれば わかりやすいんだが...。

だましだまし使うしかないか。 買い替えるほどぜいたくはできないしなあ。


2005年12月19日 [長年日記]

_ 取材

毎日新聞島根版の取材を受ける。島根にいて作品が海外でも使われている人、 ということで選択されたらしい。

「初心者にも分かること」とか最初に聞いたような気がするんだけど、 いきなりコンパイラとインタプリタの違いから入ったりして。 チューリングマシンとか登場する初心者むきの記事はありえない。

で、言語のこと、プログラミングのこと、フリーソフトウェアとオープンソースのことなど 好き勝手に話した。一生懸命メモ取ってたけど、どこまで把握できたろうか。 もともとコンピュータが得意というわけではなさそうだったけど。 あ、でもWinnyの金子さんに取材したことがあるって言ってたから、 本当に基礎的な部分は押さえているのかも。

いずれにしても、記者さんがいかに料理するか楽しみではある。 掲載は元旦と一月中旬くらいの二回とか。

_ 新聞

というように取材を受けといてなんだけど、 新聞ってのは便利なところもあるけれど、 大量の紙を消費して、ゴミとなるものでもある。 広告の量も馬鹿にならないしね。

いっそ、やめようかなあと思っているのだ。 必要な情報のほとんどはネットで入手できるようになったし。

_ 献本

献本が二冊。

  • 4274066304
  • 4839918201

まだ読んでない。書評はあとで書く。


2005年12月20日 [長年日記]

_ [Ruby] Ruby2について考える

先日、「もし、まつもとさんがバスにはねられたらRubyはどうなる」と質問された。

答えは「1.8はそのままバグフィックスしながら継続。現在のRubyは十分に良いから。1.9は自然消滅するかも」である。

ま、自分でも「十分に良い」と思っているRubyだが、改善の余地がないわけではない。

で、改善したい点はいくつもあるのだが、一番気になるのがスコープ問題。 具体的には

  • 変数をブロックの外で使いたいために、宣言としての無駄な代入が必要になる
  • 後置ifなどモディファイヤーの中で代入された変数が、前に登場する本体部で使えない
  • 変数がどこまで使えるのかわかりにくい

そこで、以下のようなルールにしてはどうだろうかと考えている

  • ローカル変数の有効範囲は代入が行われたスコープ(メソッド本体、クラス定義本体など)全体。現状は代入が行われた地点から、スコープの末尾まで
  • だから初出の代入がブロック内でも、前方宣言は不要
  • ただし、ブロック内しか登場しない変数の扱いは、現状のままブロックローカル
  • 「eval "foo"」のスコープ的な意味は「lambda{foo}.call」と同等。よってevalによって導入される新しい変数はevalの外に影響を与えない。
  • ブロックローカル変数宣言が行われた場合は、明示的な宣言があるので有効範囲はブロック内のみ
  • ブロックパラメータにローカル変数が登場した場合、その変数の扱いについてはまだ決めていない。ブロックローカルにするのも面白いし、他の変数と同様の扱いにするのも便利な局面はあるだろう。完全にローカルスコープにしたければ、無名関数式を使えばよいのだし。

他にも「多重代入の明確化」、「メソッドコンビネーション」、「セレクターネームスペース」などなどあるのだが、なかなか決めきれない。

_ [Ruby] The departure of the hyper-enthusiasts

『Thinking in Java』などの著者であるBruce Eckelによる「Javaに飛びついてた連中が今度はRailsのおかげでRubyに移行しているようだ。でも、Pythonに比べてRubyのどこがいいの?」という問いかけ。マジに質問したいのか、「Pythonのがいいじゃん」の婉曲な表現なのか区別はつかない。ただ、彼は前にもRubyに対して同じ問いかけをしているわけで、つまり要するに「Rubyは彼の趣味にはあわないぞ」ということだけなのかな。

で、私はPythonエキスパートではないので、彼の問いかけの対象ではないのだが、 私がPythonで嫌いな点は、実はインデントによるブロック構造ではなく(間接的に関係はしているのだが)、式と文が明確に区別されている点だ。

これのせいで、

  • evalとexecを使い分けなくちゃいけない
  • lambdaで一つの式しかかけない、ので本来不要な局所関数を導入しなくちゃいけない
  • ifなどを式にできない、ので本来不要な一時変数を導入しなくちゃいけない

などなどの弊害がある。いや、これでなにかができなくなるわけじゃないし、 別にたいして困りはしないんだけど、なんかすっきりしないというか、 不要な思考を強制されるというか。

とかいうことを、ruby-talkに書こうとしたら、マシンがハングした。 呪われている。


2005年12月21日 [長年日記]

_ 呪われたマシン

24時間に一度くらいハングする。症状は

  • いきなりハングする。XだけでなくOS全体が止まっている
  • リジュームしない。ふたを開けてもサスペンドしたまま
  • ブートしない。IBMのブート画面も表示されない
  • PC DOCTOR(BIOS添付の診断ツール)では問題は報告されない

どうも、ADTECHの512Mメモリが悪いように思われる...ので、 最初から付いてた128Mメモリだけで動作させてみる。やっぱ遅い。

が、やっぱりハングした。ADTECHは悪くないのか。

とすると残る可能性は

  • DIMMが二枚ともダメになっている
  • マザーボードのメモリ回路がダメになっている

のいずれかだなあ。でも、前者は考えにくいから、きっと後者かなあ。 保証期間が切れたすぐ後にこういう問題は痛いなあ。 ボード交換だと5万コースだなあ。


2005年12月22日 [長年日記]

_ 病気 (1)

今日は終業式だというのに、息子が嘔吐下痢症にかかってしまった。 症状などから考えるとノロウィルスによるもののようだ。

夕方にはだいぶ具合が良くなったようだ。

_ [Ruby]Even Larry Gets Laid Off

先日、バスにはねられたらというエントリを書いたのだが、 小飼さんが Larryがリストラされたことを引いて、

「もし、まつもとさんが失業したらRubyはどうなるんだ」という質問とどちらが難しいだろう

と懸念して下さった。

ま、死んでしまえば、この世の人たちとの交流は完全に閉ざされてしまうので Rubyに対して手の出しようがなくなるのに対して、 失業してもRubyをあきらめる必要はないので、もうちょっとマシなんじゃないかと。

当面、失業する予定はないし、したくもないんだが、 今後、Rubyをビジネスに活用する人が増えて、 私の利用価値が増えれば、私の立場がより安定するのではないかと思う。 来年のRuby界の動きに注目したい。

そういう意味では、引き続き「Rubyにとって欠かせない人物」というポジションを死守する必要があるのだろう。言語設計者の立場は弱いので、油断なく「利用価値」を維持する必要がある。

(次のエントリに続く)

_ [言語] Guido van Rossum to work for Google

GuidoがGoogleに雇われたという話。

まあ、状況はよくわからないが、 とりあえず「おめでとう」と言っておこう。生活が安定することは良いことだ。

_ 雪と出張

朝から大雪。今日は東京出張の予定だったが、 大雪の中、空港まで移動した時点であきらめた。 飛行機は飛びそうだったのだが、キャンセル。 行ったら帰れそうにないし。

後で聞いたところによると、実際行ってたら帰れなかったらしい。 出雲への最終便は機材のやりくりが付かず欠航だった。

行かなくて正解だった。


2005年12月23日 天皇誕生日 [長年日記]

_ memtest86+

またThinkpadがハングした。実害はほとんどないのだが、気分は悪い。

BIOS添付のPC DOCTORでフルチェックしてみたが、やはりエラーは検出できない。

memtest86+ とかは試されました?」というコメントをいただいたので、 素直に従うことにする。Debianならパッケージがあるから、

sudo apt-get install memtest86+

でインストールした後、grubのメニューを書き換えるだけ。簡単。 後は、リブートしてmemtest86+のエントリを選ぶ。

あまり期待せずにテストしていたのだが、 2パス目でエラー検出。書き込んだのと違う値を読み出している。 やっぱりメモリだった。原因がはっきりしたのはうれしいが、なんだか悲しい気持ちもある。

しかし、メモリが問題なのは分かったが、これではDIMMが問題なのか、 マザーボードが問題なのか区別できない。メモリスロットが二つ、DIMMが二つあるので、 組み合わせは6つだ(DIMMは「差さない」という状態もあるので)、 いちいちテストしてみるか。今日はThinkpadは使えないな。

_ [教会] お手伝い

午前中、宣教師のお手伝い。 聖書についていろいろと勉強できた。 今年はセミナリーがあったので、一杯勉強したと思ったのだが、 まだまだ見落としていたり、深く考察してなかったところがたくさんあるものだなあ、 当たり前だけど。

午後は娘がキャロリングに参加する。施設と病院で歌やスキットを披露するのだそうだ。 妻と他の子は買い物だそうで、私と息子と末娘は留守番。

午後、宣教師の英会話教室のお手伝い。 今日はクリスマスについて。 12月になってもなかなかクリスマスらしい気持ちを感じることができなかったのだが、 すこし良い気持ちを感じた。

そういえば、今日はジョセフ・スミス生誕200周年だ。

_ memtest結果

で、お手伝いをしながら一日中memetestが動いていたわけだが、 結論から言うと「わからない」だった。

1パスに数時間かかるのだが、1パスではエラーは検出できないので どうしても複数パス実行する必要がある。今日明確に検出できたエラーは

  • 2枚差しのときに発見した最初のエラー
  • スロット2に512M DIMMを差しているときのエラー

のだけだった。これだけ見るとスロット2と512M DIMMのいずれかが怪しいのだが、 スロット1に256M DIMMを差しているときにも、 メモリエラーこそ検出できなかったものの例のブートしない問題が発生したりしているので、 安心できない。

一番怪しいのは「マザーボードがいかれてて、ごくまれに信号がおかしくなる」ということなんだろう。えーん。

_ [Ruby] るびまッ 12号


2005年12月24日 クリスマス・イヴ [長年日記]

_ 病気(2)

今日は米子の実家に行くはずだったのだが、 次女が朝食前に吐いてしまう。またノロウィルスか。

朝日新聞の記事によると 結構流行しているらしい。おとなしくしているか。

行事好きの次女は涙を流して悔しがっていた。

_ [Ruby] ONJava: 2005 Year in Review

2005年のJava界を振り返る。

しっかりRubyも(Ruby on Rails経由で)参照されている。 Javaにとっても無視できない存在になった一年であったということか。 もっとも私にとっては実感はないのだが。

これが私(や他のRuby開発者)の生活の安定につながればよいのだが。

_ [本] Joel on Software

Joel on Software 献本されたものを読む。Excelをはじめとするパッケージソフトウェア開発と、 私が普段接している、オープンソースソフトウェア開発や受託開発ではいろいろと 違うところがあるのだが、表面的な違いを無視すると共通することは多いように思えてきた。

もう一度読み返したい本である。

今回読んだ範囲内で一番強く印象に残ったのは、 「コストをかけるべきところにしっかりコストをかける」点だ。 日々の業務の中で、かけるべきコストがかけられなくて最終的な効率が落ちているケースが たまに見受けられる。お金が絡むといろいろ面倒ではあるが、 この辺は改善していきたいものだ。

_ [Ruby] 1.8.4 リリース

出た。

出したのは私だが、実際に苦労したのは数多くの協力者の皆さんである。 大変感謝している。入手先は以下の通り。

md5sumは bd8c2e593e1fa4b01fd98eaf016329bb、サイズは 4312965 バイトである。

1.8.4での変更点は、以下のページにまとめてある。

これも皆さんの労作である。感謝、感謝。


2005年12月25日 クリスマス [長年日記]

_ [教会] 礼拝

次女は思ったより早く回復し、家族で教会に出席できた。

今日は聖餐会のみ。しかし、クリスマス当日ということで気合いが入ったのか、 話者の皆さん、どれもすばらしい話であった。感動した。

_ [聖書] クリスマス ≒ キリストの誕生日 ≠ 12月25日

以前、13日の金曜日について検証したことがあったが、今回はクリスマスについて考えてみよう。

12月25日は一般にイエス・キリストの誕生日と言われていて、 それにかこつけて、玩具業界のマーケティングや、 ホテル業界あるいはさまざまな分野の商魂たくましい活動が繰り広げられるわけだが、 実際にはイエス・キリストの誕生を祝う行事がベースになっていると考えられている。

本来は恋人たちの季節でも、子供たちの季節でもないわけだ。

しかし、 聖書的に考えると、12月25日がキリストの誕生日であることを示す証拠はない。 むしろ歴史的には、 古代ローマ時代ゲルマン人に広まっていたミトラ教の冬至のお祭りが形を変えたものだと 考えられている。クリスマスツリーやらなんやらはミトラ教のシンボルが形を変えたものだ。 次第に短くなっていく日照時間がこの日を境に長さを取り戻すありさまが、 太陽神の復活になぞらえられたのだそうだ。 これが「復活」をキーワードにイエス・キリストと結びついたのだと考えられる。 この辺はイースターと同様だな。

聖書を見るとキリストの誕生日を特定できる情報はほとんどない。 唯一証拠と考えられそうなものは以下のものだ。

ベツレヘム(エルサレム近郊と言っていいだろう)は、雪が降るほど寒くはないが、 冬真っ盛りの冬至のころに野宿をするほどは暖かくないそうだ。 聞くところによると冬は羊の放牧はしないということだ。

ということは、12月25日はキリストの誕生日ではないということでもある。では、いつか、となるとヒントがあんまりないんだよなあ。

あまり明確な根拠のないいくつもの言い伝えは存在していて、 12月25日もその一つだが、他には

  • 8月説
  • 5月説(5月20日)
  • 4月説(4月6日)

などがあるが、当然確証はない。私自身は4月説を受け入れてはいるが、 証拠はない。

ま、正直なところ、何月何日に生まれたのかなんてことは (少々の知的好奇心を満たす以外には)全然なんの役にも立たない。 2000年前の太陰暦を現在の太陽暦にマッピングできるはずもないし。

重要なのはイエス・キリストが生まれて、 彼が救い主であることなのだ。

メリークリスマス。


2005年12月26日 [長年日記]

_ [言語] Setter/Getterを作るのがめんどくさかった

プログラマー日記より。

「Setter/Getterを作るのがめんどくさかった」ので、 グローバル変数を多用して泥沼にはまってしまった人を見て、 嘆いている人を見て。

「Setter/Getter をいちいち作るのがめんどくさかった。」という言い訳を聞いて、めんどくさがらずにちゃんと作れ!と怒るのは簡単なんですが、そうじゃないんです。そうじゃなくてSetter/Getterを作るのがめんどくさい言語仕様に疑問を持つべきなんです。あるいは、Setter/Getterを作るのがめんどくさくないようにするにはどうしたらいいかを考えるべきなんです。

...

実は、初心者の疑問や意見には、ときどきハッとするものがあります。ただそれは普通に聞くと「初心者の戯言」にしか聞こえません。特に技術力があればあるほど、そういう傾向になります。これは仕方ないことではあるんですが、しかし頭の思考をそこから一歩抜け出して、「なぜこの初心者はこういうことをいったのだろう?」と考えてみることが大事です。なんというか、初心者の言葉を第三者として外から眺めてみる感じでしょうか。

その通り。その延長線上にRubyのデザインがある。

っちゅーか、たまに自分で大きめのプログラムをRubyで書いてみると 「こんなのめんどくさいなー」と感じることがあり、 それが文法の「改善」の動機になることは比較的多い。 見逃してはいけないデザイン上のインプットだと思う。

Rubyについては最近はだいぶ安定したけど。

_ 時間がない

A Strolling Programmerより。

というか、子供できちゃうと本当に時間がない。まつもとさんはよくできるなぁ、4人もいるのに。

それはもう経験の差ではないかと。もう13年も父親やってますから。

なんてね、実際は内助の功が大きいのであった。 最初、父親に慣れてない頃は主に会社で開発してたから(自宅にはPCがなかった)、 子育てはあんまり影響してないし。 最近は上の子を活用したり。私の仕事はコミュニティがだいぶ肩代わりしてくれてるし。

_ OB

Z会と大学受験支援サイト』には、 各大学の著名卒業生のリストとかが載っているわけだが、 筑波大の「経済界」のリストに

まつもとゆきひろ - オブジェクト指向スクリプト言語Rubyの作者、情報学類卒

が入っているのはどうかしてると思う。もっとも、そのリストの先頭は

登大遊 - ソフトイーサ代表取締役、情報学類在学中

だったりするのだが。なんてACな。

しかし、「いとうまゆ」やら「犬丸りん」やらが同窓生だとは知らなかったな。

_ [会社]忘年会

2006年忘年会。今回は和食。

今年は良かった。悪い良い方をする人も目立たなかったし、 宴会の余興も楽しめた。ギター演奏やら舞踊やら。 普段見れない才能を堪能した。

こういうのを見ると音楽的才能を伸ばさなかったことが悔やまれるな。 まあ、早いうちに人生をプログラミングに最適化してしまった結果ともいえるのだが。

食事にも会話にも余興にも満足した。 忘年会は来年もこうありたいものだ。


2005年12月27日 [長年日記]

_ [会社] 仕事納め

今年の出社日は今日で終わり。

一年かけて机の上に積み重なった、 書類、雑誌、書籍、紙切れなどを片付ける。 ほとんどのものは破棄。一部は本棚に移動。

毎年この時期だけは机の表面がきれいになる。 2週間くらいしかもたないのだが。

_ 病気(3)

今度は長女が具合が悪くなった。 次々と病気をするものだ。

_ 後で書く

Setter/Getterの件」で、 初心者の意見からデザインのアイディアを拾うというワザを披露したわけだが、 実は最近気をつけている「アイディアの素」がもうひとつある。

が、冬休みが始まってしまったので後で書くことにする。 ま、「後で書くメソッド」についてはPaul Grahamも認めているようだし。

ヒント:スケーラビリティ


2005年12月28日 [長年日記]

_ 病気(4)

今度は私が....。

げ...。気持ち..悪い...。

_ 病気(5)

次は妻が...。


2005年12月29日 [長年日記]

_ 回復

妻はたいしたことなく終わったらしい。

私もだいぶマシになったが、それでもまだ調子悪い。 食欲ないし。

子供たちは長女を除いては回復したようだ。 長女だけは少し回復したと思ったら、 食べ過ぎて具合が悪くなることをもう数回は繰り返している。食い気があると言うか何と言うか。


2005年12月30日 [長年日記]

_ 年賀状

病気とかで引き延ばしていた年賀状の準備。

KreetingKardとかを使いたいところだが、 準備時間がとれず妻のPCにプレインストールされていた 「筆ぐるめ」を使うことに。

昨年同様、負けた気がする。

_ A Little Anti-Anti-Hype

Bruce Eckelの記事への返歌。

Pythonコミュニティは「これこそが正しいやり方」と主張するが、RubyコミュニティはMatz自身が「Ruby Sucks」とRuby批判を述べたりする、という性格の違いを述べている。

(のだが、このエントリを書いている2006年1月2日現在、この記事、O'Reilly Ruby Blogから読めなくなっている。削除されたか?)


2005年12月31日 大晦日 [長年日記]

_ [OOP] Classbox

OOPSLA 2005の論文集を読んでいたら以下のような論文を見つけた。

Classbox/J: Contolling the Scope of Change in Java

Alexandre Bergel et al.

これはJava版だが調べると(例によって)Smalltalk(Squeak)上に実装した Classboxについて述べた論文[PDF]もあるそうだ。

ざっと読んだ限りでは、以前からRubyに欲しいと思っていた機能のように思える。 selector namespaceよりも包括的で有効な機能のような気がする。

懸念される点は性能(Smalltalk上のナイーブな実装でメソッド呼出し時間が40〜60%増)だ。あと多重継承(Mix-in)のある状況にどう適用させるかも検討する必要がありそうだ。

それと、Classboxって名前もあんまり気に入らない。かっこよくない気がするなあ。

_ [PC] もうだめだ。

メモリ関係の症状が悪化した。 数十分も使っているとハングする。 日常的な作業はできそうにない。

Webやメールは他のPCでもできるが、 開発レポジトリへのアクセスや sshの鍵などがPCにあるから、Rubyの開発はとうぶん滞りそうだな。

正月明けたら修理に出そう。 結構かかりそうだなあ(泣)。

_ [家族] 家庭の夕べ

年末忙しかったり、病人がいたりで、変則的に土曜日になってしまった。

今回は「あなたを好きな理由」というテーマで、 家族それぞれの良い点を列挙するという活動を行った。

自分に対してもいろいろと書いてあったのだが、 一番うれしかったのが「公平」と書いてあったことだ。 もちろん私がいつも公平を保っているわけではないのだが、 そうありたいとは願っていて、 その点を見てもらえていたのはとてもうれしかった。


最新 追記