最新 追記

Matzにっき


2008年03月01日 [長年日記]

_ [Ruby] Ruby 1.9.0-1 snapshot released

結局、次の日になってしまった。

で、実はパッケージスクリプトにバグがあって、 再パッケージしている。正しいmd5sumは

4344e18188bbdf3e5f19cdd3ade902bb  ruby-1.9.0-1.tar.bz2
90b721dce088f455df914c9482508601  ruby-1.9.0-1.tar.gz
8e89b49e473ac1c209e3c73a6fd6610f  ruby-1.9.0-1.zip

である。ごめんなさい。

_ 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと

公開鍵暗号とその代表格であるRSA暗号を混同してしまう間違いが 世に氾濫している、という話。

嫌な予感がして前に公開鍵暗号について解説した記事(日経Linux2006年6月号)の 原稿を確認してみた。間違えていた。orz

ごめんなさい。

Webでも公開されているので、 以下の部分を

 公開鍵暗号は,公開鍵で暗号化した文字列は秘密鍵を用いてしか解読できず,逆に秘密鍵を使って暗号化したものは公開鍵でしか解読できないという性質を持つ暗号です。公開鍵暗号は認証(自分が確かに秘密鍵を持つことの証明)と暗号化(鍵を持たない人以外に読めないメッセージを作ること)の両方を実現できます。

 公開鍵暗号の仕組みをごく簡潔に紹介します。2つの素数p,qが存在するとして,この2つの素数から図12に挙げる数を計算します。

以下のように修正する必要がある。

 RSA暗号は,公開鍵で暗号化した文字列は秘密鍵を用いてしか解読できず,逆に秘密鍵を使って暗号化したものは公開鍵でしか解読できないという性質を持つ暗号です。このような鍵を一般に公開しても成立する暗号を公開鍵暗号と呼びますRSA暗号は認証(自分が確かに秘密鍵を持つことの証明)と暗号化(鍵を持たない人以外に読めないメッセージを作ること)の両方を実現できます。

 RSA暗号の仕組みをごく簡潔に紹介します。2つの素数p,qが存在するとして,この2つの素数から図12に挙げる数を計算します。

Webでも訂正されるようにお願いしておこう。

