最新 追記

Matzにっき


2003年11月01日 [長年日記]

_ [TV]超星神グランセイザー

ホテルで朝起きてテレビをつけるとやっていた。 息子の『テレビくん』では見たことがあるが、 うちの近辺では放送していないので実際に見るのははじめて。

  • 戦隊シリーズと仮面ライダーの中間くらいが対象か
  • 格闘シーンの殺陣はキック主体でスピード感がある(コマ落としも有効)
  • キャラ多すぎ、把握できないよ
  • 子泣き爺いが博士か。夢見るぞ

_ [K-OF]昼食会

K-OFの会場を散策した後、 Rubyな人々13人と昼食会。

  • (う)さんの奥さんはmakiさんの高校の後輩
  • 日本Rubyの会(または地球Rubyの会日本支部)
  • 実態は宴会の窓口?
  • テーマは「オープンソース」。直球勝負
  • などなど

_ [K-OF]『オープンソース』

午後は私の話、「オープンソース」。 漢(おとこ)らしいと言われたが、実際に決めたのはグッディの前田社長だから、 漢(おとこ)らしいのは彼ということになる。

後で当日もっとも人が集まったセッションだと聞かされた。

当日のスライドはこちら(一部修正済み)。

好き勝手なことを90分も話したが、聞いた人はどう感じたんだろうか。

話の要点は

  • オープンソースには自由がある
  • オープンソースは魔法じゃない
  • 重要なのはプレゼンスの向上
  • オープンソースで食って行ける人がもっと登場する必要がある。

くらいか。しかし、「プレゼンスの向上」ってのは、結局はマーケティング重要ってことで、 そういうのが好きじゃない私にとってはつまらない結論でもある。現実はまだまだ厳しい。

_ [K-OF]『オープンソース論 遠隔授業』

大阪市立大学非常勤講師、グッディ前田社長による遠隔授業。 毎週、講義するなんて大変だなあ。

気になったのは、学生の質問が、 (コモディティ化した)ソフトウェアの特徴と、 オープンソースの特徴を混同していることだ。

これは誤解している人がほとんどなのでしかたないのかもしれないが。

_ [K-OF]『オブジェクト指向Ruby実践事例』

人があふれていた。結構注目されていたということだろうか。

席を外していて「マーシャとライザ」の話が聞けなかったのは残念だ。


2003年11月02日 [長年日記]

_ [教会]松江支部出席

久々の松江出席。が、しかし、昨日までの大阪がこたえてかなり疲れている。

日曜学校は「ピリピ人への手紙」および「ピレモンへの手紙」。 パウロの伝道について。

_ 言葉遊び

正解はどれ?

  • 鋼の錬金術師
  • 鼻毛の錬金術師
  • 裸の錬金術師
  • 浜辺の錬金術師
  • 畑の錬金術師

娘に怒られた。ファンだったらしい。

_ コンピュータ出版の問題点

ツッコミいただいたが、別にたいしたことを考えちゃいません。

イメージしていたのは

  • 入門書ばかりが幅を利かせていること
  • 定番、名著と言われている書籍でもすぐ絶版になること

くらいです。「売れない・商売にならない」のも現実ですけどね。


2003年11月03日 文化の日 [長年日記]

_ [家族]玉湯町文化祭

とかいうものがある。私が生まれ育ったところにはそんなものはなかったので、 ものめずらしい。

町内の幼稚園、保育園、小学校、中学校の生徒、および有志による作品が公民館に展示される。 うちの子供たちのものも展示されていたので、見に行くことにする。

うちの息子は紙を切り張りしてものを作るのが好きで、 彼(とクラスメート)による全長1mは越えるクジラと、 彼一人で作ったと胸を張るカモメを見せてもらった。

娘たちは版画が展示されていた。

_ [家族]お好み焼き

夕食は外食ということにする。なにげなく入ったお好み焼き屋だが、 妙に安い。どうやら鉄板の上で自分で作るらしい。

子供たちは喜んで作っていた。が、これだったら自宅でもできたような...。 ま、いいか。

作っている最中、鉄板に触れて負傷者一名。

それなりにおいしかった。おなか一杯。また、太るぞ。


2003年11月04日 [長年日記]

_ [K-OF]後片づけ

会社で買ってもらった大阪までのチケットの精算などの事務手続き。

あと、会場に忘れたもの*1を着払い宅急便で届けてもらう。 これでK-OFの件は片づいたかな。

次は来週のRuby Conferenceだ。なんにも準備してないぞ。

*1  高橋さんからいただいた本です。粗末にしてごめんなさい


2003年11月05日 [長年日記]

_ [選挙]不在者投票

日曜日には用事があるので、不在者投票に行く。

わりとノンポリな私には特に指示支持する政党はないのだが、 もうちょっと緊張感のある政治をしてほしいので、 最大野党に投票することにする。

政策に同意して投票しているというわけでないのが悲しい。 ただ、ここ島根県はあまりにも保守が強いので私の投票は結局無駄になりそうな予感。

ところで、不在者投票の理由を書く用紙はあまりにもわかりにくいぞ。 改善要望。

_ 言葉遊び

最近、ラジオで聞いた言葉

  • 100%天然だから安心です。

    使用例: 本商品は100%天然の純トリカブトエキスです。天然ですから効果のほどは安心、確実です。

  • 食品ですから副作用はありません。

    使用例: 本商品は高カロリーチョコレートバーです。食品ですから体重増加などの副作用はまったくありません。

まったく。信じる方もどうかしてると思うが。

_ [食物]お好み焼き

お好み焼きでこんなツッコミをもらうとは思ってもみなかった。

まず、Xellossさん、

お好み焼きには混ぜてから焼く関西風と層状に具を積み重ねていく広島風がありますが、どちらが好みですか?

とのツッコミ。

私なんかの好みを聞いてどうするの、という気もしないでもないが、 答えると、どっちも好きです。というか、あれらは同じ名前でも別の食べ物ですよね。 ただ、広島風は自分で上手に作るのは難しいですよね。

昔々お好み焼きに凝っていた頃はイカリソース広島風というのを愛用してました。 でも、イカリソースが大阪のソースメーカーだと知ったのは最近です。

自宅で自分で作ることもあります。私はほとんど料理はしないんですが、 お好み焼きを焼くのは私の仕事になってます。 そういえば妻の実家でも父親の役割だったそうで、伝統と言えば伝統かも。

うちのお好み焼きはホットプレートを使うどちらかと言えば関西風のものです。 特徴はサイズ。円型ホットプレートと同じ大きさのものを作ります。 これをひっくり返すのは一種の芸ですね。

それからyooseeさん、

関東のお好み焼きやは自分で焼くスタイルの店の方が多い気がします。

そうなんですか。知りませんでした。そういえば関東に住んでいた頃には お好み焼きを食べに行くことは滅多になかったような気がします。

関東と言えば、今度はもんじゃ焼きなる食べ物にも挑戦しようと思っています。

_ [映画]『ノッティングヒルの恋人』

ノッティングヒルの恋人 [DVD](ジュリア・ロバーツ)

レンタルビデオで見る。 妻が妙に好きな映画*1なのだが、私は未見だった。

男の立場から見ると、あまりモテた経験もないさえない男が、 なぜだか自分の本当の良さを認めてくれる超有名美人映画女優と恋に落ちる、という ある種のご都合良すぎ映画なのだが、女性はこれをどうとらえるのだろう。

ただ単に名声とか立場とかの表層的な部分でなく、魂の本質に惹かれあうとかいうロマンティックな シチュエーションが良いのだろうか。

で、見た感想は「嫌いじゃなかった」。 これはラブロマンス嫌い*2の私にしては高い評価だ。 先入観があったか、それとも別の理由か。

「本好きのモテない男」という部分に共感したのだったり(苦笑)。

*1  そういえば彼女は『エリン・ブロコビッチ』も好きなのだ。結局はジュリア・ロバーツ好き?

