最新 追記

Matzにっき


2006年06月01日 [長年日記]

_ [Ruby] Bitwise Magazine :: Ruby programming tutorial

Bitwise MagazineでのRubyの紹介。

Bitwiseについては「4月に紹介するからなんか一言」と言われていたのに、 ほったらかしにしてしまっていたのだった。 4月になっても出たという話を聞かないから「企画が没になったのかな」と 思っていたのだが、2ヶ月ほど遅れて登場した、ということらしい。

こっちはまあ、普通。

しかし、もう一本あるのだ。

_ [Ruby] Bitwise Magazine :: Ruby Programming

タイトルがふるっている。

Ruby programming's hidden treasure..? or a flawed gem..?

だそうだ。「Flawed」とは「偽の」とかいう意味だから、 「見かけ倒しの宝石(なの?)」という感じか。

まあ、「驚き最少の原則に反している」だの、 「全然シンプルな文法じゃない」だの、言いたい放題(笑)。

まあ、本当のことだけど。

ただ、「驚き最少の法則」は私が言い出したことじゃないんだけどなあ。 まあ、いつものことだよなあ。万人が驚かない言語なんて不可能だってば。 私自身は口にしないようにしてから3,4年は経つと思うんだけど、 まだこんなこと言われるんだよなあ。

さて、こんなにけちょんけちょんにけなしているように見えるのだが、 最後にはほめられているようだ。

Huw: Look, in all this discussion, it sounds as though both of us have been picking holes in Ruby. Anyone would think we didn’t like the language. That obviously isn’t true.

