«前の日(01-11) 最新 次の日(01-13)» 追記

Matzにっき


2004年01月12日 成人の日

_ [家族]休日

夕べから姪がまた遊びに来ている。「おばちゃんのところに遊びに行きたい」と押し切られたらしい。

で、午前中はキックボードや三輪車などを出してきて遊ぶ。 ただ、ひとり宿題が終わらなくてとりこのされた次女が機嫌が悪い。 涙を浮かべながら割り算を計算していた。

もうちょっと気を使ってやるべきだったか。

あとはビデオを見たり、散歩したり。

夕方は全員でお好み焼きを食べに行く。今回、私はもんじゃ焼き初体験。思ったよりもおいしい食べ物であった。 単価が安い店だったので頼みすぎた。余った。

で、最後、泣きわめく姪を妹に返して一日は終わり。


2005年01月12日

_ [OSS]Sun CEOが語る「Javaをオープンソース化しない理由」

−−開発者の一部はSunに対し、Java仮想マシンの実装をオープンソース化するよう求めてきました。そうしなかった理由は? Solarisをオープンソース化する理由は、Javaにも等しく当てはまるように思えるのですが。

マクニーリー氏 最初からJavaコミュニティープロセスが存在したから、というのが主な理由です。Java Community Process(JCP)には900を超える企業と組織が参加しています。そこにあるのはコミュニティー開発の問題だけではありません。オープンソース化がどんな問題を解決するのか、私には確信が持てないのです。オープンソース化により、どんな問題が解決されるのでしょうか? われわれは実際にそれを見出そうとしています。われわれはJPCを調整、修正することに満足しています。今でも独力であらゆるJava技術をオープンソースあるいはプロプライエタリで実装することは可能です。認証プロセスもあります。オープンソース化で何が解決されるか、われわれは本当に確信がないのです。現時点で壊れていないものを修正するようなことはしたくありません。

えーと、Java言語仕様とSunのJVM実装の問題をわざと混同するのはいかがなものかと思うのだが。

Java言語の仕様を管理するJCPの存在は「SunによるJVM実装をオープンソースにしない理由」にはならない。 もちろんSunには「SunによるJVM実装をオープンソースにしない理由」があって当然だし、 オープンソース化する義務など微塵もないのだが、 それでもなお質問の答えにはなっていないような気がする。

_ [OSS]PostgreSQLをメインストリームに推すPervasive

がんばってください。

_ 新年会

島大、縄手研の新年会。今年は最終年度なので(ええっ、もう?)、論文をどうするかとかいう話もする。


2006年01月12日

_ [Ruby] Charming Ruby Compiler

ポータブルバックエンドのC--を対象にしたRubyコンパイラの研究。

博士論文(あるいは卒論?)のプロジェクトなので実用になるレベルまで発展するかどうかは 未知数だが、大変興味深い。

ん? また、スウェーデンか。以前.NETを対象にした研究をしてた人も確かスウェーデンだったよな。 大学は違ったように思うんだが(うろ覚え)。

あの国はこういうプロジェクトが好きなのかな。

_ [Ruby] The Open Nature Of Ruby

RubyのOpenクラスの功罪について。

Openである(既存のクラスに動的に機能を追加できる)ことは、 結局はグローバルに変更を行うことだから、副作用があり、危険でもあるが、 同時に普通の手段ではできないことができる可能性もある。

特にオブジェクト指向プログラミングにおいて、システムが提供するものも含めて オブジェクトに挙動を追加できる(or 変更できる)のはすごいパワーを発揮できる。

だが、単なる追加ならともかく、「変更」は冒険だ。 jcode.rb(文字列をマルチバイト対応にする)やmathn.rb(除算などを有理数対応にする)などは、 グローバルな影響の範囲が見積もれないので気安く使えない。

そこで、Classboxという「その上」を考えている必要が出てくるのだ。


2007年01月12日

_ [Ruby] 丸山先生レクチャーシリーズ in 東京 2006-2007

半蔵門から大森へ移動。

レクチャーシリーズ、今回のテーマは「web2.0 -- 新しい技術と新しいビジネスモデル」 なんだそうだが、Rubyの話はアウェイな気がしないでもない。

丸山先生の話は盛り沢山であった。時間内に終わるかな、と心配したが、 案の定、スライドを消化しきれてなかった。 ま、しょうがない。Web2.0のアウトラインを理解するには良かったのではないかと。

次が私の話。「動的言語の世界」と題して、 Rubyのような言語がなぜ注目されているか、というような話。 最近の講演(日経BP次世代フォーラム、福岡)とややかぶる。

次がマイクロソフトの安藤さんによる「マイクロソフト技術で体現するWeb 2.0「Windows Live」〜ソフトウェア+サービスの目指すところ〜」。 要するにVistaのガジェットでなにができるか、どう作るかと言う話。 それほど目新しい話ではなかった。 注目すべき発言は「画期的なのはそのインストールベース(数)」というもの。 非常にマイクロソフト的であった(苦笑)。

次は首藤さんの「peer-to-peer の世界」。 ウタゴエCTOになってからははじめて会うのかな。 Wiiリモコンを使ってプレゼンしようとしていたようだが、 センサとの距離や蛍光燈の光などに負けて断念したようだ。

この話興味があったのだが、飛行機の時間の関係で途中で抜けないといけなかった。 最初の導入しか聞けなかったのが心残り。

コンポーネントスクエアのページから発表資料がダウンロードできる。

当日の感想リンク

_ [言語] 静的/動的言語

休憩時間に挨拶していただいた方と雑談していたのだが、 「動的言語の利点を持ちつつ、静的言語のように情報を与えてコンパイルすることで実行効率を実現できる言語(の組み合わせ)はありえないものか」というような質問を受ける。