*2  好きなのはB級SFとかアクション映画ばかり


2003年11月06日 [長年日記]

_ [教会]教師会

11月のセミナリー・インスティチュート教師会。

要旨は

  • 暗記は重要。だがアジア人は結構暗記好きかも
  • 頭の理解と心の理解の溝に注目する

だった。

前者は結局自分の頭に入ってしまったことが力になるということ。 「脳力」が減退してきた私には耳が痛い。 アメリカやヨーロッパでは「暗記はくだらない」という感覚が一般的なようだが、 科挙の昔から暗記ものはアジアでの伝統だからな。

後者は日常生活でもよくあることで、 たとえば、私は最近まで(今でも?)、 頭ではテストファーストの重要性を理解しているが、 心で理解していなかったので実践できてなかった。

えらそうなことを言ってもできていない、という現象は 基本的にこの「頭と心の溝」が原因のようだ。


2003年11月07日 [長年日記]

_ [OSS]オープンソース的コラボレーションが社会を変える

梅田望夫・英語で読むITトレンド」から。

前回は「浅い」と評した梅田氏の(引用する)オープンソース論だが、 今回は「負けた」気がする。元々はWired誌の記事。それから村山尚武氏のBlog

実際に本文を 読んでもらった方が良いのだが、「barn raising(地域協同作業としての納屋の棟上げ)」と形容される 共同作業そのものにこそオープンソースの価値があるという論。

実際にある程度の規模のオープンソースプロジェクト(cmail, ruby)を「成功」させ、 たぶん日本で一番オープンソース経験が深い人々のうちの一人であろう私には、 当然そんなことは分かっていた、.....と言いたいのだが、 もちろん、気持ちとしては分かっていたが、 それを自覚してこれほど明瞭な言葉として「言語化」するレベルにまでは至っていなかった。

精進が足りん。


2003年11月08日 [長年日記]

_ [TV]『セーラームーン』

いかん、不覚にもこんな学芸会番組を「面白いかも」と思ってしまった。 こんなことではいかんぞ。アニメ版でも同じような目に遭ったことがあるような。

_ [TV]『プラネテス』

原作の良さはどこへ行ってしまったんだ。 これでは「宇宙を舞台にしたギャグアニメ」だ。こんなものを期待しているわけではない。 週を追うごとに悪化している。

うちの息子なんか、「宇宙? なにそれ、興味ない」状態だから、 将来の世代の宇宙にかける夢のためにも期待していたのになあ。

_ [TV]『ふたつのスピカ』

同じ宇宙を目指すにしてもこっちの方が良い。 風情がある。 たぶん、あんなに現代に近い状態で「東京宇宙学校」ができる未来は現実には来ないだろうけど。 夢はある。

ところで、なんでここにきてNHKはこんなに宇宙ものアニメを連発するのか。 あ、「衛星アニメ劇場」だからか。

でも、それでは地上波の『サヴァイヴ』が説明できないな。

_ [TV]『超星神グランセイザー』

日記を見た井上社長から息子さんのために録画したテープを貸してもらう。 彼のうちはケーブルテレビで見ることができるのだ(うちは提供範囲外)。

3話から6話までまとめてみる。先日大阪で見たのは6話だったのね。

息子ははまっているようだ。今後どうするんだ。

  • なんとキャラの多さに適応できてきた。驚き
  • ダムを壊したりするシーンとかは東宝ならでは、か
  • ワイヤーアクションは東映の方がうまいな
  • 話の展開がゆっくりでパターンでないのは戦隊ものよりも対象年齢が高いってこと?

東宝ならではの路線を作りつつあるのだろうか。 そういえば、「ゴジラを呼ぼう」としょっちゅう叫んでいた『流星人間ゾーン』は東宝だったのだろうか。

Googleに聞いてみた。 そうらしい

追記

上記のリンクからさらに調べると、東宝子供番組は

という系譜があるらしい(7,8年に一度返ってくるのか)。 サイバーコップは見たことがあるな。ビデオ合成主体で新鮮だったが、目にツラかった。まだ学生だった頃か。 そういえばなんとなく共通項があるかも。 また共通に登場している俳優もいる。子泣き爺とか、宇宙考古学者とか。

さらに追記

娘に「なんで博士を子泣き爺って呼ぶの?」と聞かれる。 「昔ウソップランドという番組があってね」と話しはじめたものの、 なんと説明してよいか言葉に詰まる。

なんともう20年も前なのか。赤星さん、ぜんぜん変わらず。昔からおっさんだったものなあ。

_ はっ

いくら子供といっしょだからとはいえ、いいオジさんが子供番組ばかり見ているのはいかがなものか。 また、妻に軽蔑されるだろうか。

_ [原稿]次のネタは

もう来週にはLinux Magazine 1月号の〆切が来る。 〆切は週末なのだが、ちょうどRuby Conference期間中なので早めに出したい。 が、テーマが決まらないのだ。

今考えているのが「型」で、型の目的、種類、メリット・デメリットなどを解説した後、 StrongTypingとかtypes.rbを紹介しようというものだが、どうも地味だ。

私は地味なの大好きなんだが(じゃなきゃ言語屋なんてやってない)、 一般受けはしないかなあ。


2003年11月09日 [長年日記]

_ [教会]岡山で会議

寝坊する。目が覚めたら待ち合わせの時間になっていてショック。 目覚ましが聞こえなかった。子供でもしないような失敗を。 やはり夜型の生活をしてるくせにたまに早起きしようというのが難しかったか(いいわけになりません)。

で、会議。最近は自分で運転しなくてもよいのでずいぶん楽だ。

で、会議、会議、会議、またまた会議。全部終わって帰ってきたら夜9時過ぎていた。 会議そのものは非常に有意義だったのだが、体力が...。

会議途中でパワーポイントを使いたいという要望があったが、 プロジェクターが調子悪くて画面が映らない。 結局スキャン周波数の設定を変更して映るようになったのだが、 貴重な数分と、プレゼンの雰囲気を失ってしまった。 プロジェクターにはいつも悩まされる。 教会でも苦しめられるようになるとは時代も変わったものだ。


2003年11月10日 [長年日記]

_ 日付のミス

11日のこのエントリは本来はこの日のぶんです。


2003年11月11日 [長年日記]

_ [選挙]選挙結果

一日たって結果を眺める。結局は二大政党が伸びて、小政党が縮小という構図のようだ。 スケールメリットは政治の世界にも存在するようだ。

元々私が希望していた「緊張感のある政治」という観点からは成功と言えるだろう。 問題は個別の政策が今後どうなるかだ。 昨日までは我々が主人であったが、今日からは奴隷にならないよう監視していく必要がある.... のだろうが、はたしてどうやって監視したものだか。

ロビー活動について考えるべき時なのだろうか。

追記:

このエントリ、本来は10日ぶんなのですが、日付を間違って入力しちゃいました。 ツッコミももらっているので、そのままにしておきます。

_ [原稿]準備が重なって

前回の海外出張(JAOO)のときも、 Linux Magazineの連載と日経バイトの記事と講演の準備が重なって、 かなり大変だったが、今回も Linux Magzineの連載と、Texas A&M Universityの講演と、 Ruby Conference 2003のキーノートの準備でてんてこ舞い。

しかも、今日になってLinux Magazineの連載のテーマで使おうと思ってた プログラムが目的にまったく合わないことを発見してしまった。

ゼロから書き直しだ。ああ。

ちなみに今回のそれぞれのテーマは以下の通り。

Linux Magazine 2004年1月号は「ユニットテスティング」。

Texas A&M Universityの講演は「Ruby, the object-oriented language」。 これはBjarne Stroustrupから招待されたもの*1

Ruby Conference 2003キーノートは「Vision for the Future」。 Riteがどうなるかという話をこりずにまた繰り返します。 文法とかはちょっと具体的になってるかな。

日本に帰ったらスライドも公表します。

*1  今、Stroustrupのデスクを借りてます