...obviously, both of us must feel that Ruby is a pretty interesting language. Let's wrap this up by trying to pick out the features that appeal to us. For myself, I think I'd say that it's the combination of reasonably thorough object orientation with a lightweight syntax. In my experience, Ruby is the most truly OOP language I've ever used with the sole exception of Smalltalk. Now, I am not completely obsessed with OOP - but it seems to me that either a language should do object orientation properly or it should leave it alone. Having decided to go for OOP, at least Ruby has, unlike most other supposedly `OOP languages' done it thoroughly. And, unlike Smalltalk, it has a simple syntax and isn't weighed down by being embedded into a hermetically sealed world \u2013 the entire environment that Smalltalk is obliged to carry around with it. In short, Ruby is, in principle, a perfect Rapid Application Development language.

Dermot: I'd agree there. Ruby is one of the most interesting languages around - certainly, the most interesting that I've seen in a long time. It makes a pleasant change from the endless variations of the C syntax that seem to come out (C++, Java, C# and so on). I particularly like the fact that while it is indeed object oriented, you don't need to know that to do simple stuff: I think mixins are brilliant!

さて、最後に面白かったところを二ヶ所ほど引用しておこう

And while I complain about the syntax (I’ve lost count of the number of times that I’d like to do something unpleasant to Matz!), writing a parser for Ruby, as I've been doing, is a whole lot different from using the Ruby language itself to do something useful.

なんだかおっかないことが書いてある。bitwise編集部には近づかないようにしよう。

Now that's a strange thought - could Ruby be the new VB?

「新たなVBとしてRubyを」ってことだけど、彼はVBの前の名前がRubyだったと知ったらどう思うだろうか。単なる偶然だけど。

_ [Ruby] mandatory arguments after splat

前にも書いた

def foo(a,*b,c)
end

のようなコードを実現した。ノードを変えちゃったので、 ripperやyarvへの対応が必要だけど、現時点ではほったらかし。

なかなか便利な気がする。オプションハッシュの取り出しとか。


2006年06月02日 [長年日記]

_ 平成17年度情報化月間 第26回 U20プログラミングコンテスト

Webページが更新されたそうだ。ちょっと「デザイン」が入ってる。

「入選者の喜びの声」とかは参考になる、かな?

_ [OSS] ZDNet.com オープンソースブログ:成功するオープンソースビジネスモデル7選

オープンソースは本質的にソフトウェアそのものは無償であるため、 それをビジネスにするのには工夫が必要になる。

  1. IBMモデル
  2. Covalentモデル
  3. JBossモデル
  4. Red Hatモデル
  5. Ingresモデル
  6. 新参型モデル
  7. 個人型モデル

NaClは上記の分類によれば、Covalentモデル+個人型モデル+αかなあ。

ここでαは

  • 顧客がオープンソースとして公開するソフトを有償で開発する
  • IPAなどの補助金を受けてOSSを開発する

などかな。個人的にはRubyそのもので商売するモデルを模索しているのだが、 いまだに決定版を思いつかない。死屍累々のありさまを見ると半端なモデルには手を出せない。

_ [Ruby] Ruby のブロックってオブジェクトじゃないよね。これって“驚き最小の法則”に反しない?

先日のBitwise Magazineの記事に対するsumimさんによるコメント。

ブロックがオブジェクトでないといって文句を言う人がいると思えば、 「なんでもオブジェクト扱いするのは、「初心者にとっての驚き最小の原則」の侵害だと思う」という人もいる。結局、どんな選択をしても誰かがびっくりするのだろう。


2006年06月03日 [長年日記]

_ SANYO もちつきベーカリー

B000BD83ZK 最近になってようやく松江市にもヤマダ電器が開店したのだが、 開店セールで安かったので、妻と一緒に見に行った際につい衝動買い。 ただし、現物は今週まで届かなかった。

で、パンを焼いたらおいしかった。 もっとも以前から持っていた象印のものと極端に違うかというと自信がない。 しかし、米粉のパンが焼けるとか、餅がつけるとか付加的な機能に期待してしまうのであった。 今後が楽しみ。

ところで、またSANYO製品を買ってしまった。 うちは洗濯機も、FAXも、ビデオデッキも、布団乾燥機もSANYO製なのだ。 別にSANYOファンというわけではないはずなんだがな。

判官贔屓?

_ 引っ越し

妹夫婦が引っ越しなので手伝いに行く...のだが、 妹がほとんど荷作りを完了していたのと、 運送業者が驚くほど手際がよかったので、 出番がない。

結局、少しだけ掃除の手伝いをしただけで終わった。 今まで何度か引っ越したことはあるし、他人の引っ越しを手伝ったことも何度もあるが、 こんなに手早いのは初めてだ。

_ [教会] バプテスマ会

夜にはバプテスマ会。私たちは新しい仲間を歓迎します。

_ 『4797336021』

4797336021

近所の本屋で購入。まだ、2章までしか読んでいないが、 この範囲で一番感動したのは、レイアウトルール。 ブロック構造をインデントで表現しつつ、 式と文の分離を発生させないというすばらしいルール。

13年前、Pythonの文法がこうだったら、私がRubyを作る動機のひとつはなかったろう。 ちなみにもうひとつの動機は、あのオブジェクトモデル。


2006年06月04日 [長年日記]

_ [教会] 第一安息日

司会を仰せつかる。まだ、恥ずかしい。しかも、第一日曜日だし。

監督会としてプライマリーにも顔を出す。 子供に分かる話となるとなかなか考えてしまう。 今日は「十戒と愛」について。ちょっと準備不足は否めないな。

帰宅後、昼寝してしまう。疲れてたのかな。


2006年06月05日 [長年日記]

_ マルチメディア通信と分散処理研究会 第127回 研究報告会

というわけで、岡山に移動。

個人的には日大の吉開先生の 「ネットワークの価値モデルと、その応用に関する考察」という発表が一番面白かった。

ほ乳類の脳の容量とグループの大きさとの相関から、 人間が自然に構成できるグループの大きさは150前後と推定し、 それを基本にReedの法則を修正したものの、モデル化、という話。 マジックナンバー150はいろんなところに応用できそう。

そういえば、うちの教会の各支部もだいたい150くらいで頭打ちのところが多いような気がする。まあ、たいていはそれ以前に分割になるけど。

で、私の発表は「動的言語の古くて新しい世界」。 「最近、動的言語がはやってるみたいだけど、どんなもんよ」とか、 「でも、結局1958年生まれのLispにあることばっかりなんだよね」とか、 「Lispは一般受けしないんだよね」とかいうような話。

Lispを知っている人には受けたが、 Lispを知らない学生はぽかーんとしていたような。

来週の東大での話も似たようなものになるような気がするが、 もうちょっと改善しよう。

追記:

スライドを公開。 東大のスライドと比較するのも一興かも。

_ 東大での話

「未来の言語に大切なこと 〜動的言語の復権と将来〜」

概要

近年注目を集める言語はLispの機能を取り込みつつある。時代は 1958年を再発見しつつあるのか。なぜ、今Lispなのか。あるいは なぜ今はLispではないのか。また、プログラミング言語の(近)未来は どうなるのか。Ruby 開発者が独断と偏見にみちた予想(あるいは嘘 八百)を語る。

日時 2006年6月13日 13:30ー14:30
場所 東京大学 理学部 新1号館 小柴ホール


2006年06月06日 [長年日記]

_ ベンチャーファンド

先日Skypeで話したベンチャーファンドの日本事務所の人(日本人)が、 わざわざ会社まで尋ねてくださる。

うちの社長も含めて話をする。 なかなか興味深い話が満載である。 公開できないケド。

すぐに資本がどうこうという話にはならなかった(うちは外部資本に消極的だし、 なによりまだビジネスモデルの絵が描けない)が、それでも 「お互いに情報交換しましょうね」という話になる。


2006年06月07日 [長年日記]

_ カバン

長らく使ってきたUNIQLOのパソコンバッグだが、 とうとう縫い目がほころびてきた。 実際、世界各国に持ち歩いてきたわけだし、 それなりに荒い扱いをしてきたからしょうがないといえば しょうがないのだが。

で、ここずっとカバンを探していたのだが、 なかなか琴線に触れるものがなかった。 コンピュータを入れるカバンだから、 電気屋とかの類のところが良かろうと思っていたので、 あちこちの電気屋を見てきたのだが、 あんまり品揃えが良くない。

で、妻の助言を受けて、SATYの鞄屋によってみた。

なんと、PC対応のバッグなぞいくらでもあるではないか。 盲点であった。餅は餅屋。

ほどほどのサイズのものをひとつ購入。 ほんとは普段使い用にもうちょっと小さいのも欲しかったのだが、 ふたつもみっつもあってもなあ。

_ 地方銀行と海外通貨

先日、Googleからきた小切手の換金を私の銀行にお願いしていたのだが、 書類に不備があったとかで、わざわざオフィスにまで来てくださる。 うっかり遅刻してしまって、待たせてしまう。

銀行を呼びつけて、待たせる、なんて、すっごい偉そうじゃない?

書類の方はサインひとつで完了。 ついでに、PayPalからの入金について質問してみる。 昨年のRubyConfの交通費をPayPalで受け取ったのだけど、 自分の口座に送金しようとして失敗したのであった。 手数料だけ取られたし。

けど、担当者はPayPalのことをご存じなかった。 でも、調べてはもらえるとのこと。 PayPalと自由にやりとりできるようになれば、ずいぶん楽になる。

_ 寄付

先日、ニュージーランドからメールが来て

やあ、Rubyを開発してくれてありがとう。 お礼の気持ちとして、寄付したいんだけど、どうやって送金したらいい?

とのことであった。13年、Rubyを開発してきたけど、 個人からの金銭の寄付の申し出は初めてのような気がする。 AmazonアフィリエートとかAdSenseの売り上げとかはあるけど。

で、

ありがとう。

私のアドレスでPayPal口座は持ってるけど...気持ちだけで嬉しいよ。

と返事したら、ほんとに送金してきた。びっくり。

ありがたいことである。有効に活用しよう。 なにに使うのがいいかなあ。


2006年06月08日 [長年日記]

_ Alan Kayといっしょ

出雲便が満席だったので米子便を使って東京へ。 東京の方が最終便の時刻が遅いから土曜日には有利かもしれない。 なぜかゲート前で社長と一緒になる。

で、品川で待ち合わせて、私、笹田くん、江渡さんで、 Smalltalkのデザイナーでありチューリング賞受賞者でもあるAlan Kay(と仲間たち)と 昼食会。なんか、すっごい緊張してるんですけど。

彼の考えている「子供たちのためのプログラミング環境」のために RubyなどSqueak以外の言語コミュニティからアイディアを借りたい、 ということで今回のセッティングであった。大島さん、ありがとう。

なかなか面白い話が満載であった。

  • WikiWygWysiWikiについて

    「WisiwygなWiki」というのが語源なのは見ただけで分かるのだが、 実際はそれどころではない。プログラマブルなプレゼンテーションくらいから。 目指すのは21世紀のHyperCardというのが近いかもしれない。 簡単なデモの範囲内ではViscuitに似てるけど、 ターゲットはもうちょっと違いそう。

  • Alan Kayの名刺

    名刺ジャンケンで強そうなのをゲット。Bjarn Strustrupに負けない強さだろう。

  • AlanとRuby

    Alan Kayに「Rubyは好きだ」と言わせた。それなんて罰ゲーム?

  • AlanとSmalltalk

    えーと、「Smalltalkのことをもう愛していない」とか、 「Smalltalkは死んだ言語(dead language)だ」とか、 「Smalltalk-80よりもSmalltalk-76の方が私の理想に近い。Smalltalk-76はRubyに似てる(え?)」とか、 「コンセプトの私(Alan)、実装のDan (Ingalls)とのせめぎあいがあった。Smalltalk-80は私の手を離れ、Lisp好きの影響を強く受けてた」とか、 「おいおい、そんなこと言っていいのか」というネタ満載だった。

  • 拡張可能文法とマクロ

    「言語は拡張可能であるべきだが、Lispのマクロは正しい解ではない(強力過ぎ)」という点で意見が一致した。実際、私は20年近く遅れてSmalltalkの真似をしてきたわけだが、それでもなお、Alanとここまで意見が一致するのは意外であった。

  • その他、古い言語について

    IMPとかLucidとかいう初耳の言語の話をいくつか聞いた。 後で調べなきゃ。歴史に埋もれていったアイディアや言語はたくさんあるんだなあ。

  • 歴史は繰り返す・悪貨は良貨を駆逐する

    すばらしいアイディアが世に広まるとは限らない。 過去の反省に基づかないで「新しい」技術が誕生するとは限らない。

    特にWWWブラウザについて、そう思ってるみたい。 全然プログラマブルじゃないし(Ajax(JavaScript)はあるけど、貧弱だし、ドキュメントモデルはHTMLページレンダリング以外の目的には最悪)、 せめてHyperCardのようなものが普及していれば。

    彼らはWikiWygのようなものを、できるだけダウンロードなしに実現したいのだが、 そのためには現在のクライアントサイド技術はあまりにも弱い。

ああ、他にも一杯聞いたような気がするのに。全部録音すべきであった。

追記

えーと、一部で「Alan KayはSmalltalkよりもRubyが好きだと言った」といった言われ方がしていますが、 私が聞いたのは「(もう)Smalltalkを愛していない」と「Rubyは好きだ」です。 それぞれ別のタイミングで。

両方の発言を組み合わせて上記の結論を引き出すのは不可能ではないけど やりすぎだと思う。

_ 秋葉原

笹田くんのオフィスに寄ってから、東京支社へ。 原稿用の下調べをする。

_ [原稿] オープンソースマガジン8月号

テーマは「キャズム」。 先月のマーケティングネタのときにはみだしてしまって削った部分を 膨らませて2ページ。まあ、テーマが決まっているから書きやすい、のだが、 どうにも時間がない。

イベントと原稿〆切が重なると辛いなあ。


2006年06月09日 [長年日記]

_ Interop

今年はオープンソースパビリオンなる企画があり、 NaClも展示しているので、参加する。

海浜幕張に向かう電車で社長に会う。なんたる偶然。

あちこち回ったが、おもしろかった。

特に面白かったこと

  • 大企業の金のかかったブース。景気がいいなあ
  • 某大企業のR&Dコーナーで我が社の開発したものが動作していた。 展示している担当者に「お世話になります」とご挨拶
  • オライリーブース。make:マガジン以外には翻訳物しかないのがちょっと残念。 O'Reilly Authorの縁でグッズをいただいた。
  • SennaとHyperEstraierの解説。Rastは一歩出遅れた感じ?
  • でも、Rastがらみの商談があったぞ。

_ [原稿]オープンソースマガジン8月号

まだ終わらない。ホテルで書く。

_ [Ruby] 日本Rubyカンファレンス前夜祭

DHHも招いて。おいしかった。楽しかった。 今まで会ったことのない人にもたくさん会った。


2006年06月10日 [長年日記]

_ [Ruby] 巨大パッチ

YAPC::Asia以来1.9向けのパッチを溜め込んでいたのを一気に放出。 もちろんカンファレンス用の話題作りのためだ。

迷惑を被った人もいるだろうなあ。

_ [Ruby] 日本Rubyカンファレンス、発表、パネル

期待のRubyカンファレンスだ。

今回の出番は午前最後のキーノートと、Ruby2.0パネルのパネリストだ。

キーノートは「The State of The Dominion」。 単なる語呂合わせなんだけど、まあ、「予想外に広まったなあ」とかいうような話。 スライドはここに。

パネルは2.0について。私が話した重要そうなネタは

  • 2.0は燃料。走り続ける必要がある
  • でも、いつになるのかわからないので2007年クリスマスを目標に1.9.1を出す。
  • これを2.0と呼ぶかも

パネルのスライドはこちらに。

後はおおむねスピーカー控え室で画面を見ながらツッコミつつ。 ついでに今朝のパッチの不具合を修正したり。 パッチモンスターやうささんと顔を合わせて開発することは滅多にないので貴重な機会だ。

懇親会は最初の乾杯の挨拶(「では、乾杯の音頭を」「...乾杯。」)と、 ちょっとだけ食事を口にしただけですぐに出発。

東京テレポートまで結構距離があるのでどうなるかと思ったが、 りんかい線も、モノレールも、駅に到着した直後に電車が来てスムーズに移動できた。 楽勝で帰れた。しかし、米子からうちまでが遠い。

_ [原稿]日経Linux8月号

まだ書けてない。今月のテーマはソケットプログラミング。

以前のLinux Magazineの原稿を流用できるか、と思ったが、 世の中はそんなに甘くなく、ほとんど書き直さないといけないみたい。

ぐすん。


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

_ [教会] ファイアサイド

二組の夫婦宣教師をお迎えして、 ファイアサイドを開いていただく。 通常の集会を変更して、しかも出雲と合同でこのようなことを行うのは 大変珍しい。 ずいぶん長く教会に集っているが初めての経験だ。

通常の2倍の台数分駐車場を手配したり、 大人が話を聞いている間、子供を面倒みるのを準備したり、 普段と違うことを行うのにはいろいろと手間がかかるのであった。

で、その結果はというと、大変満足であった。

うちの教会には専任の聖職者というのがいないので、 教育や指導において、それぞれ工夫をしていても、 やっぱり素人的な部分が出てしまうのは否めない。 まあ、それぞれプログラマーだったり、教師だったり、大工だったりする人が 教会の指導者も兼ねているんだからね。

しかし、今回は大変よく準備されていたし、 なにより伝えたいという熱意と、 飽きさせないという思いやりと 注意を引く工夫のそれぞれがそろっていて、 プレゼンテーションという観点からも感心した。

また、以前通達が出ていても、忘れさられていたようなことを きちんと思い出させてくださったという意味でもありがたかった。

で、「聞いた」、「感動した」、「でも、なにも変わらなかった」というのでは 意味がないので、せっかく伝えていただいたことを、 自分の生活やワードの行動方針に活かしたいものだと思った。


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

_ [原稿] 原稿の苦しみ

終わらない。やはりソケットであれば、Cの例題を出して、 システムコールについてもざっと解説して、とか思うと悩ましい。 で、久しぶりにCでネットワークプログラミングしたら、はまる、はまる。

struct sockaddr_inのsin_portを設定するときにhtons()を忘れて 30分以上は悩んでしまった。これに比べたらRubyのソケットプログラミングは天国のようだ。 ということが、伝えたかったのだが、ページの関係もあって伝わったかどうか自信が無い。

_ スライド準備

そんなこんなで時間が取られて、深夜になってやっと、 明日の東大の講演のためのスライドを用意しはじめる。

先週の岡山大での講演ではLispがわかるおじさんにはウケたが、 学生の多くはポカーンとしていたような印象があるのだが、 その辺をちょっと反省して、書き直してみる。

でも、東大情報ならそんなこと気にすることはないのかなあ。

_ [Ruby] 「趣味の言語からビジネスの言語へ」---日本初のRuby大規模イベント開催

ITPro、高橋さんによるレポート。

タイトルがすべてを言い表しているような気がする。

で、私にとってはいつまでも趣味だが、 仕事に使う人にとってはそれでは困る、というミスマッチが 生じはじめる頃なのかもしれない。

で、私は1.9で趣味を謳歌し、ビジネスパーソンは1.8で儲けてもらうというのはどうだろうか。


2006年06月13日 [長年日記]

_ 東大講演

朝一番の飛行機で東京へ。帰りは最終便が満席で予約できず、4時の便。

羽田から東大へ移動。浜松町、御徒町、本郷三丁目。

東大の構内で迷う。安田講堂を回り込んだところで、 後ろが弧を描いていることに気がつかず、行きすぎてしまったのだ。 「建物は四角」という思い込みがいかに強いかを痛感する。

引き返して、米澤先生の教室へ。

しばらくは米澤先生と昔話に興じる。 しかし、自分が勉強した教科書の著者の人と親しく話す機会があるというのは 感動ものかもしれない。LispやらSmalltalkやらActorやら、 めずらしい話を含めていろいろと。Alan Kayは最近丸くなったよね、 Turing賞や京都賞など、世間的に評価されたのと関係あるかも、とか。 Alanの印象は、米澤先生がかつてHewittのところの学生だったこととも関係あるかも。

あと、前回のGuy Steeleの講演資料もいただく。 うーん、Fortressかあ。使いやすいのかなあ。 自分自身が想定されるユーザ(科学技術計算関係者)ではないので、 なかなか判断できないな。

で、昼食後、たいそう立派な小柴ホールで講演させていただく。

先週の岡山の話に近いが、こっちはちょっと魔法風味。

スライドはこちら

今度は優しすぎたようだ。聴衆のレベルを甘く見ていたか。

私:「Haskell難しいですから」

「ええっ?」

とか。

全般に、いろいろな人の発言の端々に最高学府の自負が感じられた。 それは良いことだと思う。「普通の人」にリーチするかどうかはともかく。

その自負にあやかるべく、大学生協で東大グッズを買って帰った。 ノートとシャーペン。なんてミーハー、と自分でも思ったが、 家族には思いのほか好評であった。類は友を呼ぶ、というか、似た者家族というか。

あと、スライド中(42ページ目)の「LispからSmalltalk、SmalltalkからRubyまで」の年数に sumimさんからツッコミがあった。

すから LISP 誕生から Smalltalk 誕生までは 14 年から 15 年とするのが順当でしょうね。ぜんぜん関係ないですが、Ruby の誕生日は 1993 年 2 月 24 日だそうですから、LISP からは約 35 年、Smalltalk からは切りのいいところで約 20 年とするのが妥当なようです。なんにせよ、Smalltalk-80 が 1981 年に Byte 誌に発表された時点にはもう、すでに“死んだ言語”だったわけですから(超新星みたいやね…w)、これを起点にする手はありません。

だそうで。言語の誕生をどこに置くかは難しいところではあるが(普通Smalltalkと形容詞なしで読んだ場合Smalltalk-80を指すと思うし)、ま、少なくともあのページの内容は不正確、だということで、ひとつヨロシク。

いや、他のページも与太ばかりだけど。

_ 羽田まで

講演終了後、いろんな人と話す機会があった。 ほんとうはもっともっと話したかったのだが、飛行機の時間に余裕がなかったので 駆け足で話すことになってしまった。申し訳ない。

最後に米澤先生から某大手インターネット企業CTOの人を紹介してもらい、 お話をする。PHPとJava半々くらいでやっていて、 近い将来ラボを開設して先進的なことをやりたいが、そこにRubyも考えている、とか。 また、大手ならではのスケーラビリティーに関する貴重な話も聞かせてもらった。

今回は羽田までタクシーで送ってもらって(豪気な)、その中での話だったのだが、 次の約束をとって、もうちょっと情報交換することにした。

なんか最近風が吹いているよね。

_ [知財] 「補償金もDRMも必要ない」--音楽家 平沢進氏の提言

まったくだ。

こういう話を積み上げて、 客を泥棒扱いする人の声に対抗せねばならん。


2006年06月14日 [長年日記]

_ 歯医者

先週削った部分に金属を入れてもらう。でも、やっぱりしみるんだけど。 うーん、ちゃんと磨いてたつもりだったのになあ。

やはり電動歯ブラシでは不足で、 超音波歯ブラシを導入すべきか、 などと考えてしまうのは、テクノロジー主導の技術屋の発想か。

ちゃんと磨けばいいんだろうけどねえ。

_ 原稿完成

日経Linux8月号原稿完成。なんか、すごい手間がかかった。 まあ、ゼロから書くことを思えば、以前の原稿を参考にできた分だけ楽だったんだろうけどねえ。

しかし、Cによるソケットプログラミングを忘れていたのにはあきれたよね。 まあ、以前からソケットプログラムが必要なときにはext/socket.cを読んでいたんだけど。

_ [OSS] 「Linuxにもっと日本からのコードを増やすには?」

ITProから。 OSDL Japan Linux Symposiumの記事。

いや、まあ、まず手を動かさないことにはならんので、 そこからじゃないかと。

で、次が伝える努力かなあ。Ruby業界では日本の動向はいつも注目されているので、 出て行ってあげると喜ばれると思う。つたない英語だろうがなんだろうが、 彼らにとっては日本語よりも65536倍わかるんだから。 わからなかったら聞いてくれるし。

要は「一歩踏み出す勇気」かなあ。


2006年06月15日 [長年日記]

_ [Ruby] Pickaxe監修

ピッケル本ことProgramming Ruby第二版、日本語訳のチェックを行う。 もう出版が近いというのに、まだまだ修正箇所が多い。

が、おかげで原著の間違いなども見つけており、それだけ質の高いものになる ...のだといいなあ。

7月上旬から中旬が発売予定。二分冊。

表紙はRubyKaigi2006のスライドで見ることができる(10枚目)

_ [Ruby]Unicode対応

ruby-talkでふたたびRubyのUnicode対応、およびM17Nについて話し合われている。

しかし、今回はAustin Zieglerをはじめとして、 私のアイディアに理解を示してくれる英語圏の人が増えたので、 以前よりもずいぶんと楽。

それと、こうしてアイディアを文章にしてみると まだM17Nで具体的に決まってないところがあちこち残っていることが 明らかになる。まあ、前から気づいてたけど。

特にコード変換まわりが鬼門だ。できるだけコード変換をしたくない、 というのが基本的な設計原理だが、とはいえやらなくてすむものでもない。

_ [Ruby] ":"とblock by indentation

ずいぶん以前からifやらwhileやらにdoやthenの代わりに":"をつける、 というPython風味の文法をこっそり入れていたのだが、 今日、とうとう外すことにした。

if foo % 2 == 0:
  puts "even"
else
  puts "odd"
end

elseの後ろの括弧は許してなかった。誰も使っていなかったと思うけど。

しかし、Haskellで得られた知見によれば、 「対応する括弧を用いる文法との相互変換を許すなら、インデントによるグループ化は有効」である。

ということは、「コードブロックの先頭が":"であれば、 そのブロックはインデントでグループ化する」という文法を導入するのは ありえる選択肢かもしれない。

if foo % 2 == 0:
  puts "odd"
else:
  puts 

[1,2,3].each do: |x|
   puts x

なんとPython風味。 レイアウトを使うパーサーを書くのが面倒なので、 単なるアイディアだけ。

これもエイプリルフールねたレベルだなあ。


2006年06月16日 [長年日記]

_ 「地方自治体に金はない、残されているのは時間だけ」--長崎県

いわゆる「長崎方式」について。

長崎県以上に、過疎化・地域格差の犠牲になりつつある島根県に住み、 島根県庁からの仕事も積極的に引き受けている関係上、 金は無く、人材も不足しているが、時間だけはなんとか捻出できそう、 という地方自治体の状況についてはわからないでもない。

が、個人的には、この「長崎方式」についてはまだ懐疑的だ。 そうでもしないと大規模ベンダーにみんな仕事を持っていかれてしまいかねない、 という懸念を理解してもなお、

  • 本当に要求仕様を県CIOが書けるのか
  • 開発者が全体を把握しなくなるのは良いことなのか
  • コードの重複、フレームワークの欠如などの問題が発生しないか

という点が不安だからだ。

まあ、「だから、こうしたほうがいい」という対案はないのだが、

  • オープンソースを積極的に利用することによって
    • コスト削減
    • 零細SIerの競争力強化

はひとつの方策としてありえると思う。 まあ、それだけで問題がぜんぶ解決するほど世の中は甘くないのだが。

_ ECナビ、自社の研究組織「ECナビラボ」で、学生のインターンシッププログラムを開始

Ruby on Railsを使ったインターンシップの話。 優秀な学生は3年間の内定保証が得られるとか。

「使える」新人確保は、うちを含めてどこでも問題になっているので、 良い考えかもしれない。まあ、あまり新人に即戦力を求めるのはどうか、 という声があるのも承知しているのだが、 零細にはなかなか「人を育てる」のが難しいのも事実だ。

今はOJTと称して、「千尋の谷」メソッドだものなあ。 ガンバレ、新人。

_ 「Google独占にはさせない」--国産検索エンジン開発へ、産学官が一致団結

「国産検索エンジンを作ろう」という話。

検索エンジンには日本語処理技術とかスケーラビリティとか興味深い技術が目白押しなので、 成果が残る形なら、そういう技術開発を行うことそのものに反対ではないのだけど、 どこまで意味があるのか、 どう意味をつけるのか、ちゃんと考えないと血税の無駄づかいに終わっちゃいかねない不安がある。

で、ちゃんと考えた意味を早い段階で公表して欲しいなあ。


2006年06月17日 [長年日記]

_ 片づけ

この家に引っ越して来て、はや二年強。

ほったらかしで延び放題の庭木などを、 シルバー人材センターの人に先日剪定してもらった。

で、出た枝やら葉っぱやらは、 産業廃棄物として処理するとえらい高くつくということで、 市のゴミ袋につめて、燃えるゴミとして処理したほうがよいでしょうとのこと。

で、妻と二人で袋につめたのだが、なんと45リットルゴミ袋が57袋も出た。 何という量だ。倉庫にゴミ袋が並んでいる様子は、 まるで映画『エイリアン』冒頭でエイリアンの卵が並んでいるようだ。 これを燃えるゴミの日に少しずつ捨てていくことになる。

_ タレントショー

午後は教会のタレントショー。 「隠された才能を披露する」というテーマのもと、

  • 独唱
  • 紙芝居
  • ピアノ演奏
  • 腹話術

などが発表される。当初は「うちも歌(+合奏)でも」と思っていたのだが、 練習が足りず、今回は遠慮した。 だが、予想以上にレベルが高かったので、今回遠慮したのは正解だったかも。

_ ミュシャ

駅前のビルでミュシャのリトグラフの展示をしているのを見に行く。

うちはミュシャ好きの人が多いので、 堪能したが(私が好きなのは「春」)、 商売なので、いろいろ話しかけてくるのは閉口した。

まあ、ただで見せてもらってて文句を言ってはいけないか。

同じビルのスパゲティ屋で夕食を食べて帰る。

_ [Ruby] Little Book of Ruby

Bitwise MagazineでRubyについていろいろ言ってた人によるRuby入門書。 コンパクトである。初心者にもわかりやすいかどうかは、実際の初心者の意見を聞いてみたい。

こういうのがどんどん出てくるのが、英語圏の層の厚さというか何というか。


2006年06月18日 父の日 [長年日記]

_ [教会]日曜

評議会。聖餐会は司会。 日曜学校はルツ記。

任期が終わった宣教師が、両親と一緒に松江を訪問する。 ご両親に「宣教師として働いて、息子さんは変わりましたか」と尋ねたら、 「外見は変わらないけど、内面は成長したようだ」ということであった。 まあ、自分の息子が立派に責任をまっとうしたのを見るのは誇らしいことだろうねえ。

ワードの会員に英語でしゃべっているのを目撃されたのは 大変恥ずかしいことであったが。

_ [教会]米子

米子でステーク神権会がある。移動。

ちょっと疲れが出て、うとうとしていた時間があったけど(ゴメン)、 おおむね

また、よく知らない人とペアを組んで、ロールプレイをする、という活動は 大変刺激的であった。

_ 父の日

せっかく米子によったので、父にプレゼントを。

帰ったら、娘からプレゼントと称して似顔絵をもらう。 実物より180%マシ美化されているがな。


2006年06月19日 [長年日記]

_ [Ruby] デバッグ

sample/test.rbが動かないのだが、 よくよく考えてみると、 ブロックパラメータまわりの仕様についての検討が網羅的ではないということらしい。

で、いろいろと考えながら、試してみるが なかなか自分が満足行く仕様にたどりつかない。

で、自分の要求を満たすのはなにかと考えながら、 テストを書き換えたり、実装を書き換えたりするのだが、 テストと実装を同時に書き換えるのって、もしかして、一番やっちゃいけないこと?


2006年06月20日 [長年日記]

_ [教会] HT

娘を若い女性の活動のため、教会へ送り届けてから ホームティーチングのお手伝いに。

ごく普通の話をいろいろしていたら、 「最近Mixiをやってるんですよ」とかいうような話になる。 うーん、まあ何十万人も会員がいるんだから、 身近な人がMixiに入ってても不思議ではないだろう。

というわけで、マイミクになりましょうとかいう話になる。 一緒にいた監督が、「Mixiってナニ」という顔をしているので、 これこれこういうものです、と紹介しながら招待状を出しておく。

また、「ブログも書いてるんです」ということで 見せてもらう。

ほんの少し前には、「普通の人」とコンピュータに関して こんな話をすることはあまり予想もできなかった。 時代が変わったということなんだろうなあ。

_ エラトステネス

LL Ringに関連して「100までの素数を求める」というお題が流行しているらしい。

まあ、そんなのはよくあることだけど、 sumimさんのところで メモリ効率や実行効率について検討している。

mathn.rbの素数判定ルーチンはあまり工夫されていないので、 このあたりのRuby版に置き換えて、高速化・省メモリ化を実現するかなあ。 私は数学近辺は鬼門なので、だれかやって欲しいなあ。

ちなみにRuby版最高速との噂があるのは、 青山さんの[ruby-list:16645]だそうだ。


2006年06月21日 [長年日記]

_ Rails講習会定員一杯

本日の申し込みで、「Railsトレーニングプログラム」7月分は定員一杯となった。 大人気とまでは言わないが、「小人気」程度には申し込みがあるのはうれしいことだ。 今回も最初の概要紹介とRuby入門の部分を私が担当する。

次回は未定だが、月に一回程度の割合で開催するつもりらしい。 ということは8月上旬頃か。

_ 「美しいコードを書けるからRubyを選んだ」---Ruby on Rails作者 David Heinemeier Hansson氏

日経ITProの高橋さんによるDHHへのインタビューが記事になっている。

「美しいコードを書けるからRubyを選んだ」とはうれしいことを言ってくれる。 まあ、彼の場合比べるのがPHPだから当然といえば当然なのだけど。 Javaは美しさというよりも繁雑さという点に難点があるし。

これが「以前使ってた言語はScheme」とかだったりすると、 もうちょっと別のファクターが重要視されるような気がする。

Lisp系の「美しさ」は、わかる人にしかわからないというか、 なんというか。

_ Gardens Point Ruby.NET Compiler

Microsoftが資金援助しているという噂の.NET用Rubyコンパイラ。

驚くべきことに1.8.2のsample/test.rbをすべてパスするらしい。 sample/test.rbってのはかなりいやらしい部分も触っていて(このファイルでしか使われていないんではないかと思う機能もある)、これをパスするということはたいしたものだと思う。 JRubyでさえ、全部はパスしていないんではなかろうか。

Monoで動かすためにはMonoにパッチを当てる必要があるらしい。


2006年06月22日 [長年日記]

_ [Ruby] Unicode

[ruby-talk:197946]で公開されたRubyでUnicodeを扱うライブラリ。

ダウンロードは<URL:ftp://ftp.mars.org/pub/ruby/Unicode.tar.bz2>から。

使い方はこんな感じ。

Unicode strings can be obtained by applying the + unary operator to native strings, e.g. +"Hello" (where the native string is encoded in the default encoding).

% irb -I. -runicode -Ku
irb(main):001:0> ustr = +"π is pi"
=> +"π is pi"

Native strings are obtained from Unicode strings by calling to_s, which accepts an optional argument to indicate the desired encoding.

irb(main):002:0> str = ustr.to_s
=> "π is pi"
irb(main):003:0> str.encoding
=> Unicode::Encoding::UTF8

Individual characters can be indexed from Unicode strings, returning a Unicode::Character object.

irb(main):004:0> ustr[0]
=> U+03C0 GREEK SMALL LETTER PI

Case conversion is handled as with native strings.

irb(main):005:0> ustr.upcase
=> +"Π IS PI"

Normalization is accomplished with the ~ unary operator.

irb(main):006:0> ustr = +"m,Am"
=> +"m,Am"
irb(main):007:0> ustr.to_a
=> [U+006D LATIN SMALL LETTER M, U+00ED LATIN SMALL LETTER I WITH ACUTE]
irb(main):008:0> (~ustr).each_char { |ch| p ch }
U+006D LATIN SMALL LETTER M
U+0069 LATIN SMALL LETTER I
U+0301 COMBINING ACUTE ACCENT
=> +"m,Am"

実に面白い。

_ [Ruby] auto conversion

Ruby M17Nは、複数のエンコーディングを(できるだけ)変換なしで処理するのを主眼にした デザインになっているのだが、Cのlocaleモデルのような、 1プログラム1エンコーディングのようなケースはともかく、 複数エンコーディングが混在する場合には、 結局は統一的な内部文字集合(Universal Character Set - UCS)に変換して 処理する必要があるかな、と考えてきた。

というか、変換まわりにはあまり気を使ってこなかったというのが実情だ。 この辺が、「基本はUnicodeへの変換」という他の言語(PerlとかPythonとか)との違いだ。

とはいえ、実用のためには、どこかで変換は必要なわけで、 それはきっとIOで行うに違いないと考えてきた。

しかし、自動変換(coercing)を強く勧める意見が出た。[ruby-talk:198475]

自動変換は

  • ふたつのエンコーディングが相互に変換可能とは限らない
  • 変換によって知らないうちに情報が落ちる可能性がある
  • エラーが起きたときのデータの起源がわからなくなりがち

などの理由で敬遠してきたのだけど、 今回の提案はちょっと具体的。

#
# NOTES:
# a) String#recode!(new_encoding) replaces current
#    internal byte representation with new byte sequence,
#    that is recoded current. must raise IncompatibleCharError, if
#    can't convert char to destination encoding
# b) downgrading string from some stated encoding to "none"  tag must
#    be done only explicitly.
#    it is not an option for implicit conversion
# c) $APPLICATION_UNIVERSAL_ENCODING is a global var, allowed to be
#    set once and only once per application run.
#    Intent: we want all strings which aren't raw bytes to be in one
#    single predefined encoding,
#    so all operations on string must return string in conformant encoding.
#    Desired encoding is value of $APPLICATION_UNIVERSAL_ENCODING.
#    If $APPLICATION_UNIVERSAL_ENCODING is nil, we go in "democracy
#    mode", see below.
#
def coerce_encodings(str1, str2)
   enc1 = str1.encoding
   enc2 = str2.encoding

   # simple case, same encodings, will return fast in most cases
   return if enc1 == enc2

   # another simple but rare case, totally incompatible encodings, as
   # they represent incompatible charsets
   if fully_incompatible_charsets?(enc1, enc2)
        raise(IncompatibleCharError, "incompatible charsets %s and %s", enc1, enc2)
   end

   # uncertainity, handling "none" and preset encoding
   if enc1 == "none" || enc2 == "none"
        raise(UnknownIntentEncodingError, "can't implicitly coerce encodings %s and %s, use explicit conversion", enc1, enc2)
   end

   # Tirany mode:
   # we want all strings which aren't raw bytes to be in one single
   # predefined encoding
   if $APPLICATION_UNIVERSAL_ENCODING
        str1.recode!($APPLICATION_UNIVERSAL_ENCODING)
        str2.recode!($APPLICATION_UNIVERSAL_ENCODING)
        return
   end

   # Democracy mode:
   # first try to perform non-loss conversion from one encoding to another:
   # 1) direct conversion, without loss, to another encoding, e.g. UTF8 + UTF16
   if exists_direct_non_loss_conversion?(enc1, enc2)
        if exists_direct_non_loss_conversion?(enc2, enc1)
        # performance hint if both available
           if str1.byte_length < str2.byte_length
                str1.recode!(enc2)
           else
                str2.recode!(enc1)
           end
        else
                str1.recode!(enc2)
        end
        return
   end
   if exists_direct_non_loss_conversion?(enc2, enc1)
        str2.recode!(enc1)
        return
   end

   # 2) non-loss conversion to superset
   # (I see no reason to raise exception on KOI8R + CP1251,
   # returning string in Unicode will be OK)
   if superset_encoding = find_superset_non_loss_conversion?(enc1, enc2)
        str1.recode!(superset_encoding)
        str2.recode!(superset_encoding)
        return
   end

   # A case for incomplete compatibility:
   # Check if subset of enc1 is also subset of enc2,
   # so some strings in enc1 can be safely recoded to enc2,
   # e.g. two pure ASCII strings, whatever ASCII-compatible encoding
   # they have
   if exists_partial_loss_conversion?(enc1, enc2)    	
        if exists_partial_loss_conversion?(enc2, enc1)
           # performance hint if both available
           if str1.byte_length < str2.byte_length
                str1.recode!(enc2)
           else
                str2.recode!(enc1)
           end
        else
                str1.recode!(enc2)
        end
        return
   end

   # the last thing we can try
   str2.recode!(enc1)
end

うーん、面白い(こればっかり)。

確かに通常のアプリケーションモデルは

  • 1プログラム1エンコーディング(ただし、切り替えはあり)
  • 1プログラム1内部エンコーディング(おそらくはUnicode)

が、ほとんどだと思うので、それを考えるとこの辺ってのはそんなに悪くないのかも。 ただ、文字列の中身がいつの間にかすりかわるのはちょっと恐い。


2006年06月23日 [長年日記]

_ 商談

朝から某IT企業との商談(というか情報交換会)。 県職員も交えて、しかし、ざっくばらんに話を。

なかなかいい感じ。 足りないところをおぎないあえたりできそうな予感。

_ そば屋

で、お昼はそば屋へ。今回は八雲庵

いや、堪能した。まわりの人は地酒も入ってより堪能していた。 昼間っから。

「いや、金曜だし、今日は」って、それ単なる平日ですから。

_ 夫婦でペアプロ

今日のお客さんの中にはエンジニアの人も来ていたのだが、 この方、奥様もプログラマで、

  • 最近ばりばりRails使ってます
  • 週末は夫婦でペアプログラミングします
  • リファクタリングの方針で喧嘩になります

とのこと。なんか、すっごく微笑ましいというか、 うらやましいというか。

うちはコンピュータ(特にプログラミング)に理解がないからねえ。 敵だと思ってるし。まあ、そう思わせているのは結局私の態度なんだけど。

_ RubyConf presentaion

David Alan Blackから、

プレゼンテーションの申し込みが少ないようなので、 「Matzにっき」で宣伝してもらえないか

との依頼。なんでだろう。めぼしい人はみんなRailsConfに取られちゃったのかな。

日本からの発表申し込みも歓迎だそうなので、 「こんなことしゃべってみたい」というものがある人は <URL:http://proposals.rubygarden.org/>まで。

言葉の問題には(ある程度)相談に乗ります。

〆切は6月30日。


2006年06月24日 [長年日記]

_ 親子活動

息子の小学校で親子活動。

中国電力から講師を招いて電気について学ぶコーナーと。 親子で体を動かすコーナーとがある。

電気のコーナーでは、静電気を使って電気を体験したり、 自転車に自動車用ダイナモとDC/ACコンバーターをつないで電化製品を動かしてみせたり してた。男の子はおおむね大喜び。

体を動かすコーナーでは一方が紙飛行機を投げ、もう一方が虫取り網でキャッチするという遊びや、紙飛行機を投げながら走るリレーなどが行われる。

結構楽しかった。

_ [OOP] Mixinと多重継承

Javassist*1の千葉先生からメールをいただく。

Ruby は動的に型づけされる言語なので、 サブタイプ関係をつくることにほとんど意味はありません(変数に型が ないわけですから)。したがってクラス継承の役目も実装を再利用する ことです。だとすると、そもそも Ruby において class の継承と module の利用の間に違いはあるのでしょうか? Module にはインスタンスを作れないなどの制約があるのは承知してい ますが、そういう制約を取り除いてしまっても、まだ違いはあるので しょうか。なんとなく、クラスをやめて全部 module にしてもい いのでは、と思ってしまいました。

それに対しての私の返答は以下の通り。

全部moduleにするとなると、

本当に全部moduleにするならば、classが存在しない以上、インス タンスを作れないという制約を取り除く必要があります。というこ とは、それは単なる多重継承でしょう。

一方、継承を取り除いてインスタンスを作るという機能だけを持つ classと、機能を集約するmoduleをもつという方式も考えられます。 それはそれで面白いと思うのですが、それだとSmalltalk以来積み 上げてきた「継承」という「考える道具」が使えなくなるので、う れしくない側面があります。Rubyは保守的な選択をしました。

*1  ところではるかな昔、DeJavaという名称は不許可だったのにJavassistはOKっていうのはSunの方針が変わったんだろうねえ。かわいそうなDeJava

_ [Ruby] 1.8.5 preview1

とうとう出す。まだ積み残した問題がいくつか残ってるんだけど。

<URL:ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-preview1.tar.gz>


2006年06月25日 [長年日記]

_ [教会] 日曜日

司会はお願いする。日曜学校はサムエル記冒頭。ナジル人について、とか。

あと、プライマリーの子供たちの前でお話。 父祖への感謝、とか。

_ 異文化交流

集会終了後、お客さんと雑談する。

彼はブラジル留学の経験があってポルトガル語が話せるのだが、 言語がわからない第三者からは「すっごい上手な人」とみなされるのだが、 実際には思うように話せずもどかしい、のだそうだ。

私も似たような経験があるので(私は英語だけど)、共感できる。

また、言語を話すことそのものを目的に言語を学ぶというのはモチベーションが維持できない、 要は何を伝えたいかが重要である、とか、 相互理解の障壁は言語よりも異文化への理解だとか。

彼は日経ブラジル人の学習支援をしているとかで、 異文化への理解のなさに日々直面しているらしい。

ふーむ。

_ [教会] ステーク連絡

高等評議員さんと連絡事項。 複数のユニットとの調整があるのでステークは大変だ。

監督も私も高等評議員の経験があるので気持ちは分かる。


2006年06月26日 [長年日記]

_ Emacs過剰適応

恐竜は環境に過剰に適応してしまったために、 環境の変化に追随できず滅びてしまったという説があるらしい。

私はEmacsがないとある程度以上長い文章が書けない人なので、 Emacsになにかがあったら絶滅してしまうかもしれない。

いや、Emacsと同程度の編集機能があれば移行は可能だと思うんだけど。 世にあるEmacs風キーバインドはマークとかの操作がないし、 検索・置換とか、スペルチェックとか、オートインデントとかないからなあ。 下手に似ているものはかえって混乱しちゃうし。

任意のテキストエリアをEmacsにすりかえるウィジェットとかあればいいのに。

_ スライド作成

JICAの中の人から、金曜日に抗議講義を依頼されたので、 スライドを準備する。先方からの依頼により、 JAOO2003Texas A&M Universityとでの発表を合成したようなものになる。


2006年06月27日 [長年日記]

_ Web 2.0の挑戦者:ニッチ商品も見つかる?リアルメディアの交換サイトlendmonkey - CNET Japan

これが本当にWeb2.0的なのかどうか、正直よくわからないんだけど、 人と人をつなぐ、という点と、マイナーなものの流通(中古だけど)という点は、 ロングテールにつながるのかもしれない。

私にとって気になるのはこの辺

どのようなテクノロジを使用しているのですか。

lendmonkey:Ruby on Rails、Ajax、Amazon Web API、Google Maps、RSSなどです。

ちゅーわけで、注目を浴びるWeb2.0サイトがRailsで開発されているという話。


2006年06月28日 [長年日記]

_ 生まれた時からプログラマ☆興味と感性で世界を驚かす/Tech総研

先日受けたリクルートでの取材がTech総研の記事になっている。

私が「世界を驚かせているか」というとかなり疑問なのだが、 まあ、それはそれ、あおり文句であるということで。

三人のインタビューがあり、私と、あとは奥さんと新井さん。 まあ、それなりに面白い記事かも。

ただなあ、私の言いたいことは本当はちょっと違ったような気がする。 あ、つまり、インタビューではそう語ったのは確かなので、 記者の人の責任ではなく、私が自分の思いを適切な言葉にするのに失敗したという意味なんだけど。

じゃあ、なにが言いたかったのかというと「8割/2割で2割のほうに入れ」ということなのかなあ。でも、「どうやって入るか」には統一的な答えはない(人によって方法は違う)ので、 全然役に立つアドバイスじゃないな。

_ Judy Arrays

とても高速なテーブル。十分高速なので、疎配列やハッシュとして使える。

これがあればRubyのハッシュとか置換できるよなあ。 ただ、中身が難しいのと、実装がLGPLなのでRubyに取り込むのはいろいろ面倒そう。

中身についての簡単な説明(10分版)を読むと、わくわくするのだが、完全には理解できなかった。3時間版はまだ読んでない。


2006年06月29日 [長年日記]

_ [OSS] 「オープンソースはボランティアではない」--サンのオープンソース責任者が講演 - CNET Japan

オープンソースといえば「利他的」とか「慈善」という文脈で語られることが多く、 また、私も時折(意図的に)「愛」を前面に出したりするのだが、 実際には、利己的な思いや私利私欲に基づく行動でもある。

まあ、その辺をずばりと述べてくれるのは、ある意味、ありがたい。

というのも、「慈善」とかだと「自分には関係ない」とか 「すごい。けど、私にはちょっと無理」とか感じてしまって、 そこで思考停止に陥る人が多そうだからだ。

しかし、「自分の利益にもなる」というのは動機としては、正当だ。 あまりに利己的に利益(のみ)重視の人が、 オープンソースを草狩り場にしてもらうのは困るけど、 ちゃんとルールに従った上で、自分の利益を最大化することを期待する 新規参入者は多いに歓迎する。

_ [Ruby] わからないこと

その1

RubyKaigiで「VBにはキーワード引数があるから、Rubyにもあるとありがたい」という発言を聞いた。それ以来、VBについて少し調べているのだが、VB(VB6? VB.NET?)にキーワード引数があるという資料を見つけられない。

VBのキーワード引数とはなんだろう。 また、それと相性の良いRubyのあるべきキーワード引数とはどんなものだろう。

その2

ruby-talkで「Cocoaの多言語対応は素晴らしく、Rubyもそうあって欲しい(それに対してCarbonは良くない)」という発言を聞いた。それ以来、Cocoaの多言語対応について調べているのだが、あまり良い資料に巡り合えない。っていうか、OSXでは全部Unicodeだから問題なしってこと? ただ、gettext相当がGUIクラスに組み込まれているようなので、それはうれしいかも。

たとえば、なんらかの方法で外部からリソースを指定することで、 Rubyの文字列リテラルが置き換えられたらうれしいだろうか。


2006年06月30日 [長年日記]

_ [Ruby] キルギス講演

キルギスという国をご存じだろうか?

Wikipediaによれば、

キルギス共和国(キルギスきょうわこく)、通称キルギスタンは、中央アジアにある旧ソビエト連邦の共和国。首都はビシュケク(旧名フルンゼ)。クルグズスタン、クルグズ共和国ともいう。

なのだそうだ。

で、キルギスでIT技術者要請プロジェクトを実行中の、 JICAから要請を受けて、キルギスの技術者に対して、Rubyの紹介をすることになった。

とはいえ、中央アジアまで行くのは現実的ではない。 聞くところによると、以前キルギスまで人材を派遣して一日のセミナーを行ったところ、 移動などを含めて足かけ9日かかったということだ。勘弁して。

ということで、新宿にあるJICAの施設からテレビ電話で講義を行うことになる。 朝一の便で出雲空港から東京へ移動。

昼食後、会場へ。 簡単な試験をしたが、無事に通信もできそうだし、 CRT出力も完璧。

トラブルといえば、原稿表示用に持っていった2台目のラップトップがUSBメモリを認識せず、 しかたなしに原稿表示には、現地にあったPCを借りたくらいか。 が、数分の作業で対応できたので、ぜんぜん問題なし。

で、途中まで、スムーズに話は進んだのだが、 途中、突然通信が途絶する。

先方で停電があったのだそうだ。まだまだ電力事情は厳しいらしい。

しかし、向こうもそのくらいのことは予想している。 発電機を利用して通信を再開するということになった。

数分後、通信再開。

しかし、発電機の性能のせいか、 たびたび通信が中断するようになる。 こちらからは伝えたつもりの内容が実は伝わっておらず、 「2枚ほどスライド戻って、もう一度説明してくれ」というようなことが 頻発して、ちょっとつらい。

この調子で進んでいると、通信が完全に中断してしまった。 どうも、電力不足でブレーカーが落ちてしまって、 発電機が作動しなくなってしまったらしい。 あとで聞くところによると、今日はたまたま発電機担当の技術者が病欠で、 よくわからないまま無理をしてしまったらしい。

「プレゼンの呪い」は健在であった。

しかも、今回は発電機まで壊してしまったし。

まあ、自分のせいじゃないからいいか、と自分を慰めることにする。 中断後、向こうのセミナー参加者は大変興味をもって、活発なディスカッションが行われたらしい。 「後で、まつもとも交えてディスカッションできたらいいね」という話になる。

本当に。

発表用スライドはこちら。 以前のものの使いまわしなので、新味はない。


最新 追記