プロトタイプは動的言語で作っておいて、 ライブラリやフレームワークとして切り出す時には、 コンパイルして効率の良いものにしたいという開発スタイルを考えておられるようだ。

RubyとかだとJavaに代表されるような静的言語とは プログラミングモデルからして違うから 単にちょいちょいと型情報を追加して、というわけには行きそうにもない。 最初から動的・静的のミックスを念頭に置いた言語が必要そうだ。

と、ここまで考えて気がついた。

それなんてLisp?

Lispなら基本は動的言語だし、柔軟さについては他の追随を許さない。 さらに型情報を負荷付加することもできるし、 多くの処理系ではコンパイラも用意されていて、 場合によっては通常のコンパイル型言語(Cとか)よりも速いことがある、そうだ。

ということで、 「Lispとかどうでしょうね」と答えたら、 その方は苦笑しておられた。

Lispの不人気は相当なものである

誤解(?)の根は深い。

_ [Ruby] 2006年「Ruby on Rails」が愛された理由

愛されてますねえ。NaClもちょっとだけ言及されてる。

_ [Ruby] local variables new scoping rule

Evan Phoenixがruby-talkでRubyConf 2003のスライドについて言及する。 すっかり忘れてたよ。

で、改めて考えてみると、これは悪くないアイディアかもしれない。 まあ、もともと自分のアイディアなんだけど。

まずは問題点から。

問題

現状のRubyでは、ブロックの中で初出のローカル変数の有効範囲は そのブロックの中に限定される。 これは無名関数のようにブロックが使われる時に その関数の中だけで有効なローカル変数が使えないと 非常に不自由だからだ。

しかし、一方、通常のループ的にブロックを使う場合、 値を持ち出すためにローカル変数に代入しても その変数が(そのままでは)ブロック外部には見えないため わざわざブロックの前まで戻ってあらかじめ代入しておく必要がある。

しかし、ブロック限定のローカル変数を使いたい局面は限定されており、 ハフマン圧縮的見地からは、より頻繁に使われる通常のローカル変数的使い方のために、 いちいちブロックの前に戻って宣言的代入が必須と言うのはめんどくさい。

解決法の提案

元々はローカル変数のスコープの昇格で解決することを考えていたのだけれど、 これは構文的に後ろに登場する情報が前の意味を変更するというのが 非常にRuby的でない(or 私の好みではない)気がしていて踏み切れなかった。 実装もそれなりに面倒なものしか思いつかなかったし。

しかし、Evanの指摘により、昇格法よりもさらに前に考えていた*1、 デフォルトはスコープローカル、明示的に指定した場合だけブロックローカル、 というものを採用する気になった。

具体的には

  • 通常の代入によって作られるローカル変数は(class,module,defが作る)スコープローカル変数
  • ブロックパラメータはブロックローカル
  • 以下のいずれか、または両方
    • ブロックパラメータの後ろに「;」を置き、そこに続けた変数はブロックローカル変数
    • 「:=」で代入した変数はブロックローカル変数

結局は3年前のエントリで 考察していた通りで、その時、あきらめた明示的なブロックローカル宣言を取り込んだものとなった。

英語圏の人のためには、このエントリをRCRにまとめた方がよいよなあ。 ちょっと面倒だなあ。

実装

一度心を決めたら話は難しくない。 丸山先生のお話を聞きながらハックしてたら30分でできてしまった。 変更はparse.yだけに限定されるので、きっとYARVでもそのまま動く、はず。

*1  より正確には、最初に昇格法を思いつき(1999年ごろ)、次にスコープローカル法に気持ちが動き(2003年)、さらにまた昇格法にしようかという気になり(2005年)、で、今回再びスコープローカル法にする気(2007年)になった、ということ。 とんでもない堂々巡りだなあ。


2008年01月12日

_ [Ruby] An Agile Way > 島根で Ruby と Agile : ITmedia オルタナティブ・ブログ

昨日のOSSサロンについて平鍋さんの記事。 楽しんでいただけたろうか。

記事を読むと鋭い人はピンと来るかもしれないが、 やはり層の薄さが島根県の弱点だと思う。 とんがった人は何人かいるし、 それはそれで貴重なのだが、 それの何倍も「wannabe」がいないとエコシステムが成立しないのではないか と危惧している。

OSSサロンに出席している人が、「偉い人」だけでなくて 実戦投入されている人がどんどん来る/来れるようになると 本物っぽさが増して将来に(もっと)期待が持てるようになるんだけど。

どうでしょう。自分んとこの若い衆をもっと送り込みませんか > 偉い人。

まあ、偉い人が来るってだけでも大したもんではあるんだが。

_ [言語] TIOBE declares Python as programming language of 2007! - comp.lang.python | Google グループ

2007年の「Language of the Year」はPythonだそうで。 おめでとうございます。

で、Rubyは、というと、TIOBE indexでちょっと落ちてるという。 2008年は1.9を武器にもうちょっと頑張ります。

来年はIoかLuaかScalaか。


2009年01月12日

_ 雪かき

夜の間にまた10cmくらい雪が積もってる。 3日連続なんてこっちに来てからはじめてかも。

雪かきのおかげであちこち筋肉痛やら腰痛やら。 もうお年寄りかしら。

風邪をひいたのか、声が低くなって困る。 家族と会話していても、「麒麟の人が話してるみたい」と笑われ、 「おかしいからちょっと黙ってて」と言われる始末。

ぐすん。

お昼はお好み焼き(+たこ焼き)。おいしかった。


«前の日(01-11) 最新 次の日(01-13)» 追記