_ [本]『あなたの人生の物語

あなたの人生の物語 (ハヤカワ文庫SF)(テッド・チャン) 新進気鋭のSF作家、テッド・チャンによる短編集。

現実逃避に読みふける。 私にとって面白かったのは以前にも読んでいた『理解』と『72文字』。 逆に面白くなかったのは表題作『あなたの人生の物語』と『地獄とは神の不在なり』。

『あなたの人生の物語』は、言語を扱っているだけに興味深かった。 Sapir-Wirfs仮説の影響もあるように思えるのだが、 もう少しツッコミが足りない気がした。 まったく違う体系の言語が認識に影響を与えていく姿をもっと書き込んでほしかった。 でないと、なんで突然時間を越えちゃうのかが理解できない。 あれ、もしかしてなにか誤読してるのかな。読み返してみないと。


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

_ [Ruby]旅立ち

朝10時の飛行機で出雲空港から羽田まで。機体はMD-90。

東京事務所に顔を出し、ネット接続。 原稿を書こうと思ったが、OSが

17時に成田に着き、チェックイン。19時25分の飛行機でダラス・フォートワース空港まで。 機体はB-777。

機内は結構混雑している。前は2席占有して寝ることができたこともあるけど、 今回はとてもそんなことはできそうにない。お隣はスミス夫人、きさくで信仰深い方だ。 聖書をいつも手にしておられる。

機内で見た映画は

  • 『Italian Job』

    邦題はたぶん『ミニミニ大作戦』。ひどいタイトルだ。あまり考えずに見る映画だろうなあ。 最初の強奪のアイディアは秀逸。後半の展開はスマートではない。 ていうか、信号管制システムを乗っ取ってるわりには頭悪すぎ。

  • 『Alex & Emma』

    邦題知らず(未公開?)。小説家と速記者との間のラブコメディ。あんまり面白くない。 Kate Hudsonはキュートだ。

  • 『13階段』

    邦画。けっこう面白かった。でも、なんかすっきりしない。 ストーリーの緻密さを感じさせないところとか、 光造形システムで指紋の偽造はできそうにないなあとか。

現地時間で15時、 空港に到着すると、運転手が待っていた。Texas A&M UniversityのあるCollege Stationまで車で。 3時間かかった。ほとんど寝てたけど。

着いたホテルは、 実際にはホテルというよりゲストハウスという感じ。壁に貼ってあった紙によるとコロニアル風なのだそうだ。 なかなか感じの良いところだった。泊まったのはFish Fiddle's Room

Bjarne Stroustrup教授とディナー。

その後、ケーブルテレビでアニメを見ながら明日のスライドの準備とLinux Magazineの原稿書き。

アメリカは今異常気象らしい。西海岸は大雨で車が水に沈んでいるし、東海岸は大雪で大変らしい。 さいわいテキサスは(まだ)平穏だけど。


2003年11月13日 [長年日記]

_ [Ruby]Texas A&M University

ホテルで朝食をすませた後、Stroustrup教授の車で大学まで。 大学を一周して見物させてもらう。

しかし、広い大学だ。筑波大もいいかげん大きいなあと思っていたけど、 ここはその何倍も広い。冗談のような大きさのスタジアムが印象的だった。

Bjarneいわく「キリスト教はテキサス州2番目の宗教だ。最大はフットボール」だそうで、 熱の入れ方は半端ではないそうだ。

午前中はBjarneの紹介で、Salih Yurttas教授と会う。 「今度は授業でPythonを扱おうと思ったけど、Rubyにしようかなあ」とおっしゃっていた。 言語好き同士話が弾む。

昼食をBjane、Salihと一緒にとった後、今度はComputer Science Dapartmentのディレクター、 Valerie Taylor教授に紹介される。

しかし、いくらわざわざ海外から来た客だとはいえ、 実質的に無名な私にきちんと時間を割いてくれる丁寧な扱いに感銘を受ける。 しかも、コンピュータ科学部のボスまで。感謝。

Valerieは

私はずっとAWKなの。 研究してるシステムはPerlを使ってるけど、開発は学生がやってるから。

とのこと。

今回は夕べのディナー、今日の朝食、昼食とずっとBjarneと一緒だった。 せっかくの機会なので聞いた話をまとめておこう。思い出せることを端から書き上げたので、 順不同、時系列無視なのであしからず。

Matz(以下M): C++にはSimulaの影響が見えますけど、他のオブジェクト指向言語、 たとえばSmalltalkからは影響を全然受けていないんですか?

Bjarne(以下B): 受けてないね。 私は元々(ケンブリッジ大の大学院で)分散システムの研究をしてたんだけど、 分散システムのシミュレータを書くのにSimulaを使ったんだ。 ところがSimulaは遅すぎて結局BCPLで書き直したんだけどね。 こういう経緯があるんでCにSimulaの機能を追加したC with Classを作り、 最終的にはC++になったというわけなんだ。

M: Javaについてどう思いますか? (Aarhusでも聞いたけど)

B: 聞かないでくれ。もしPositiveなことを言えば、そんなので満足してるかって言われるし、 Nagativeなことを言えば波乱が起きるし。 15年くらい前にはObjective-Cの連中といろいろあったし。 言語論争は嫌いだ。

M: そのObjective-CのBrad Coxが今JavaとRubyを使ってるっていうんですから皮肉ですよね。 今なにを研究してるんですか。

B: 今は他のプロジェクトを助けたり、会議したりしてるんだ。院生を指導したりもしているよ。 こっち来てから1年くらいにしかならないんで本格的な活動はまだだね。 また分散の研究をしようかなあって思ってるんだ。 あと、大学っていうのは研究だけじゃなく教育もやるところだからね。それについても活動しているよ。

M: というと?

B: 来年そうそうから学部生の授業を持つことになってるんだ。C++を教えるんだけど。 で、いい教科書がなくてねえ。困ってるんだ。 C++を使った教科書はどれも分厚いばっかりで面白くないし。 たとえばこれなんか「回文チェック」って例題のために、 擬似コードでの回文とはなにかって説明に2ページ、C++のプログラムにまた2ページ使ってるんだよ。 テンプレートを使えばこんなのワンライナーなのに(と黒板に書きはじめる)。 おまけにこれなら任意の型のベクターの回文チェックができる。

B: 今は学生のためにGUI機能を設計してるんだ。 今時の授業じゃGUIを使わないわけにはいかないけど、 私が授業でやりたいのはツールキットの説明じゃない。 既存のツールキットをそのまま使ったらその説明時間だけで授業が終わっちゃうからね。 ダイアログを呼び出す同期呼び出しとポーリングを使った非同期呼び出しができる単純なものを考えてるんだ。 やっぱり複雑過ぎるものは駄目だからね(と、設計を黒板に書きはじめる)。

他にもいろいろと話したような気がするのだが、忘れてしまった。もったいない。 録音でもしておくべきだったか。大半はアメリカ、日本、デンマーク、トルコ(Salih教授の出身地)の 文化・慣習の違いについてとかだったような気がするけど。

Design and Evolution of C++, The(Stroustrup, Bjarne) しかし、Bjarneはえらく頭が良くて、しかも(私の視点から見ても)言語設計に対して「正しい思想」を 持っているようなのに、C++がえらくアレなのはいったいどういうことだろうか。 やはりC++が志向する領域が本質的に複雑で、その複雑な状況に対応するためには言語も複雑にならざるをえなかったということなのだろうか。 もちろんC++の問題の本質は使い方によるのであるが、そういう使い方ができてしまうのも問題といえば問題なのだが。

The Design and Evolution of C++を(サイン入りで)いただいたので、 ちょっと研究してみることにしよう。

夕方からは今回の招待のメイン、招待セミナー。 今回のスライドはここ。 下手な英語ではあったが、そんなに悪い話はしなかったと思うけど、あんまり盛り上がらなかったなあ。