_ [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog

Rubyが、Lisa Awardsという(冗談の)賞をいただいた、ということらしい。

しかし、

For letting a first interpreter implementation be fast enough

というのは、遅い(けど使えないことはない)って皮肉だよなあ。


2008年03月02日 [長年日記]

_ [教会] 第一安息日

先週は(雪のせいで)教会に来れなかったが、 今週は無事参加できた。 毎週教会に出席するのは当たり前と感じていたが、 改めてありがたいかとだなあと思う。

集会終了後、息子が飛ばしていた紙飛行機が 駐車場の車の屋根に乗ってしまう。 「お父さん、とって」と頼まれるが ひとの車によじ登るのはなあ、とためらっていると 車の持ち主(180cm超)がやってきて、 やすやすと取ってくれる。

あんなに身長が高けりゃな。

「こんなことにしか役立ちませんけど」とか 言われたけど、それでもやっぱり身長が高いのはあこがれる。

アメリカに行った時とか、(立ったまま)打ち合わせしてても みんな背が高いから見上げないといけなくてつらいんだよな。


2008年03月03日 [長年日記]

_ [言語] CS 11: Python track: python idioms

Pythonのイディオム。

List Comprehensionの解説で

results = [(x, y)
           for x in range(10)
           for y in range(10)
           if x + y == 5
           if x > y]

という例題がある。そうか、forって複数指定できるんだ。

で、Rubyのメソッドチェーンではこのような複数シーケンスの ネストしたループをストレートに書くことができないことに気がついた。

(1..2).xxxx(1..2)

で、

[1,1],[1,2],[2,1],[2,2]

を返すようなxxxxメソッドがあれば、

(1..10).xxxx(1..10).select{|x,y| x+y == 5}.select{|x,y|x > y}

と書けるんだけど、名前がな。いい名前ないかな。

_ [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia

Rubyのオブジェクトはヒープと呼ばれる複数のメモリ領域のいずれかに所属する。 GCの過程で(保守的なチェックの一環で)ポインタがどのヒープ領域に所属するか をチェックしているところがある。

今までは線形探索をしていたのだが、 ここを二分検索するようにした。 まあ、現時点ではヒープの数はあまり多くならないので メリットはさしてないのだが、今後ひとつひとつのヒープのサイズを小さくすることを 考えているのでそのための下準備として。

ところが、二分検索の基本的なアルゴリズムは理解していたはずなのに なかなかバグが取れない。結構、情けない。

_ [OSS] Theological Cultural Analysis of the Free Software Movement

クリスチャン的視点から見たフリーソフトウェア運動。

っていうか、タイトルを見た時にはどういう論理展開するのかと思って読んだのだが、 実は穏当な意見であった。

_ 小寺信良:正直、テレビはもうダメかもしれん - ITmedia +D LifeStyle

テレビはダメかもしれん、という話(そのまんま)。

実際、ここ数年テレビを見る時間はぐんぐん減っている。 私の家族も最近はPCを使った情報収集に時間を取られて テレビはあまり見なくなってしまっている。

テレビはもはや時間が余った時に雑学を入力する手段くらいにしかなってなくて、 しかもそれってインターネットで代用可能だったりするんだよね。

やっぱ、2011年にはテレビを捨てることになるのかなあ。

_ [Ruby] You Used Ruby to Write WHAT?! - CIO.com - Business Technology Leadership

Zed 「ゲットー」 Shawが(CIOに向けて)Rubyの「欠点」について語る。

言語そのものについての欠点の指摘はほとんどないので 言語デザイナーとしては安堵なのだが、欠点のほとんどは私の実装(MRI)の弱点なので そういう意味では涙目である。

やや、根拠が薄いような気もするが(ほんとに遅いのかとか、ほんとにリークするのかとか)、 改善の余地があることについては私も認める。

悔しいので、また手を入れることにする。 一番難しいのはGCだろうか。「保守性によるリーク」や「停止時間」の問題について また考えてみたい。

_ 取材

某雑誌の記事のため写真撮影。 なんか金かけてるよな。

今日はいきつけの本屋さんで立ち読みしているところの撮影だとか。 事前に本屋には許可を取ってあるのだが、 立ち読みしてるところをバシバシとられるのは かなり恥ずかしい。


2008年03月04日 [長年日記]

_ tanjent: MurmurHash, final version.

JenkinsよりもFNV1よりも速いというハッシュアルゴリズム。

またハッシュアルゴリズム取り替えようかなあ。

_ [言語] lucille development blog >> Blog Archive >> LLVM 2.2 v.s. gcc 4.2

LLVM 2.2が(Intel CPUにおいて)、GCC 4.2よりも性能の良いコードを生成したという話。 まあ、GCCのバックエンドがたまたま最良のコードを吐かないということは そんなに珍しいことではないと思うけど。

が、LLVMってのは興味深い技術だよなあ。 もうちょっと真剣に調べてみるかなあ。

_ [Ruby] YouTube - JRuby: The power of Java and Ruby

Ola BiniのGoogle TechTalk。

またMRIがけちょんけちょんにされてて悲しいんだけど。

_ InfoQ: Trading Consistency for Scalability in Distributed Architectures

eBayがトランザクションを使っていないという話から スケーラビリティをなにか(この場合は一貫性)と引き換えにする、という話。

性能となにかを引き換えるというのはよくある話で、 一番よくあるのは時間と空間の取り引き、 つまり、メモリをより消費することによって性能をあげること。

しかし、データ量そのものが大きくなると そのような取り引きは難しくなる。 メモリには限界があるから。

で、いろいろと考えるわけだ。いわく

  • 性能と正確さの取り引き(ブルームフィルタとか)
  • メモリの少なさを台数でカバー(ROMAとか)

他にどんな「取り引き」が考えられるだろうか。


2008年03月05日 [長年日記]

_ [OSS] Google Japan Blog: Google Summer of Code 2008 開催

今年もGoogle Summer of Codeがやってきた。 例年RubyCentralが参加しているのだが、 今年はそれに便乗するか、RubyAssociationとしてか、 メンターとして参加しようかなあ。

本当はRuby専門でRubyAssociationが主催すべきなのかもしれないけれど。

で、いずれにしてもどんなテーマが考えられるかなあ。

_ Computerworld - Don't use Emacs, says Java's father

James Goslingが「Emacsは使うな」と言った、という話。

いや、私だって設計が古いEmacsを使い続けたいわけではない。 けれども、世の中にEmacsを置き換えるに足るツールが他に存在しないんだからしょうがない。 今まで使ってない機能が満載のEclipseを紹介してくれても 私にはうれしくない。

とりあえず、「今使ってる機能」を提供してくれる編集環境がほしいだけなんだが。 Emacsのフル機能を使ってるわけじゃないから、

  • (本物の)Emacsキーバインド
  • タイリングウィンドウ
  • 各種編集モード(テキストモードおよびC/Rubyモードを含む)
  • スペルチェック
  • メールの読み書き
  • カスタマイズ性(Emacs Lispじゃなくても可)

くらいあれば。

今まで使ってない機能としては

  • マルチタスク
  • よりよいバックグラウンドタスク
  • ブラウザ
  • リファクタリング機能

とかあれば良いけど、なくても我慢できる。

_ [言語] Rails is the best thing that ever happened to Python | Zen and the Art of Ruby Programming

Railsは(人々の注意をPythonに向けるという意味で)Pythonにとってもっとも良いものとなりえる、 という話。

私としてはRubyが他の言語(LispとかSmalltalkとかPythonとか)の 呼び水になったとしてもそれはそれでよいと思っているのだが、 Railsの連中はどうなのかな。

まあ、それでも他の言語に逃げなくても済むように いろいろな機能を提供し続けることは止めたりはしないけど。

いつか追い越せ、他言語。

_ [Ruby] [#JRUBY-2220] Struct performance is pretty poor - jira.codehaus.org

RubyQuiz #157の結果から、 JRubyにおけるStructのアクセスがMRIより遅い、 というが正式にバグ認定されたという話。

まあ、勇気ある判断である。

ところで、このRubyQuiz #157ベンチマークであるが、 CRubyで試してみたところ、以下のようになった

matz@x61[ruby] ruby -I lib /tmp/157_benchmark.rb

            user     system      total        real

FRANK 24.060000 4.090000 28.150000 ( 28.630580)
JUSTIN 5.560000 0.410000 5.970000 ( 6.440966)
LIONEL 0.460000 0.050000 0.510000 ( 0.525290)
DOUG 2.970000 0.420000 3.390000 ( 3.515856)
PHILIPP 1.330000 0.070000 1.400000 ( 1.476920)
BILL 0.360000 0.030000 0.390000 ( 0.397130)

matz@x61[ruby] ruby1.9 -I lib /tmp/157_benchmark.rb

            user     system      total        real

FRANK 7.800000 0.020000 7.820000 ( 7.931905)
JUSTIN 3.500000 0.020000 3.520000 ( 3.527578)
LIONEL 0.220000 0.000000 0.220000 ( 0.218631)
DOUG 1.730000 0.010000 1.740000 ( 1.764487)
PHILIPP 0.800000 0.000000 0.800000 ( 0.800930)
BILL 0.180000 0.000000 0.180000 ( 0.182412)

ま、とりあえずRuby1.9の方がそれなりに速いってことで一安心。

が、うかうかしてるとJRubyに追いつかれるな。 競争は良いことだ。どきどきするけど。


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

_ 取材

「ワールドビジネスサテライト」の取材。

Rubyの、ということではなく、「クラウドソーシング」について オープンソース経験者という視点から聞きたかったらしい。

が、そもそもクラウドソーシングなんて言葉を知らない私は 聞かれてからあわてて検索したりして。 役に立つんだか、立たないんだか。

で、あわてて調べたクラウドソーシングについては、 一時「オープンソースにすれば「コミュニティ」が手伝ってくれてどんどん発展する」と 「誤解」されていたのと、同じ臭いを感じるが気のせいだろうか。

一応、インセンティブが重要というコメントを付けておいたが、 最終的にどういう扱いになるんだか不安なものである。

_ [Ruby] GCの改善について

あちこちでRuby(MRI)のGCについてけなされている。

まあ、たくさんのリソースをかけているJVMのGCに勝つのは 最初から無理な相談なんだが、とはいえ問題があるのであれば 改善したいのが技術者魂というものだ。

指摘されているRuby GCの「課題」は以下のようなものがある。

  • スループット
  • 停止時間
  • メモリリーク
  • プロセスサイズ
  • copy-on-writeとの相性

具体的に問題が生じているものもあれば 理論的可能性のものもあるが、まあ、問題がないとは言わない。

それぞれについて、もう少し解説した上で、 考えられる対策についても述べよう。

スループット

プログラムの実行時間全体の中で、 GCで消費される時間の比をスループットと呼ぶ。 これはGC全体の性能を意味する。

これを根本的に削減する方法はあまりないのだが、 世代別GCが有効だといわれている。

問題は世代別GCを正しく実装するためには 古い世代から新しい世代への参照を検出する必要があり、 そのためにはオブジェクトの書き換えをフックする「ライトバリアー(write barrier)」を 導入しなければならないこと。

以前のRubyに対して世代別GCを実装した結果では、 このライトバリアーのコストが高くて結果的に性能が低下してしまった。

とはいえ、現在の実装でスループットが悪くて使えないというケースは ほとんど聞いたことがないので、それほど強い動機づけはないかもしれない。

停止時間

通常の実装ではGC中には他の作業を行うことができないので、 リアルタイム性の高い処理中にGCが発生すると 処理が引っかかったような印象を与えることがある。 ここで重要になるのが「停止時間」である。

停止時間には「平均停止時間」と「最大停止時間」があり、 応答性に重要なのは最大停止時間の方。 またハードリアルタイム領域では、ただ単に短いだけでなく 予想可能である(たとえば最大100msで終了するとか)であることが 重要である、らしい。

世代別GCではスキャンするオブジェクトが減るため、 平均停止時間は減少するが、フルGCにはそれなりにコストがかかるため 最大停止時間は減少しない。

とはいえ、リアルタイム性が必要な領域でRubyを使うというケースは (まだ)あまり多くないので、停止時間が問題になることもそんなにないような気がする。

もし本当に問題になることがあるならば、 まずは現在のGCのままスイープフェーズをオンデマンドで行うことで、 GC時間をマーク時間だけに限定でき、停止時間を削減できる。

メモリリーク

これは良く指摘されるのだが、 Rubyは保守的GCを使っているので、 本当は参照されていないはずのオブジェクトが参照されていると見なされて いつまでも解放されない(ので結果的にメモリリークになる)ことが ときどき観測されるのだという。

これは確かに私も見たことがある。 個人的には問題だったことはないけど、 サーバープロセスのような長期間生きるプログラムだと 問題になるかもしれない。

で、そういう問題が起きた時の状態をデバッガで観測した経験からいうと Rubyにおけるリークは保守的GC固有の問題(整数値がアドレスと区別できないのでとりあえず生きていると見なす)というよりも、 Cスタックに参照が残っていて生きていると見なされているようだ。 スタック先頭からスタックボトムまで全領域をルートとして 扱っているのが「無駄な参照」を検出してしまう大きな理由なのだろう。

スキャンするCスタックを減らせばよいのだろうが、 スタックの構造はCPUやOSに依存するので、 移植性が下がることになりかねない。

悩ましい。

可能性としては

  • 基本的に保守的にマークする必要があるのはCで実装されたメソッドが使っているスタックだから、 そこだけを記録してルートにする。面倒だが移植性はありそう
  • greenletなどを 参照にOSごとCPUごとにルートを得る。知らないOSでは現状のまま

がある。時間が取れれば考えてみる価値はありそう。

プロセスサイズ

メモリリークとは別に長時間動き続けるRubyプロセスは肥大化する可能性がある。 これはRubyのメモリアロケータがオブジェクトのための領域をmallocする一方で なかなかfreeしないからである。

現状ではオブジェクトのためにheapと呼ばれる領域を割り当てているが ヒープに存在するオブジェクトがすべて解放された時だけ heap領域をfreeしている。 が、Ruby GCはオブジェクトの移動を行わないため、 現在の割り当て方針ではheapがfreeされる可能性はかなり低い。

現在、10000オブジェクト(2回目以降は前回のサイズの1.8倍)ぶん割り当ててるheapのサイズを もっと小さくすればfreeされるチャンスは増す。 もっともあまりfreeされすぎてもmallocとfreeの輻輳が起きて 効率が悪くなってしまうだろうけど。

あと、heapサイズを小さくすると保守的GCの使うオブジェクト判定のコストが上がってしまう 可能性がある。最近、trunkでオブジェクト判定にbsearchを導入したのは このheapサイズ縮小のための伏線である。

copy-on-writeとの相性

マーク・アンド・スイープGCでは、オブジェクトが生きているかどうかを判定するために 各オブジェクトごとにマークビットを設定している。 現状ではこのマークビットはオブジェクト内部に用意されているのだが、 考えてみるとGCごとにすべてのオブジェクトが(少なくとも1ビットは)書き換えられていることを 意味する。

これはUNIX系OSが備えているCopy-on-writeとすこぶる相性が悪い。 せっかく変更されないデータはプロセス間で共有しようとしているのに、 GCが起きるとオブジェクト領域が全部コピーされてしまう。

これだはfork(子プロセス生成)を多用するプログラムの効率が低下してしまう。 で、これについてはパッチを用意したのだが、 heapサイズ削減と相性が悪いし、それでなくてもGC性能が低下しそうである。 どうしたもんだか。

あと、そろそろ発売される日経Linux 4月号でもGCについて解説している。


2008年03月07日 [長年日記]

_ 取材

取材ウィーク。(苦笑

鳥取県の広報誌(なのか?)と、 地方TV局の取材を受ける。なんなんだ今週は。

特に新しい発言はしていない、と思う。

_ オープンソースサロン

オープンソースサロンの今回のテーマは 「アメリカ視察報告」と「Rubyをエンタープライズ領域に適用」の二本立て。

参加者それぞれにコメントを求められたのだけど、 なにを言ったらよいのかわからなくなって支離滅裂なことを発言してしまった。 たぶん、個人的にアレを視察だと認識していないからに違いない。

「エンタープライズ領域」の方は前回聞いたのと似たような話。 「業務」、「ウォーターフォール」、「COBOL技術者」、「コーディング規約」など 普段のRuby使いからは聞かれないような話が山盛り。

古いやり方を維持するのが良いのか悪いのかはともかく、 知見が高まるのは良いことと思う。

_ [Ruby] Teflon Ted: Rails Doesn't Scale

Ruby on Railsはスケールしないといわれているけれど、という話。

実際にはスケーラビリティを達成した事例のリンク集。 もちろん15分で作ったアプリそのままではスケールしないので、 そういう意味では難易度が高いというのは事実なんだけど、 適切な処置をすることでかなり高いスケーラビリティを実現できる。

なんにも考えないでもいい、というのはある種理想だけど、 なかなかそうはいかない。

マーケティング的には、少々ノウハウが必要な位の方が ビジネスになっていい、という判断もあるが、 これは少々さもしいかも。


2008年03月08日 [長年日記]

_ [言語] Sapphire, the Programming Language

Rubyの「欠点」を直すために作られたfork。 ストレートにサファイアと名付けるというのは予想外だ。

直そうとする「欠点」は

  • Improved Unicode support, including Unicode operators
  • Fine grained mixins
  • Structured warnings
  • Method annotations
  • Named parameters
  • AOP support
  • Asynchronous methods
  • Selector namespaces
  • Implicit getters and setters
  • Uses C99, warning free code.
  • Improved standard library. Some have been removed, others updated.
  • New libraries have been added, such as Rake, Gems, sys-admin.
  • Much improved MS Windows support.

なんだそうだ。どんどんやってほしい(いくつかは1.9で達成されてるけど)。 できが良い(かつ、互換性にあまり問題がないものは 本家Rubyに取り込みたいものだ。

_ OOエンジニアの輪! 〜 第 40 回 関 将俊 さんの巻 〜

咳さん。

OOエンジニアとひとことで言っても さまざまだよなあ、と思う。

_ 新見

半年に一度の新見での集会。 遠いぞ。


2008年03月09日 [長年日記]

_ [教会] 新見二日目

今度は家族と新見へ。 かかった時間は同じくらいでも、 慣れるとそんなに遠く感じなくなるから人間の主観はいいかげんなものだ。

家族(+親族)で食事。 大会ではコーラスに参加。 ほとんど練習に参加できなかったのに厚顔なものだ。 実際、一箇所間違えちゃった。

父親が長年果たしてきた責任に別の人が任命される。 息子はショックを受けていた。

が、後で電話したら、公式に責任を果たすことはなくなるけど 解任ってのはないので、 親族は例外ってことだった。息子大喜び。


2008年03月10日 [長年日記]

_ 取材

鳥取県の地方紙から取材。 なんだか「勝手知ったる」感じ。

適当にまとめてくださるのだろう。 ベテラン記者というのはそういうものか。


2008年03月11日 [長年日記]

_ The ”No Laptop” Meeting Rule (by Jeremy Zawodny)

ミーティングにノートPCを持ってくるな、というルール。

確かにノートPCがあると会議なんかそっちのけで、 内職に励んでしまい、なんのための会議なんだか、 という経験はしばしばある。

それはそれで反省すべきなんだが、 ノートPCに触る余地もないほど有意義な会議がさほどないというもの また事実である。

会議の数を減らすか、質を高める努力が必要なのだと思う > 会議主催者

まあ、本来は有意義な会議なんだが、 誘惑に堪え切れず内職を始めちゃったりする場合もあって、 それは私が一方的に悪いわけだ。

私が会議中にPCを眺めてぼーっとしているのを目撃したら それとなくつついてやってください。

_ 21世紀最大のテーマは公私混同 − @IT

Rubyなんかも、

  • 仕事が少なくて空いた時間に
  • 会社のコンピュータを使って

開発が始まったんで、ある意味、この「公私混同」の成果物である。

とはいえ、最近はSOX法だか「こんぷらいあんす」だかで

  • ノートPC持ち出し禁止
  • PCの業務外利用禁止
  • Webアクセス制限
  • 業務日誌必須

など、公私混同とか技術者の自由とは別の方向に進みつつあるようで、 そこはかとない危機感がある。

_ エンジニアの進化は「アウトプット」にあり! まつもとゆきひろ×小飼弾 | エンタープライズ | マイコミジャーナル

というわけで、東京に移動し、秋葉原でちょっとした買い物をした後、UDXへ。

で、対談である。弾さんとの公衆の面前での直接対話は久しぶり。 いつだったかパネリストとしてご一緒して以来だが、 なんのイベントだったっけか。すっかり忘れてる。

終始なごやかに進んだと思う。 聴衆の皆さんがどう受け止めたかはわからないが、 言いたかったこと:

  • 差別化重要
  • 同調圧力をはねかえせ

は言えたので個人的には満足。

感想リンクもたくさん見つけた。


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

_ 取材

東京にいるからと取材を受ける。今週も取材ウィークが続くのか。

ビジネスとRubyのようなテーマで。 主にRubyアソシエーション理事長としての「帽子」を期待されてのインタビュー。 十分に期待に応えられただろうか。

_ [言語] 動的型の言語でも以下のようなプログラムの問題を検出できます - koguroの日記

先日の動的言語で検出できないエラーの例でも Gauche用のglintならちゃんと検出できる、という話。

プログラムに内在的に含まれている情報を十分解析できれば 動的言語でも相当の問題を自動的に検出できるはずである。

解析時間の関係から、おそらくは静的言語の型チェックのように コンパイラに組み込みとはいかないかもしれないが、 それでもいろいろできることはあるはずだ。

Rubyでも自動検出をやってる人がいたような気がするんだけど。

_ [Ruby] RubyにLazySweepのパッチを作った - I am Cruby!

RubyのGCのためにLazySweepパッチを作った、という話。

LazySweepとはマーク・アンド・スイープ法でGCをする場合、 マークフェーズはプログラム本体を止めないと行うことができないが(ここではインクリメンタルGCは無視)、 スイープフェーズは並列に行えることに着目し、 スイープフェーズを行わずにGCを終了してしまうことで、 GCによる停止時間を削減しようというもの。

実際にはスイープのためのコストは個別のオブジェクト割り当てに分散されるので 停止時間は改善されるが、スループットは変化しない(or 若干低下する)。

いつかやりたいことだと思っていたので、 実際に取り掛かってくださったことにはauthorNariさんにすなおに感謝したい。

しかし、あちこちで話を聞くと プロセスサイズ問題とcopy-on-write問題の方が 停止時間よりも深刻なケースが多いようなので、 優先順位としては

  • ヒープサイズ縮小
  • copy-on-write friendly

の方が高いようだ。その上で、(そう遠くない将来)このLazySweepも取り込みたいものだ。

ところで、GCの性能評価のためにはベンチマークは必須である。 どこかに良いGCベンチマークはないものか。 GCの挙動はオブジェクトの割り当てパターンに大きく依存するので いろいろなパターンのものを取り混ぜたものが望ましい。

<URL:http://lloydforge.org/projects/ruby/>のものを もらってくるかなあ。

_ [言語] PragDave: The 'Language' in Domain-Specific Language Doesn't Mean English (or French, or Japanese, or ...)

Pragmatic Dave Thomasによる「DSLってのは英語っぽいプログラムのことではありません」宣言。

一般的にはともかく、 最近のRuby界では「Rubyの文法を「悪用」して、英語っぽく書くのがDSL」 という流れがあるので、それに釘を刺すというところか。

まあ、

2.weeks.ago

くらいならともかく、

add.a.diary.entry.for("Lunch").for(August.10.at(3.pm))

はやりすぎだろう。

_ [言語] Arc: I/O

ArcのI/O関数群。

基本的にSchemeのに似てる気がする。 まあ、Arc自身がMzScheme上に実装されているので当然といえば当然だが、 これらのportを使った抽象化は、学ぶ価値があると思う。 RubyでもStringIOを使って似たようなことはできるけど、 こっちの方がもっと洗練されている。


2008年03月13日 [長年日記]

_ 徳島講演

徳島OSS勉強会で 「Ruby誕生秘話とOSSの展望」という講演をするため移動。

っていうか、徳島遠い。 たぶん、正解は島根が遠いので相対的に徳島が遠く感じられる、だけど。 片道5時間弱。

電車で岡山まで、さらに高松経由で、徳島まで。

昼飯の時間もほとんどなかったので、 高松駅で立ち食いうどん。おろしぶっかけ(温)。 駅のうどんじゃこれぞ本場というような感動はなかった。

講演は70名くらいか。 今回は完全新作というわけではないのだが、 どのくらい伝わったかなあ。

一応、地理的ハンデの克服みたいな話はしたんだけど。

で、少々スタッフの人と懇親のようなことをして、 19時30分の電車でトンボ返り。

夕食は徳島駅で立ち食いうどん。またうどんかっと言われそうだけど、 好きなんだもん。

こちらはかき揚げうどん。揚げたてで大変おいしかったが、 電車の時間が気になる身にはちょっと大変だった。 おいしいと熱いの狭間で苦しむ(苦笑

松江についたのは深夜過ぎ。自宅にたどりついたのは1時が近かった。 大変な移動である。

_ 七左衛門のメモ帳: 無料より優れたもの

Kevin Kelly -- Better Than Freeの翻訳。

英語読むよりはずっと楽なのでありがたい。

情報は基本的にコピー可能な上に、 最近ではコピーのためのコストはどんどん下がっている。 究極的にはあらゆるコピーのコストはゼロに限りなく近づくだろう。

そのような社会では「コピー不能なもの」だけが価値を持つ。 しかし、いったいコピー不能なものってどんなものがあるだろうって話。

もちろん、物理的実体のあるもののコピーコストはそんなに下がらないけど、 そうでないものの話。

これはオープンソースの戦略と本質的には同じである。 情報に過ぎないソフトウェアは本質的にコピー可能で そのコストはゼロに近づいている。

が、本当に費用が発生しないならばソフトウェア開発者は ご飯が食べれないから、どこかで「コピー不能な価値」を発生させなきゃならない。 オープンソースにかかわるビジネスを行おうという人は この文章に目を通しておいて損はない。

_ [OSS] 国産ソフトのオープンソース化が増加、「いじりたい」に応える − @IT

いろいろなものがオープンソース化するのは良いことだと思う。 もちろん、それら全部が「成功」するとは限らないけれど、 多様性がなければ生態系は発生しないし、 いろいろなものが切磋琢磨する状態でなければ 良いものは生まれないだろうから。

単純に効率だけ考えれば、各分野にひとつだけ存在すればいいんだけどねえ。


2008年03月14日 [長年日記]

_ 卒業式

長女の中学卒業式。

昨日、無理して帰ってきたのはそのせいだ。 なかなか感動的な式であった。 子供がこれだけ成長したのだと思うと感慨深い。

自分のはどうだったかな。覚えてないな。

_ [Ruby] Headius: Duby: A Type-Inferred Ruby-Like JVM Language

Rubyっぽいけど静的型のある言語Duby。 アノテーションみたいな形で型情報を付加している。 JRubyの実装言語として考えているのだそうだ。

もちろん、これだけで完結した言語と考えると いろいろと不満があるのだが、Ruby(JRuby)の拡張を行うために 他の言語を使いたくない、せめてRubyのサブセットで、というニーズに応えるものになっている。

個人的には切り替えるが好きなので、Cでエクステンションを書いたり、 Inlineを使うのが趣味にあうのだが、 そうでない人も多いだろう。

似たようなアプローチで Pythonだとpyrexというのがあるね。

_ [Ruby] I'd love to quit my job! (sort of) - O'Reilly Ruby

ジョジョッ、俺は仕事を辞めるぞーっ

Gregory Brownが寄付を集めてる。 十分に集まったらフルタイムの仕事を辞めてRubyのために時間を使うのだそうだ。 自分はまだ若くて独身だし、さほどお金が必要なわけじゃないから、 適任だろう、とのこと。

このエントリを書いた時点では妄想レベルだったようだが、 あっと言う間に寄付が集まり、 またRubyCentralが寄付1ドルあたり1ドルの寄付を行う(最大5000ドルまで)という発表まで行われて一気に現実化した。

日本でもそういう人が出てくるだろうか。 日本には寄付の習慣がないから難しいのかな。 それならRubyアソシエーションからの「支援」という形ではどうだろうか。

_ オープンソース、UGCの世界での情報開示と、新たな時代のメディア - Ansible Two - 星暁雄の雑記帳

先日のRubyの「GCの改善」というエントリで 現在のRubyの(GCの)欠点|課題について述べたところ、

商用製品であれば、このMatz発言のようにマーケティング上は不利とみなされる材料が当事者の口から積極的に語られることはまずない。

とのコメントをいただいた。

そうなのか。通常のマーケティングとは無縁の世界に生きてきたので そういう視点はかえって新鮮であった。私の住んでいる世界では 欠点はあるのはむしろ当然で、それを認識している、直そうとしていることが マーケティング的にプラスになる世界なので。

_ [OSS] シリコンバレーからの手紙138 - 目からうろこが何枚も落ちたオープンソースの“人間的本質”

日経BP主催の梅田さんの二回目の対談についての梅田さんからの感想記事が 公開されている。二回目は梅田さんはすっかり聞き手に回ってくださって なんか私ばかりが話していたので、恐縮だが、私にとって「当たり前」の ことでも梅田さんにとっては新鮮だというのはあったのだろう。

オープンソースとは、ソフトウェアのソースコード(人が記述したプログラムそのもの)をネット上に無償公開し、世界中の不特定多数の開発者が自由に参加できる環境を用意し、そのソフトウェアをさらに開発していく方式のことだ。リーナス・トーバルズが創始したリナックスが有名なように、ほとんどのオープンソース・プロジェクトは欧米から生まれている。

しかし日本人でたった一人だけ、世界中の人々が使うソフトウェアをオープンソース方式で開発したリーダーがいる。島根県松江市在住のまつもとゆきひろ(本名・松本行弘、一九六五年生まれ)である。彼が構想し、いまも日夜開発を続けるプログラミング言語「Ruby」は世界中に広がり、利用者は百万人にまで膨れ上がろうとしている。

えーと、まず「オープンソースの定義」からして違ってたり、 私が「日本人でたった一人だけ〜リーダーがいる」ことになってたりと いろいろと物議を醸す表現である。

「日本人で一番有名なオープンソースプロジェクトリーダー」くらいならともかく、 「たった一人」はどう考えても言い過ぎである。

「オープンソースとは」があんな風になっちゃったのは、 きっと梅田さんは普段からライセンスではないなにか、 バザール開発とかコミュニティ開発とかその辺を見ているせいなんだと思うけど、 それにはそれで「オープンソース」ではない違う名前をつけてほしいなあ。

それなりに歴史と苦労がある言葉なんだから。


2008年03月15日 [長年日記]

_ [言語] Number of Methods in the String Class

文字列(String)クラスのメソッド数。

Python: 37
Java: 65
Ruby: 119

圧倒的じゃないか、我が軍は。

ちなみに、実際に数えたらRuby 1.8で102、Ruby 1.9で103だった。

ruby -e 'p ((String.instance_methods - Object.instance_methods).size)'

元エントリはPythonにひいき目の人が書いたエントリらしいので、 JavaやRubyのグラフにひびが入っていて、「メソッド大杉」というニュアンスが 提示されているが、実際のところそれはどうなんだろう。

もちろん、メソッド数が多ければそれだけ覚えることが多いわけだから そういう意味では言語が難しくなるということはあるだろう。 しかし、メソッドの数ってのは多いからすぐに困ると言うことはあまりない 組み込みインタプリタだとプログラムサイズに影響するということはあるかもしれないけど、 現状でRubyをそういう使い方をする人はほとんどいないし。

しかし、逆にある処理についてStringクラスでメソッドが提供されていなければ、 自作するか他のモジュールに頼らなければならない(Pythonならstringモジュールとか)ので、 生産性という観点からはむしろ多い方が良い場合の方が多そう。

_ [言語] Make me pulse - Making a better life for web developer since 2006 >> Blog Archive >> PHP6, Unicode and TextIterator features

PHPのUnicodeサポート。

っていうか、

$name = "Antoine Ughetto";
$jap = str_transliterate($name, 'Latin', 'Katakana');   # アントイネ ウグヘット
echo  str_transliterate($jap, 'Any', 'Latin');          # antoine uguhetto

っていうのが本当に必要な局面があるのか、とか、聞きたいところである。

が、そのやる気は素晴らしい。ぜひとも真似したいところである。

_ [OSS] D.C.T.W.Y.C.D.T: Common characteristics of failed open-sourced projects

失敗するオープンソースプロジェクトに共通する特徴。

  • 大風呂敷を広げすぎる(Start with something big)
  • デザインにこだわりすぎる(Blind design)
  • 火のない煙(Smoke without fire) -- アプリケーションに集中して
  • 情熱が足りない(Lack of passion)
  • モックアップが多すぎる(Too many mock-ups (will kill you))
  • 流行に振り回される(Follow the fashion)
  • 車輪の再発明(Reinvent the wheels)
  • メンテナンスの軽視(Underestimate the maintenance)

わかる、わかる。


2008年03月16日 [長年日記]

_ [教会] 安息日

聖餐会の話、日曜学校のレッスン、初等協会でお話。

ホームティーチング。

なんともロマンチックなデートの話を聞いた。 どうにもそういう「女性受け」しそうな発想に欠ける私としては 妻のためにも爪の垢を煎じて飲まねばならないと強く感じた。

いや、なんか飲んだくらいで発想が改善されるなら苦労はしないんだけどね、実際。

_ [教会] ニカイア・コンスタンティノポリス信条 - Wikipedia

ある種の人々によると「この信条を受けれいている人」というのがクリスチャンの定義なのだそうだ。 もうちょっと三位一体とかそういうのが出てくると思ったけど、これはちょっと意外だった。 それと自分の無知を痛感した。

だとすると原始キリスト教会の構成員たるペテロとかパウロとかはクリスチャンじゃないとか。 あと内村鑑三(無教会主義)とか。

ちなみに私のクリスチャンの定義は「イエス・キリストを救い主として受け入れている人」であり、 上記の定義よりもかなり広い。

あと、実際に読んでみると、ニカイア・コンスタンティノポリス信条で 私の信仰と矛盾する言及は(少なくとも表面的には)一切ない、というのも意外だった。

矛盾しないなら受け入れても良さそうなものだが、 私の通っている教会は、教義的には原始キリスト教会からのフォークを主張しているので、 「フォーク後」のニカイア・コンスタンティノポリス信条にはしばられないという解釈なのだと思う。


2008年03月17日 [長年日記]

_ [Ruby] 「MacRuby」 - ひさしを借りて母屋を乗っ取るか? Mac OS Xの新たなRuby環境 (1) MacRubyとは何か? | パソコン | マイコミジャーナル

MacRubyの紹介。

しかし、「ひさしを借りて母屋を乗っ取る」ってのはどういう意味だと解釈すればよいのか。

MacRubyが本家Rubyを乗っ取る

MacRubyがOS Xでしか動かない以上、それはかなり難しい。 Rubyが動く環境はOS Xだけじゃないんだから。 そもそも私の環境がLinuxだし。

ただし、MacRubyがObjective-Cとの連携のために キーワード引数を拡張していて、そのやり方は 将来(Ruby2.0?)のキーワード引数に影響を与える可能性がないとはいえない。

MacRubyがObjective-C(or AppleScript)を乗っ取る

タイトルをつけた人の意図はそこにはないとは思うけど、 これは結構ありそう。

もちろん、Objective-Cのすべてを奪うことはありえないけど、 MacRubyレベルでObjective-Cとの融合が進むと カジュアルな利用はRubyで行うというのは予想以上に広まるかも。

また、AppleScriptの英語モドキよりもいっそRubyのような 「普通のプログラミング言語」を使った方がわかりやすい という人も多いだろう。

_ 5 more essentials for your programming toolbox | Spiteful.com

「プログラマの道具箱」に追加する道具。

中でも Unrolled linked listSkip listは面白い。 機会があればぜひ使ってみたい。

_ About the International Biographical Centre

ここ数年、リンク先のような海外の「名簿屋」からのダイレクトメールがひんぱんに来る。

いわく、

あなた様はトップ2000サイエンティストに選ばれました。 あなた様の名前と業績はわが社の人名録に記録されます。 つきましては間違いがないように以下のフォームに あなた様の名前、住所、業績の詳細を記して送り返してください。

また、選出されたあなた様には私どもの人名録を特価でお譲りします($200)。

勘弁して。どこで私の名前やら(会社の)住所やらを入手したのやら。

しかし、わたしごときが「トップ2000サイエンティスト」とは。 片腹痛い。自尊心を刺激しようとして失敗している。

こんなのが効果がある人がいるのかな。 いるんだろうな。


2008年03月18日 [長年日記]

_ グーグル社員が明かす、イノベーション誕生の舞台裏:ニュース - CNET Japan

Google社内のシステム。 英語でもうちょっと詳しい記事を読んだ覚えがあるんだが、 URLを失念しちゃった。

で、最近、Ruby開発支援サイトを改良したいと言う欲求があるんだが、 単にTracとかRedMineとかRetrospectivaを導入するだけじゃなくて、 コードレビューとか投票とかも連携したいなあなんて思ってるんだけど、 そういうのって上記のツールでできるんだっけか。

_ [言語] Muad`Dib: An Embedded ALGOL-like language in Prolog

通常の言語を使ってPrologのようなユニフィケーションを行うってのは よくある発想だけど、こっちは逆。Prolog上で手続き型っぽい言語を実装するという話。

意外と簡単にできるもんだな。

_ [Ruby] An Agile Way > LuRuJu on Rails -- JUDE で描いた図がそのまま Rails で動く! : ITmedia オルタナティブ・ブログ

私はその手のツールに弱いんで、全貌を完全に把握することはできないんだけど、 これはたぶんすごいことなんだと思う。グラフィカルに定義したものが そのまま動くんだから。

私の最初の職場で本当に役に立つかよくわからないCASEツールを作っていた 同僚たちもこれを見たら草葉の陰で涙を流すかもしれない。 まだ死んでないけど。

_ [言語] Kite - Trac

新言語Kite。

なんとなく「ひっくり返った」印象を与える。

{ value|print; }|for(1|range(10));

これで1から10まで出力するんだそうだ。

これは「|」がメッセージセンドであると解釈する、つまり

  • valueにprintせよ
  • という内容のブロックに
  • forというメッセージを
  • 1にrange(10)というメッセージによって得られる値(range)を引数に呼び出す

と解釈するようだ。keyとかvalueとかは決め打ちのようだ。

_ 合格発表

長女の高校の合格発表。

最近はネットでチェックできるのね。 合格してた。

中学校の同級生で同じ高校を受験した人は全員合格していたそうだ。 喜ばしいことなんだろうが、 少子化による競争の低下を目の当たりにしたような気がする。

「ゆとり」以前にそっちが問題だろう。


2008年03月19日 [長年日記]

_ おくやみ:作家 アーサー C. クラーク、90歳 - Engadget Japanese

ひとつの時代が終わった。が、彼の作品の価値が減じることはない。

っていうか、作家の作品ってのは寿命が長いよね。 芸術家は全般にそうだけど。 比べてプログラマの作品の寿命はそれほどじゃない。

ちょっと寂しい。

_ [Ruby] Git-Style Automatic Paging in Ruby : Nex3

gitは出力先がttyだと自動的にページャを起動してくれる。 それをRubyで実現する方法。

あと、コマンドラインオプションが間違ってたらスペルチェックかけて 候補を出してくれる機能(コマンド名ならzshがやってくれる)も標準でほしい。

Rubyで STDOUTとoptparseにttyを特別扱いするコードを組み込むと Rubyで作られたコマンドは全部そういう機能を装備することになるな。 どうだろうか。

_ [Ruby] Ruby as an AppleScript Replacement?

先日、MacRubyについて、AppleScriptの代替になるのでは、と書いたが、 実際にやってみた例。

tell application "TextEdit"
  get paragraph 1 of document "Read Me"
end tell

が、こうなる。

app('TextEdit').documents['Read Me'].paragraphs[1].get

おおむね好評のようだ。

_ 【コラム】エンジニアのための英語術 (43) 論理のルールに従って主張を整理する - 英語でプレゼンテーション その2 | マイコミジャーナル

先日のGoogle TechTalkの内容を「アメリカ流プレゼンテーション」流儀にしたがうと こんな感じになると言う話。勉強になるが、正直恥ずかしい。

ただし、これはあくまでも「アメリカ(ビジネス?)流儀」である。 RubyConfとかOSCONとかでプレゼンするギークたちはもうちょっと別の流儀にしたがっている印象がある。

それと、私のプレゼンに対するコメントには、 ネガティブに取り扱われているのは発音や語彙で、 ここで言われているようなフォーマットに踏み込んだものがないことからも ギークたちの間では原田さんの紹介してくださっているプレゼン術は一般的になっていないことがうかがえる。

ま、だから勉強しなくていいわけじゃないけど。


2008年03月20日 春分の日 [長年日記]

_ 休日

春分の日でお休みなので、 下の二人を連れてフォーゲルパークへ。 鳥たちをみて喜んでいた。

モモイロペリカンがけっこう頑張って芸をしていた。 頭、いいのね。そうとう大きい(羽を広げると1.5m以上ありそう)が、 まだ生後10ヶ月というのも驚き。

_ [言語] 『プログラミングErlang』

しばらく前に献本していただいていた本を読む。

しばらく前に言語探訪で紹介していたりするのだが、 こうやってまとめて読んでみるとかなり知らないことが多い。

「ビット構文」とか、pack/unpackより便利かもしれない。 あと、多重代入の代わりにパターンマッチとか。

ただ、文法はちょっと分かりにくい。 よくわからない句読点のルールとか、endとか。

単一代入しかない関数型言語というのは 「普通の言語」とは、かなり異なったプログラミングスタイルを要求するが、 その故に便利な点も数多くあるなあ。副作用がないから プロセスが遠慮なく中断できる点とか。

_ [言語] 思考実験 - immutableな言語

しかし、改めて考えてみると Erlangってば、参照透過性はないし、 静的型はないし、関数型言語である必要はないのではないか。

Erlangを真に特徴づけているのは、

  • immutableな値
  • アクターモデル

ではないだろうか。他のものは目立つけど実はそれほど重要じゃない。

アクターモデルがあるから、並列プログラミングが簡潔に記述でき、 値がimmutableであるから、「オブジェクトの状態」で悩むことがない。 オブジェクトのアイデンティティが重視されないから、 メモリ空間を超えて値を伝搬しても影響がない。

おまけに(GCの)実装としてはライトバリアが要らなかったり、 循環参照がないことも保証されるから、リファレンスカウントでも十分だったりするのもありがたい。

としたら、たとえばRubyとそっくりな外観で 値がすべてimmutableな言語があったとしたら、どうだろう。 関数型というパラダイムの代わりにオブジェクト指向というパラダイムを提供する Erlang的な言語。

文字列や配列についてはさほど問題はないだろう。 Pythonをはじめ文字列がimmutableな言語は珍しくないし、 配列も(一部の「容器」として使っている場合以外は)大丈夫。

問題になりそうなのは、 ハッシュやオブジェクトである。 これらが状態を持たない、というのはかなりプログラミングスタイルに変革を要求しそう。

そもそも書けるんだろうか。 入出力とかはLazyなSequenceとして扱うんだろうか。

_ [Ruby] Obie Fernandez: Big Name Companies Using Ruby on Rails

Ruby on Railsを使っている有名企業。

  • amazon.com
  • BBC
  • CapGemini
  • BPN
  • Cisco
  • C|Net
  • EA (Electronic Arts)
  • IBM
  • JP Morgan
  • NASA
  • Oakley
  • Oracle
  • Siemens
  • ThoughtWorks
  • Yahoo!

あまり公表はされてないが筆者(Obie Fernandez)の知ってるのでは、他に

  • John Deere
  • New York Times
  • NBC
  • Barclays
  • LA Times
  • Chicago Tribune
  • Orbitz
  • Google
  • Turner Media
  • Limewire

もある。


2008年03月21日 [長年日記]

_ Amazon.co.jp: Googleを支える技術 ~巨大システムの内側の世界 [WEB+DB PRESS plusシリーズ]: 西田 圭介

4774134325

Googleってのは相当オープンな企業で、普通なら秘密にしてしまうような 内部情報も(最新ではないにしても)論文などでオープンにしてしまう。 が、それを

  • わかりやすい言葉で
  • 一箇所にまとめる

のはなかなか大変なことだ。本書はそれを実現した貴重な本だと思う。 著者の西田さんは私の(NaClでの)元同僚。 OpenCOBOLコンパイラなどでお世話になった。

前書きを依頼された時、 本当は検索技術とか得意じゃないので、 お断りしようかと思ったのだが、 実際に中身を読んだら、思ったよりずっとわかりやすく書いてあるし、 いろいろな人の参考になるだろうと思って引き受けることにした。

単なる検索技術からデータセンターの作り方まで、 さまざまな領域をカバーしているし、面白いと思うよ。

_ [Ruby] culann.com >> Blog Archive >> And the greatest of these is laziness

エラーが発生したら、エラーページにテストコードを表示する。 今後は二度と同じエラーは起こさない、という怠惰さ。

テストファースト開発じゃなくて、テストファーストデバッグか。

なかなかテストから入る(TDD)とか、挙動を定義する(BDD)とかは 導入しにくい人でもこっちなら始めやすいかも。

もちろん網羅的なテストにはならないんだろうけど。

_ [Ruby] 「Rubyは◎,Seasar2は♪」---Linux Foundation JapanがSIに使えるOSS一覧,利用実績でレーティング:ITpro

OSSを使ったSIにおける実績をまとめたレポート。 「Rubyが◎」というのは実際のところどうなのか、という気がしないでもないが、 確かに実績はずいぶんたまっているような気はする。

_ [Ruby] Rails deployment a solved problem? Just upload & it works?

Ruby on RailsはPHPとくらべてDeployが弱い、PHPはアップロードするだけで そこそこの速度で動くのに、Railsはdevelopmentモードはアップロードするだけだが遅いし、 productionモードはサーバーをリスタートさせなきゃいけない(し、FastCGIとか面倒)というのが、 一般的な評判だが、それを改善する(かもしれない)Apacheモジュールmodrails

動画が紹介されているんだけど、普段からRailsを使わない私にはうれしさがよくわからなかった。 でも、いいものなんだよね、きっと。

_ [言語] Sapphire - Two New Re-Implementations of Ruby

先日、Sapphireについてとりあげたばかりだが、 同じことを考えるのは一人じゃなかった、という話。

もうひとつ別のSapphire(やっぱりRubyのフォーク)があって、 それら両方の紹介。

前回紹介したSapphireの方が現実主義みたい。


2008年03月22日 [長年日記]

_ MOONGIFT: >> VMWareの開発でも利用されているソースコードレビュー共有ソフトウェア「Review Board」

先日、Ruby開発用のコラボレーションツールについて考えてみたが、 こういうのもいいかもなあ。

_ [Ruby] How Rubinius SendSites Work - Part 1 ,A+ Building a Better Ruby

RubiniusのメソッドキャッシュであるSendSiteについて。

普通のインラインキャッシュとどう違うのかよくわからなかったんだけど、 統計情報を格納しているから、キャッシュ精度が高まるとかそういうことなのかな。

YARVもインラインキャッシュを実装しているのだが、 現時点ではoffになっている。ある程度性能が出るそうだから、 ぜひonにしたいんだけど、品質に(まだ)自信がないのだそうだ。

_ [Ruby] Why Rails Will Not Reign Supreme (and why you shouldn't want it to)

Rubyが「Reign Supreme」にならない理由。 っていうか、そもそもなる必要ないじゃん、って話。

「Reign Supreme」ってのは、世間を席巻とかいうような意味だろうか。

が、ビジネス的に世間に広く受け入れられるってことは いいことばかりではない。むしろ、悪いことの方が多いから、 RubyはRubyのままでいてほしい、というところか。

私もそう思う。ただし、Rubyで幸せになれる人には増えてほしいので、 ある程度広まってくれるのがありがたいので痛し痒しだ。 また、話題性がないとわたし(たち)のビジネスモデルが成立しない(ご飯が食べられない)という 問題もある。


2008年03月23日 [長年日記]

_ [教会] 新規開始

日曜学校の私のクラスは今日からテキストの最初からに戻る。

今まで私のクラス(基礎)にいた人たちには上のクラスにいってもらう、 という話だったのだが、ふたを開けたらみんな戻ってきている。 慕われているのはありがたいが、もうそろそろ上のクラスに上がってもよいと思ったんだけどなあ。

教義の基礎から学び直す。

_ [教会] 反省・復活祭

今日はイースター(復活祭)であったのに、 なにも特別な活動をすることがなかった。 いくら非キリスト教国に住んでいるとはいえ、 キリスト教徒にとっては重要な日であるのに、 なんの活動もできないようでは不明をなじられてもしかたがない。

来年こそは。


2008年03月24日 [長年日記]

_ 楽天ミーティング

東京へ移動。ランチ後、技術研究所ミーティング。

RomaおよびFairyはRubyKaigiころにみなさんにデモができるように調整中。

とくにRomaは、

  • memcachedのように(も)使える
  • けど、(サーバーサイドで)分散できる
  • さらにノードの追加、削除が簡単。自動調整
  • しかも永続性がある

というのは目新しいのではないだろうか。

_ 七左衛門のメモ帳: 「千人の忠実なファン」

「千人の忠実なファン」がいればアーティストは生きていける。

オープンソースプログラマが生活を維持するためには何人の「忠実なファン」なファンが必要だろうか。 っていうか、そもそも「忠実なファン」を持っているオープンソースプログラマが(日本に)いるんだろうか。

日本人オープンソースプログラマでは私が一番近いと思うけど、 私が生活を維持しているのは「ファン」のおかげではないよな。

Tシャツでも売るかなあ。

いや、原稿や講演の依頼は「ファン」がいるからだ、と考えれば ある程度はあるのか。


2008年03月28日 [長年日記]

_ ヨーロッパへ出発

朝一番の飛行機で東京へ。 7時前に米子空港へ移動するのはいろいろとつらい。 今年はスターアライアンスのマイルを稼ごうと思って 米子を使うようにしてるんだけど、出雲空港に比べると遠いなあ。

まあ、今回は国際線との接続があるので、いずれにしてもしょうがないんだけど。

起きれないといけないという理由で結局寝てないし。 なんだかんだで二徹している。 そんなにやることが多いわけじゃないんだけど、 いろいろと思うことがあって。

羽田からリムジンバスで成田に移動。

成田からSASでコペンハーゲン。A340。

コペンハーゲンで2時間ほど時間をつぶしてから チェコ航空でプラハへ。飛行時間はわずか1時間ほど。B737。

空港についたが、荷物が出てこない。 どうもおかしいと思って係りの人に聞いたら、 どうも私の荷物は間違ってオスロに行ってしまったそうだ。 どうもタグを他の人のと取り違えたらしい。

うーむ。

いろいろと話をしたが、「明日ホテルに届ける」ということになった。 「たぶん午後になるだろう」とのこと。

ささだくんと同室。

しかし、今回泊まったBlack Star Hotelというのは 古い古い住居を改修したものみたいで、 ぜんぜんホテルらしくない。 まあ、プラハの街は全体がそんな感じだけど。

で、フロントで受付してから、

  • 一度外に出て
  • 外側の扉の鍵を開け
  • 内側の檻のような扉の鍵を開け
  • 階段の前にある檻のような扉の鍵を開け
  • 階段を2階ほど上がって
  • テラスのようなところに入るフェンスを開け(これは鍵なし)
  • 部屋の前にある鎧戸のような扉の鍵を開け
  • 内側にあるドアの鍵を開け

しないと部屋に入れない構造と言うのは面倒でしょうがない。 聞くところによると他のホテルでも複数の鍵が必要らしいので、 チェコ人は鍵が大好きなのかもしれない。


2008年03月31日 [長年日記]

_ コペンハーゲンに移動

コペンハーゲンへの移動日。

午前中、ちょっとだけ観光して(足が痛いよ)、 すこしだけおみやげを買ってから、 空港で。

空港で残った最後のチェコ・クラウンを使い切る。 といっても、冷蔵庫に張るマグネットを買った(80Kc)だけだけど。 2Kcだけ残った。

コペンハーゲンではDr.Nicに遭遇。 ホテルではDave Thomasたちにも会った。 そういえばDaveに会うのは久しぶりな気がするな。

TriForkの人たちにディナーをおごってもらう。 楽しかった/おいしかった。


最新 追記