その後、Austinに移動。運転手は昨日と同じ女性だ。今夜は1時間半ほどで到着。 やっぱり途中は寝ていた。乗り物に乗るとすぐ寝ちゃうなあ。

ホテルでRich Kilmer、Chad Fowler、David Alan Blackたちに会う。 少しおしゃべりしてから部屋へ。

で、部屋でLinux Magazineの原稿を書くのであった。

追記:

ツッコミをいただいたので返事しておく。

まず、KLさん。Rubyについて聞かなかったのは、 彼がRubyについて名前以外なんにも知らなかったからです。 私がセミナーで説明した後ではある程度分かって「面白い」と言ってくれましたが、 その後すぐ別れちゃったし。つっこんで聞く機会はありませんでした。

次に、とおりすがりさん。 「私がJavaが嫌いだからBjarneからネガティブな発言を引き出したがっている」という推理は 当たっていないように思います。だって嫌いじゃないもん。 興味が持てないだけで。たぶんBjarneも同じ意見だと思います。


2003年11月14日 [長年日記]

_ [Ruby]Ruby Conference 1日め

  • Working in the Garden: Web Apps with Borges - Eric Hodel

    各ページの状態をContinuationとして保存するWebアプリケーションフレームワーク、 Borgesの説明。元々は Avi Briantが作ったもの。Smalltalk版のSeasideからの逆移植。 おもしろい仕組みではあるが、どこまで実用になるんだろうか。

    資料

  • The State of XML Processing in Ruby - James Britt

    RubyにおけるXMLの現状。なんとたくさんのライブラリがあることか。

  • Object-relational mapping with Lafcadio - Francis Hwang

    リレーショナルデータベースをオブジェクトにマップするフレームワークLafcadioの紹介。 Madeleineのような Object Prevalenceを 使うアプローチもあるが、既存のデータベース資産を活用したかったということ。 彼自身が開発したいくつかのWebサイトで活用されているということ。

    しかし、Francisは早口でついていくのがやっとだったりする。

  • Ruby World: (not) Implemented - Steve Tuckner

    発表を申し込んだ時にはRuby Worldの実装について語ろうと思ったが、 全然時間が取れなかったので、企業にRubyを導入するというテーマに変更した、というもの。 次の日のJim Freezeの発表とちょっとカブってるかな。

    しかし、結局Ruby Worldがなんであるかはよくわからなかった。次回に期待。

    資料

  • Generating Code in Ruby - Jack Herrington

    タイトルにも表紙にもRubyとは一言も書いてないが、例題は全部Rubyで書いてあるという 『Code Generation in Action』の著者、 Jack Herringtonがコード生成のパワーについて語る。

    資料

  • Roundtable

    Rubyの作者まつもとを囲んで質疑応答。なんについて語ったっけ。覚えてない。

カンファレンス全体の 資料はここ

このホテルにはインターネット接続がない。来年の会場にはネットアクセスを希望したい。 夕食にSchlotzsky's Deliにいき、ワイアレス接続。

_ [映画]深夜放送

明日のスライドの最終修正をしながら、 部屋のケーブルテレビで映画を見る。

  • 『Transporter』

    えーと、なんというか、フランス版ダイ・ハード? 主人公、クールな仕事人という最初の印象と後半の印象が全然違う。

  • 『Blind Fury』

    ルトガー・ハウアー主演、西洋版座頭市。 ただ単に似ているというだけでなく、本当に座頭市の翻案らしい。 実は前から好きな映画である。

結局早朝まで起きている。時差ぼけというわけではないようだが。


2003年11月15日 [長年日記]

_ [Ruby]Ruby Conference 2日め

  • Programming LEGO MINDSTORMS with Ruby - Shashank Date

    カンザスから車で12時間かけて家族連れでやってきたDate(「だて」と発音する)氏と息子さんによるプレゼン。 Rubyで、というより、LEGOマインドストームの魅力でひきつけるプレゼンだった。 11歳のRudyくんによる発表も絶妙。

    技術的にはdRubyを使って手元のマシンで作ったプログラムを 赤外線タワーのつながったサーバーに送るところが興味深い。

    Date氏はインド系で、Dateには「寄進者」という意味があるのだそうだ。

    資料

  • (...aside) - David Alan Black

    大学教授であるDavidが学生から授業のコメントを集めるため、 原則的に匿名で、かつコメントに対する返事を書くことができるような一種の掲示板を作りたくて、 用意したフレームワークasideの紹介。

    資料

  • Building Environment for MUES - Michael Granger

    MUD(multi user dungeon)の新しいサーバであるMUESの紹介。 日本ではあまりMUDをやっている人がいないが、 欧米ではそうとう人気があるらしい。

    資料

  • A Cluless Ruby Hacker Explores Security - Nathaniel Talbott

    セキュリティについて改めて考える。 Rubyではバッファオーバーフローの心配がないし(あれば私のせいだ)、 $SAFEなどもあるので、セキュリティ的には有利だが、 結局はセキュリティというものは顧客(あるいはユーザ)次第だということ。

    資料

  • Teaching Ruby to Testers - Bret Pettichord

    有名なテストエバンジェリストBrian Marickの同僚であるBret Pettichordが、 彼と一緒に行っているテスト啓蒙用講義の紹介。テストとは何かから始まって、 こんなことを教えているというような話。

    Win32OLEを使ってIEを操作してWebアプリケーションをテストするデモが印象的。

  • Introducing Ruby to the Corporate World - Jim Freeze

    ISO9000認定企業におけるRubyの使い方。 Rubyの使われ方ってのはだいたいunofficialなものが多い中、 こういう「本気」の使われ方はかなり興味深い。

    資料

  • Keynote 「Visions for the Future」

    私によるキーノート。将来Rubyはこうなるという話。

    言語がRuby2、その実装がRiteと明確化する。個別の点については、今後また論評しよう。 発表資料はここ

    要旨。

    • 1.9は鬼車、世代別GC、M17N。
    • ローカル変数、定数、インスタンス変数、クラス変数、定数のスコープが変わる
    • 文括弧としての()はなくなる。括弧内では改行が無効
    • 多値が(また)整理される。文法として多値をサポートするか、Values<Arrayを導入するか
    • メソッドの可視性。privateが独立した名前空間に
    • 条件式中の範囲演算子(.., ...)を変えたい
    • キーワード引数、Hashリテラルの新形式
    • メソッド結合
    • セレクターネームスペース
    • オプショナルな型
    • 大々的なRCRの募集
    • RiteのGCは1bit reference countとmark&sweepの組み合わせ

夕食後、となりのホテルに泊まっているRyan Davisの部屋の接続を借りる。 MacってのはEtherに繋げておいて自分が無線LANの親機になるなんてことができるのね。 Linuxでは(できるんだろうけど)そこまで簡単ではないなあ。


2003年11月16日 [長年日記]

_ [Ruby]Ruby Conference 3日め

日曜日なのでJim Freezeと一緒に近くの教会に出席する。 このチャペルでは時間差で4つのワードが集会を開いている。 出席したShoal Creek Wardは朝8時半から。 今日はたまたまプライマリーの発表であった。

  • Building with Rake - Jim Weirich

    教会に行っていたのでこのプレゼンは聞けなかった。 RakeはRubyで実装されたMakeの代替。

    資料

  • Toward a Refactoring Framework for FreeRIDE - Hal Fulton

    この話の途中あたりから出席。 非常に簡単だが、FreeRIDEにリファクタリング機能を追加するというもの。 9月にJAOOでThoughtworksの人たちがEclipseでJavaプログラムに対してやってみせて、 「こんなのできないか」という聞いていたその機能がまさに実現されている。 もっともまだ構文解析は行っていないのでやっているのは簡単なことだけだけど。

  • Ruby Java Debug Wire Protocol - Rich Kilmer

    JVMをRubyからリモートデバッグプロトコルJDWPを使って操作する話。 RubyからJVMの任意のスレッドを止めたり、再開させたり、またJVMを終了させたり。 また、Flashを使ったGUIフレームワークAlphも印象的だった。

    資料

総括

今年はOOPSLAと別行動となった最初の年だが、参加者は昨年よりわずかに減った程度。 48名だったか。うち日本人は私と高橋さん。小規模な割には有意義なカンファレンスであった。 なによりも発表が多彩で充実している点が重要。 あ、でも食事はいまいちかも。

日本でRubyの集まりをやろうと思えば、 東京であれば人数だけならそこそこ集められるかもしれないが、 有料(参加費だけで$200)で平日を含むとなるとこれだけ参加者がいるかどうか。 またこのレベルのプレゼンを集めるのは不可能かも。 いや、あきらめず日本でも「Ruby Conference Japan」を開催したいものだ。

その後

次の場所に旅立っていった高橋さんを見送った後、 疲れがたまっていたので夕方4時から夜10時すぎまでひたすら寝る。 夜、目が覚めてからテレビでいくつか映画を見る。

  • 『Harry Potter and the chamber of secret』

    DVD持ってるんだからいつでも見れるんだけど、つい見てしまう。 さすがに字幕なしでもほとんど分かる。

  • 『タイトル不明』

    ジャッキー・チェンの映画。途中から見たのでタイトルがわからない。 ニューヨークで友人が誘拐されたが、ジャッキーがその活躍で友人を救出。 警察と協力してギャングの親玉をつかまえるってな話。 はっきり言って駄作。見所は最後に出てくるホバークラフトなんだろうけど、 ぜんぜん面白くない。

  • 『A Nice Guy』

    オーストラリアで料理ショーをしている元警官ジャッキーが ふとした偶然からマフィアの抗争に巻き込まれる。駄作

    女の子が三人(ジャッキーのガールフレンド、テレビ記者、ジャッキーのアシスタント)出てくるのだが、 キャラが立っていないのでいてもいなくても同じ。特にガールフレンドはうるさいだけ。 アジア人、白人、黒人と並べてバランスを取ったつもりか。 最後の巨大ダンプによる破壊シーンはカタルシスがある。ホバークラフトよりはマシ。

    ところで、映画ではしばしば主人公による不法行為(破壊や殺人)はうやむやにされるのだが、 この映画では明示的に警察官(主人公の友人)が黙殺してた。

  • 『Thunderbolt』

    自動車修理工(なぜかレースの腕も一流)のジャッキーがレース好きの悪党にからまれて、 レースする破目になるというもの。駄作。 どうせワンパターンならカンフーだけにしとけばよいのに。

    正義の味方の車は三菱で、悪党はそれ以外(日産とマツダ)というのが印象的。 そういえば『Who Am I?』でも同じことが。

    一部舞台が日本なのだが、間違った日本観があるようだ。 パチンコ玉はそんなに大きくありません。 フンドシ、イレズミ、坊主頭の人たちはヤクザですか?

    ところでこれら3本の映画では、なぜいつもカウンタックが潰されるのだろうか。 なにか恨みでもあるのか。 いや、ポルシェもロールスも潰してたな。いわゆる高級車ならなんでもいいのか。

これらジャッキーの映画は時間の無駄。見ない方が良かった、 というか最初からそう分かっていたのに延々と見てしまった私がダメダメだ。


2003年11月17日 [長年日記]

_ [Ruby]帰国

朝、『The Ruby Way』の著者であるHal Fultonに送ってもらって空港に。 著名人をこき使ってるなあ。

空港で朝食にトルティーヤのようなものを。まずい。 食べきれなくて半分は捨てる破目に。

Austin空港からDFWへ。AA61便。 この便は東京まで同じフライトナンバーが割り当てられているが、 Austin・Dallas間とDallas・成田間では飛行機が違う。 Austin・Dallas間はBoeing S-80。初めて乗った。飛行時間は1時間弱。

Dallas・成田間はB777。飛行時間は13時間。長いぞ。

機内でみた映画は以下の通り。

  • 『Tomb Raider2』

    アンジェリーナ・ジョリー主演のシリーズ2作め。 あんまり考えて見てはいけない。 ただ、謎解きの結果としてシマウマやキリンの立体映像が出て、 「アフリカね」はいくらなんでもないだろう。 敵方も「アフリカとは思わなかったな」なんて感心してるんじゃない。

    追記

    後で見るとこの映画、ヤン・デ・ボン監督作品ではないか。 ヤン・デ・ボンといえば『ツイスター』やら『スピード』やら、 「まだまだヤンデボン」、「そこまでヤンデボン」といいたくなるしつこさがウリだと思っていたのだが、 この映画にはそのテイストはない。淡白なヤン・デ・ボン作品とは残念だ。

  • 『Pirates of the Caribbean』

    ディズニーランドの「カリブの海賊」が原作ということになるのかな。 アトラクションで見た通りのシーンがいくつかそのまま取り込まれているところが笑えた。 不死でなくなった海賊が(つかまれば縛り首確定なのに)降参してしまうところは、 脚本が抜けているのか、それとも安全に慣れた身が急に危険にさらされると動けなくなってしまうってことか。

なんか今回映画ばっかり見てるなあ。


2003年11月18日 [長年日記]

_ [Ruby]帰国

日本に着いたら夕方4時。一日損した気がする。 理屈ではアメリカに移動した時に一日稼いでるはずなのだが、 そういう実感はあまりないのはなぜだろう。

4時着では羽田からの出雲便最終には間に合わない。 その国を代表する 国際線空港から国内線空港まで2時間以上かかる構造はとっても間違っていると思う。 成田が駄目ならせめて関空は、と思うのだが、あっちも同様に駄目だ。

ということで、東京泊。宿は東横イン羽田大鳥居新館。 チープなホテルではあるが、インターネットは使えるし、軽い朝食はついてるし、 羽田空港までバスで送迎してくれるし、文句ない。

で、ネットにつないで旅行中に不自由してたメールの読み書きやウェブのチェックなどしていたら、 なんだか明るくなってくる。しまった、朝になっていた。


2003年11月19日 [長年日記]

_ 帰宅

寝る前に明るくなってしまったので、身仕度をして、 羽田空港までバス。10時の出雲便。

昼食には出雲そば。なんだか和食が食べたくて 自宅についたらさすがに眠くて寝てしまう。 夕方目を覚まして、夕食。 あいかわらず睡眠は時差があっても食事は厳密にローカルタイムに従っている。

で、また夜は眠れぬまま、明るくなってしまうのだった。 盛大な時差ぼけか、単なる自己管理能力の欠如か。 なんだか後者のような気がする。


2003年11月20日 [長年日記]

_ [生活]睡眠

息子が保育園に行くのを見てから就寝。 目が覚めるともう帰ってきていた。なんと夕方4時まで寝てしまったのだった。

_ [Ruby]Rubyの型システム

何ヶ月かに一回、「Rubyにも(オプショナルな)型システムがほしい」というリクエストが来る。 大体はC++やJavaなど静的な型言語の経験がある人からのものである。曰く、

  • 型があると適切なエラーメッセージが得られる
  • 型があると型情報をヒントにしてプログラムが読みやすい
  • 型があるとコンパイル時にエラーが検出できる
  • 型があると最適化のための情報が手に入る

ま、わからんでもない。

が、元々は動的な型言語であるRubyにオプショナルな型を追加するのでは、 コンパイル時のチェックもさほど期待できないし、最適化も無理だろう。 となると、得られるメリットは最初のふたつということになる。 しかも、プログラムの読解には型よりもRDocなどによる適切なドキュメントの方が (嘘がなければ)より効果的だと思われる。

メリットばかりではない。通常、静的型システムはクラスをベースにして考える。

IO f

であれば、IOクラスまたはそのサブクラスのオブジェクトを受け付けるというような感じである。 ところが、これではfにStringIOオブジェクトを渡すことができなくなる。 StringIOはIOクラスと同じように振る舞うがIOのサブクラスではないからである。 つまり、たとえオプショナルでも静的型を導入することで柔軟性が減ってしまうということだ。 これは避けたい。

静的型言語では、多重継承やinterfaceを使って上記の問題を回避しようとしているし、 Rubyでもたとえばモジュールを使って解決可能ではあるが、 それでは手間が増えて嬉しさが減ってしまう。だったら最初からJavaを使えばよいんだし。

ところが、最近comp.lang.rubyで登場した提案は、 今までの「単なる静的型へのノスタルジー」をちょっと越えていた。 それは「型チェックをシグネチャで行う」ものだ。 これだと上記のデメリットがない。

もっとも、オプショナルとはいえ型システムは言語の性格を変える可能性があり、 しかも実装もそんなに楽ではない。 おまけにチェックによりパフォーマンスが低下する可能性が高いとなれば、 適切なエラーメッセージというメリットとのトレードオフを十分検討する必要があるだろう。

で、Jim Weirichからメソッド結合を使った提案が登場したのだが、 それについてはメソッド結合について解説してから取り上げよう。

追記

ツッコミにそれぞれ答えておこう。

まず、とんびさん。型があると補完ができるということですが、 Rubyはあまりに動的なのでオプショナルな型が少々あったくらいではお望みの補完は無理です。 プログラムの実行中にメソッドが増えたり減ったりすることが起きるのに適切な補完はできないでしょう。 逆にそこまで厳密でなくとも良いのならRDocの情報などをもとに補完するIDEは(原理的には)可能だと思います。

それから、mizuさん。offにするのはアリだとは思います。 ただ、オプショナルな型では穴が大きすぎでコンパイル時のチェックは行うことができず、 結局実行時チェックにならざるをえないことを考えると、どこまで嬉しいかどうかは疑問です。

mputさんのコメントはその通りなので、 最後、shugoさん。 こういうのをstructural conformanceというのか私はわからないのですが、 期待するメソッドを持っているかどうかだけでチェックし、継承関係を見ないという点では structural conformanceと呼べるかも。structuralという単語からは 「オブジェクトの構造(≒インスタンス変数など)」の方を連想しちゃうけど。


2003年11月21日 [長年日記]

_ [会社]出社

火曜日に帰国したのだが、寝込んだりしていたので今日が帰国後最初の出社になる。 今回はおみやげはなし。というか、本当に時間がなくて家族にもろくにおみやげを買う暇がなかった。

_ [Ruby]ローカル変数

Rubyの設計で失敗したと思ってる点は実はいくつもあるのだが、 そのうち最大のものはおそらくローカル変数のスコープだ。

現在のRubyのローカル変数のスコープは

  • class/module/defで導入される(対応するendまで)。これらはネストしない。
  • ブロックで導入される。これはネストする。

というものだ。後者が曲者だ。このスコープにより、 ブロックの内部ではじめて登場したローカル変数はブロックの内部でだけ有効で、 ブロックの終了とともに消えるというルールが成立する。

一見するとそんなに変なルールではない。実際に私も最初に思いついた (closureのためのローカル変数が必要で導入した)時には、結構いいアイディアだと思っていた。

ところが問題はRubyの特徴である宣言がないところにある。 つまり、あるローカル変数の有効範囲がどこまでなのかがひとめでわからない。 ブロックが始まる前に初期化されているかどうかは、スコープの先頭までさかのぼって見ないといけない。 あるいはたまたま変数名が重なっちゃったりすると思わぬ挙動を引き起こすことになる。

そんな探さなくちゃいけないほど長いメソッドを書くことや、 偶然重複しちゃうような安易な名前を使うことに問題があるといえばそうなのだが、 「変数のスコープがひとめでわからない」というのはRuby的には面白くない。

で、機会があれば直そうとずっと考えていたのだ。

直す方法はいろいろ考えられたが、長らく考えて結局これがベストと思えるものは以下の通り。

  • class/module/defで導入される(対応するendまで)。これらはネストしない。
  • ブロックパラメータはローカル変数に限る
  • ブロックパラメータの有効範囲はそのブロック限定

要するに宣言なしにネストするスコープを導入しようとするから問題なわけで、 最初に設計した時点では宣言を避けることにこだわり過ぎていたようだ。 今回はブロックパラメータを宣言として利用しようということ。

この際ブロックパラメータと同じ名前のローカル変数がすでにあった場合にはどうするべきかという課題がある。 これには、「名前を気にしたくない、重複を許すべき」派と 「重複は悪である、許すべきでない」派がいる。私(や前田くん)は後者だが、 世の中には前者も多いようだ。今のところ、「許すが警告が出る」という どちらにも嬉しくない両者痛み分けの対応を考えている。

以前のアイディアの中には

  • 「:=」で代入した変数はブロックローカル
  • ブロックパラメータの後ろに「;」で区切ってブロックローカル変数名を羅列

などもあったが、前者は簡潔な記法ではあるが「宣言」としては目立たなすぎるので不採用。 後者もそんなに多用することはないだろうということになった。局所変数が必要であれば

local {|a,b,c|
  ...
}

というようなローカル変数導入用メソッドを用意すればよいだろう。 ブロックパラメータはローカル変数に限るというルールにより、 パラメタ宣言は代入の左辺よりもメソッド定義の仮引数に近いこととなり、 あるいはデフォルト値を使って

let {|a=1,b=2,c=3|
   ...
}

のような書き方を許すようになるかもしれない。

結局採用しなかったアイディアの中でもっとも大がかりなものは、 ブロックローカル変数は、現在のように最初に宣言されたブロックに所属するのではなく、 もっとも外側で参照されたブロックに所属するというものだ。

def foo(a,c)
  a.each{|e|
    e.each_with_index{|ee,i|
      break if ee == c
    }
    puts i    # ここでiが参照されている
              # よってiはこのブロックに所属
  }
end

結構面白いし、今でもうまく運用できそうな気もしている。 しかし、「説明するのが面倒なルールは良くないルール」の原則によりボツになったのだった。

_ [日記]時差

Xellossさんから「最近日記が1週間ずれている気がするのですが」と ツッコミをいただいてます*1。 これは一種の時差ぼけです(本当か?) 。そのうち追いつくと思います。

*1  これを書いてるのは27日です


2003年11月22日 [長年日記]

_ [家族]校内音楽会

急に寒くなる。と思ったらどうやら具合が悪くなってるらしく、 悪寒がしているらしい。

午後からは娘たちの校内音楽会。前述の通り、具合が悪いので私は前半はパス。 娘の登場する後半だけ聞きに行く。まあ、けっこう頑張っているのではないだろうか。 私は子供時代、音楽(特に楽器演奏)が得意ではなかったので、よけい評価が甘くなりがちだ。

_ [家族]ペット

なかなか引っ越しについて話も進まないし、 これではいつになったら犬が飼えるかわからないぞ、 ということで、 当面引っ越しせずにハムスターを飼おう、と決める。

子供たちが気に入ったのはロボロフスキーという種類のハムスターなのだが、 あまりに素早いので気軽にかわいがれないだろう、ということで、 パールホワイト種のものを購入。

名前はパールホワイトだから「パール」だそうだ。Rubyじゃないのね。

_ [Ruby]インスタンス変数

昨日のローカル変数に続いてインスタンス変数について。

Rebecca Wirfs-Brook女史*1によると、 クラスのユーザには三種類あるそうだ。

  • 自分自身
  • サブクラス
  • 他人

これはC++のprivate/protected/publicに相当する。私がC++のデザインでもっとも優れていると思う点だ。

ところがRubyのインスタンス変数は、

  • どのクラスのメソッドからも同じスコープで見える
  • 外からは参照できない

ため、 アクセスに「自分自身かサブクラス」と「他人」の二種類のレベルしかない。 当初目指していた「単純さ」という点からはこの素直なデザインは良い面も多いが、 問題もある。

サブクラスからすべてのインスタンス変数が見えるということは、 継承関係があるものからは実装を隠蔽することができないということだ。

このことはまだいい。サブクラスから状態を操作するためのprivateメソッドを用意することで対応できるから。 しかし、インスタンス変数名がうっかり衝突した場合は対応不能だ。悲劇としかいいようがない。 特にモジュールはどのようなクラスにMix-inされるかわからないので、 うかつな名前のインスタンス変数は使えない。

それもこれもインスタンス変数にprotected相当しかないことが問題だ。 privateなインスタンス変数があれば問題は解決するのだ。

ということで、Ruby2ではprivateなインスタンス変数を導入しようと思う。 これから考えなければならないのは、文法をどうするか。

現在との互換性を重視するならば、

  • @fooで普通の(protectedな)インスタンス変数
  • @_fooでprivateなインスタンス変数

というのが考えられるだろう。しかし、インスタンス変数は原則privateであった方が問題が少ない、 という観点からは、その逆、つまり

  • @_fooで従来の(protectedな)インスタンス変数
  • @fooでprivateなインスタンス変数

の方が良いのかもしれない。もうちょっと考える余地がある。

*1  私、個人的にWirfs-Brook女史のファンで、昨年のOOPSLAで出会った時にはサインもらっちゃいました


2003年11月23日 勤労感謝の日 [長年日記]

_ [家族]結婚記念日

11月23日は私たちの結婚記念日である。なんともう12周年。

いろいろあったな。内助の功に感謝したい。 もう少しコンピュータに対して理解してくれると助かるが、 きっと向こうも「もう少し私のことを理解してくれるといいな」と思ってるに違いない。

なぜか私の兄弟(で結婚してるの)は、みなこの日が結婚記念日なのだ。

_ [教会]松江

久々の松江出席。今日は息子が人見知りが激しく、ずっと付き添っていたので、 日曜学校などには出席できなかった。

集会終了後は自宅に戻って寝ていた。時差ぼけと風邪とがいっぺんに来た感じ。 海外に行った後はたいてい具合が悪くなるんだけどね。


2003年11月24日 振替休日 [長年日記]

_ [家族]ボーリング

振替休日ではあるが、体調の優れない人が数名いたので、 ぐたぐたとして過ごす。

夕方からはさすがにこれではいけないだろうと、 一念発起して近所のボーリング場に出かける。

いや、久しぶりのボーリングはなかなかうまくいかないものだ。 私のスコアは120。もっとも子供用のガーターレールに数回助けられたので、 本当ならもうちょっと(だいぶ?)成績は悪かったはずだ。

_ [Ruby]クラス変数

インスタンス変数の次はクラス変数。

Rubyのクラス変数(@@fooのようなもの)は、クラス変数という名前ではあるが、 その実体は「一番内側のclass/module文で定義されているクラス(またはモジュール)をスコープとするグローバル変数」である。

だから、クラス定義のボディ部でも、メソッド内部でも、クラスメソッド内部でも、 あるいはそこで定義されている特異メソッド内部でも、とにかくclass文の範囲内では同じ変数が見える。

ここまでは(一度分かってしまえば)問題ない。

現在の仕様ではクラス変数への参照が行われた時、以下の順序で探索が行われる。

  • 一番内側のクラス(またはモジュール)
  • そのスーパークラス(順次Objectまで)
  • なければエラー

しかし、これではクラス変数がどのクラスに属するかすぐにはわからない。 それだけではなく、代入が行われるタイミングによってクラス変数が所属するクラスが変化する可能性さえある。

そこでRuby2ではクラス変数は必ず一番内側のクラスに所属することとし、 スーパークラスへの探索は行わない。 もしサブクラスからクラス変数にアクセスしたい場合にはアクセサを用意することで対応する必要がある。


2003年11月25日 [長年日記]

_ [会社]IPA実地調査

今年のIPA「オープンソフトウェア活用基盤整備事業」の前期の実地調査に参加する。

今回の「クロスプラットホーム性を持つ帳票開発ツールの開発」は 担当者がよくやってくれてくれているので(私はコーディングには参加していない)、 とどこおりなく調査は進行した。来月最終的な試験と検収を行うが、 きっとこれもうまくいくことだろう。

一箇所、仕様の問題が発見されたが(数値フィールドが実数に対応していなかった)、 これは後期に直すことにしよう。

よかった、よかった。今後は後期をきちんとクリアして、 実務に使えるオープンソース帳票作成ソフトウェアとして 定着するように活動を目指していこう。

お疲れさまでした。> 担当者

_ [WWW]最低映画館

Webを閲覧しているうちにたどりついたこのページ、 一部趣味にあわない部分もあるが、非常に楽しめた。いやあ、映画って本当に面白いですね。

_ [OOP]オブジェクト指向の弱点

アットマークITのDevelopment Style Round Table Talkingなる座談会の 第一回目のテーマが 「オブジェクト指向の弱点」だそうだ。

ま、結局はオブジェクトは「振る舞い」でラップしてあるので「値」に直接触れないことが 「弱点」だと言いたいらしい。わからないでもない。

今回主たる話題になっているXMLには(スキーマがなければ)データに型がない、 いわばタイプレスなんで、 強い型を持つオブジェクト指向になじまない側面があるのはわかる。

でも、本当に値はオブジェクト指向で扱えないんだろうか。 スキーマがなく型情報がないとあるエレメントやアトリビュートがどんな型を持つのか わからない。それは確かだ。しかし、現実問題として人間が実際に使う XMLのエレメントやアトリビュートが真にタイプレスということはないように思う。

ということは、実はこの座談会で問題にしている「オブジェクト指向の弱点」は、 「静的型システムを持つオブジェクト指向の弱点」あるいは「JavaとXMLの相性の悪さ」に すぎないのかもしれないとも思った。

そう。前から「XMLとJavaは相性がよい」ってことをあちこちで聞くたびに、 「それってほんとかな」って思ってたんだ。 ライブラリはそろっているかもしれないが、 本質的な相性の悪さは解消してないんじゃないだろうかと。

今回、JavaやXMLの第一人者と呼ばれている人たち(なんだと思う)が、 こういうことを言っているってのは、私にとって我が意を得たりと感じてしまう。 彼らには不本意な話かもしれないけど。


2003年11月26日 [長年日記]

_ [生活]町民温泉開放日

というイベントがあって、町民はどの温泉旅館でも無料で入れるのであった。 もっとも認証は行われないので町民でなくてもOKだと思うけど。

今日は「長楽園」に。入るといきなり常識はずれに広い露天風呂。 ちょっと驚いた。

つかっていると女性が入ってきた。もっと驚いた。むこうも驚いていた。 ここの露天は混浴なのだ。 妻に後で聞いたところ混浴とは書いてなくてただ単に露天風呂とだけ書いてあったそうだ。 うーむ。

お互いに気まずいので衝立の影に隠れてしまった。 驚いたがリラックスという感じではなくなってしまったなあ。

で、次に「松の湯」に。こっちは普通の温泉旅館であった。

_ [Ruby]Force of Nature

[ruby-core:01784]によると

When I say "force of nature", I mean that Matz has shown a tendancy to do things the way *he* wants to do them, regardless of what everybody else wants. For example, there are popular RCRs which Matz rejects for no other reason than that he doesn't like them aesthetically.

Pokemon can be controlled; they're like little fuzzy power tools. Matz can't be controlled. He's like a river; you sort of know where it is going, but you can't really do anything about it.

Ruby is developed under a dictatorship (albeit benevolent), not a democracy. Our discussions about how Ruby *should* be may give him something to think about, but as forces for change, they're pretty weak.

-- SER

いったい私は天災かなにかですか?


2003年11月27日 [長年日記]

_ [Ruby]原先生訪問

松江で会議があったということで、原先生が会社を訪問してくださる。

一緒に昼食。前田くんの日記も参照。

  • bladeのトラフィックは長岡技科大の2,3割を占めるらしい
  • bladeのスレッドインデックスをゼロから張り直そうとすると1週間かかっても終わらないらしい
  • namazuのインデックスも同様
  • 数学の入門書は全部わからなくてもOK
  • FixnumとBignumは統一できないか - 実装の違いを完全に隠蔽できないんで無理
  • Haskellのモナドは原先生にもわからない。「私の専門に近いはずなのにわからないのはおかしい」
  • 代数の試験問題を難しさの調整まで行って構成するシステムを作った。が、使い方が難しすぎて2年目には使いこなせなかった。
  • 原先生の夕べの宿は一泊2000円。奥さんがWebで見つけたらしい
  • そういう倹約家かと思えば先生がAudiのスポーツカーを買うのを止めないというのはどういうことだろう

しかし、自分と全く違う発想ができる人が近くにいたら面白いアイディアがどんどん出てくるのかもしれない。 普段、一人で作業することを好む私だが、ちょっと考えさせられた。

_ チケット手配

12月5日のOpenSource Wayのチケットを予約しようと思ったら、パックは10日以上前でないと駄目なんだって。 しょうがないから通常のチケットを手配する。ちょっと高くついたなあ。

_ [原稿]Linux Magazine初校

初校が送ってきていたので、校正と10行足りない文を書き足して編集部にメール。 これであとは土曜のソフトウェア特許研究会の準備だけだ...と思っていたら。

_ [原稿]OpenSource Way 2003

「配布するための資料の〆切は昨日だったんですけど」とメールが届く。パニック。 うう、完全に忘れてた。「明日の夕方までにはなんとか」ということにして、夜なべしてスライド書き。


2003年11月28日 [長年日記]

_ [OSS]オープンソースウェイ2003

のスライドは完成。公開は発表後ね。

_ [Ruby]GCデバッグ

最初月曜に出すと言ったpreview3だが、月曜は休日ということで火曜に変更。 しかし、まだ出ていないのだった*1

気になっていたのがGCのバグ。手元でtest suiteを実行するとセグメンテーションフォールトを起こすのだ。 さすがに手元のテストに合格しないままpreviewを出すのは心苦しい。

SEGVの原因はGCマーク。どうやら、こういうことらしい。

  • test suiteではGCをいじめるため非常に長いリンク(10000リンク長)のオブジェクト群を作っている
  • それをマークすると再帰が深くなる
  • GCマークはスタックの深さを調査して深くなり過ぎるとアルゴリズムを切り替えるようになっている
  • ...はずだったが、なにかの加減で予想よりはるかに浅いところでSEGVする

最初は-lpthreadをリンクしたせいだと思っていたのだが、-lpthreadのリンクを外しても問題は依然として発生する。 libc6のバージョンの問題かなあ(libc6 2.3.2.ds1-9)。

もともとGCマークはそんなに深い再帰をしなくても構わないはずなので、 自力で再帰レベルを管理して、ある程度(現状250)以上深くなれば再起を使うのをあきらめることにする。

これでtestは通るようになった..けど、明日のソフトウェア特許研究会も気になるし、 previewリリースにはもうちょっとかかるかな。

*1  12月1日現在まだリリースされてません


2003年11月29日 [長年日記]

_ [特許]京都へ移動

「ソフトウェア特許研究会」に参加するために京都に移動。

朝7時の「スーパーやくも」で岡山、「のぞみ」に乗り換えて京都まで。 京都駅で地下鉄に乗り換え、さらに今出川で市バス。京都大学へ。 ここで12時すぎ。

京大の中でさんざん迷ったあげく会場のVBL(ベンチャービジネスラボラトリ)に。 いやあ、遠い。

_ [特許]ソフトウェア特許研究会

で、やや遅れて研究会が始まる。プログラムは以下の通り。

開会:柴田有三氏(KGC理事長)
理事長って言葉からは連想できないような若い人。KGCというのは京大をベースにしたベンチャーの集まり...なのかな?
挨拶:扇谷高男氏 (内閣府参事官/京都大学国際融合創造センター客員教授)
えー、20人ほどのあつまりにはもったいないような「偉い」人。 知的財産権を強化するのがトレンドであるというような話。
講演:末松千尋氏 (京都大学大学院経済学研究科助教授)
CNET Japanの連載でも有名な人。 特許とは直接関係なかったが、トランザクションのあり方という視点から、 オープンソースを含む各種の枠組みを比較していたのが興味深かった。 あと、オープンソースソフトウェアのライセンスは少数に収束するという意見も。 個人的には「収束してほしいが、難しいだろう」と「でも、新規に選ぶ場合にはメジャーなものを選ぶべき」 という意見で、自然に収束する方向にはないと思う。
講演:谷川秀和氏 (IRD国際特許事務所所長/京都大学知的財産企画室産学連携研究員)

ソフトウェア特許についての知識あれこれ。実務に携わっている人からの話は知らない世界のようで刺激を受ける。 うーむ、そういうものなのね。

途中、HTML2.0をカバーしそうな特許について紹介された(2945753号、2982752号、2982753号)。 僕にはクレームを読み取る能力はないのだけど、彼の言うことを信じるなら、 この特許を行使するとHTML2.0以降を差し止めできるわけで、 Eolas特許なんか問題じゃないくらいインターネットに大混乱を起こせることになるなあ。

パネルディスカッション1:パネラー まつもとゆきひろ (Rubyの人)
えーと、特許については素人の発言(笑)。スライド
パネルディスカッション2:パネラー 松田陽一氏 (某企業知財部)
時間が押してて少ししか発表できなかった人。企業名はインターネットでは明らかにしたくないそうだ。 内容は要するに「現実を直視しよう」、「他人の権利を尊重しよう」という ある意味常識的なもの。『Think GNU』は特許的には(事実に反する)プロパガンダであるとの批判も。 確かにそうかもしれない。
閉会:office(The Pointer)
この会の主催者、というか言い出しっぺ。関西方面の人はお互いに知っているみたいだけど、 私にとっては終始謎の人であった。コピーレフトならぬ実施権レフトを構想中?
研究会終了後:「ちくわ」にて宴会
店の名前は「ちくわ」だったと思ったんですけど、あんまり定かではないです。

で、全体を通しての私の印象。

  • まあ、今から「特許を無くせ」は無理だろう。 また、ソフトウェアを特許の適用外にするというのも(世界の流れから見て)非現実的。
  • でも、本音では、特許のない世界の方が、私には住みやすそうだなあ。
  • ということで、スライドにも書いたように以下のことができれば、比較的現実的に幸せになれるかも。
    • 審査の厳密化
    • 公知化主段手段の緩和
    • インタフェース・プロトコル・ファイルフォーマットの特許化禁止
    • オープンソースによる侵害に対する対処方法の明確化
    • インターネットで配布されるソフトウェアにおける特許問題の明確化
  • ま、お互いに相手のことを知らないとね。特にこっちからの啓蒙が重要。
  • 風穴さん、登録してたけど来なかった。奥村先生とお話しできなかったのは心残り。

_ [特許]京都から帰る

お店を早めにおいとまして、来た道を逆にたどって帰る。

  • やっぱり京都は遠い
  • 帰り道、「タクシーをつかまえるかな」と考えただけでタクシーが止まった。 京都のタクシーはテレパシーが使えるのか。

2003年11月30日 [長年日記]

_ [教会]出雲訪問

定期訪問。個人的都合で出雲への訪問を1週遅らせたらいろいろ問題があった。 滅多にないことをした時に限って。

ステークの人事。

今月のお話のテーマは「悔い改め」。

  • 悔い改めは単なる反省ではない。罪を離れ生活を変えること
  • 悔い改めにはしばしば苦痛が伴う
  • たとえばパウロは昔の仲間からは裏切り者と見なされ、クリスチャンからはなかなか信頼されなかったことだろう。
  • にもかかわらず悔い改める動機は、信仰と神への愛だ

とかなんとか。時間が短かったのでかなり割愛した。


最新 追記