最新 追記

Matzにっき


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

_ RFC4627 JSON

RFC4627としてJSONが定義されたという話(の日本語訳)。

JSONも結構便利だよね。誰かができの良さそうなJSONライブラリを書いてくれたら 標準添付するのがいいんじゃないかなあ。

_ [Ruby] Author Interviews: Hal Fulton - The Ruby Way

最近、第二版が出た「The Ruby Way」の著者、Hal Fultonへのインタビュー。

HalへRubyを紹介したのがConrad Schneikerだとは知らなかった。 彼はcomp.lang.ruby設立の立役者であり、 Ruby界に「Principle of Least Surprise」という標語を導入した人でもある(確か)。

_ 新たな技術を確たるビジネスに変える−スタートアップ企業の聖地オレゴン

きっと松江市長は「オープンソースラボ」にこういうのを期待しているんではなかろうか。 くわばら、くわばら。

とはいうものの、なんらかの形で「良循環」で実現させてみたいものだ。 最大の障壁は地域格差と、それによる(プログラマ)人口密度の低さのような気がする。

_ Joel on Software: Language Wars

日本語訳

JoelがRubyに関して触れてくれるのはありがたいことだと思う。 それにJoelの結論に対して反対しているというわけでもない。

that's not a safe choice for at least another year or six.

(RoRは)少なくとも後何年かは安全な選択とは言えない

彼はビジネスマンだし、彼自らが Ruby on Railsを選択することによる「リスク」を勧めるのはどうかと思う。

ただし、そこから先はいただけない。

1) it displays a stunning antipathy towards Unicode and, 2) it's known to be slow, so if you become The Next MySpace, you'll be buying 5 times as many boxes as the .NET guy down the hall.

1) RubyはひどくUnicodeを嫌っているし、 2) 遅いことで知られている。次のMySpace(SNS)になろうとしたら、.NETで実装するより5倍の台数マシンを買わなくちゃいけなくなる。

いずれも事実ではない。

確かにJava、PythonやPerlなどUnicode中心のやり方とは異なっているけど、 別にUnicodeを嫌っているわけじゃないし、 Webアプリケーションのボトルネックは、主にネットワークやデータベースで 言語にはない(じゃなきゃ、誰がPHPを使う?)。 むしろ、大きなサイトの話を聞くと、 「マシンは買えばすむが生産性は金だけでは解決できない」という傾向があるようだ。

[ruby-talk:211986]

(追記)

Joel自身はVBScriptをベースにしたWasabiという言語を使っているそうだ。矛盾じゃないか、という指摘があちこちから上がっているが、 他人にリスクを勧めるのと自分でリスクをとるのとは別問題だと思う。

彼自身は「職を危うくする」危険はないわけだし。


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

_ [Ruby] Ruby for Symbian

Symbian OSで動くRuby。実際には確かめてないんで完成度とかはわからない。

正直、当初UNIX系のことしか考えずに実装されたRubyが、 Symbianで動くとは驚きである。PDAということならZaurusで動くわけだけど。

そのうちPalmとかでも動くようになるかもしれない。 Palmの絶滅とどっちが早いか。

_ U-20プログラミングコンテスト最終審査会

実際の受賞候補者のプレゼンテーションとそれを受けた最終審査。

詳細は(まだ)書けないが、印象に残ったことを

  • みんなプレゼンテーションが上手。感動モノ
  • 若いのに言語処理系を作ろうとは見上げた根性だ。このまま続けば私を越えるな
  • 個人部門の方が面白いものが多い。完成度は団体部門の方が上(のことが多い)
  • 評価は難しい。ゲームと言語処理系を同じ土俵で評価するなんて無理がある。審査員の得意分野もばらばらだし。

ま、それでも、それなりの結果を出せたのではないか、と思う。

_ [Ruby] Symbol as subclass of String

SmalltalkにならってSymbolをStringのサブクラスにしてみた。 東京からの帰りの飛行機の中で実装できちゃった。

どのくらい影響があるのかなあ。

(追記)

ある程度予想していたが、結構広いようだ。 さて、これもどうするかな。

_ [Ruby] nil.to_s

金曜あたりにnil.to_sが"nil"を返すようにしたんだけど、 その影響は意外に大きいようだ。

で、ruby-devでいろいろ議論が持ち上がっている。 実際にはこの変更に固執するつもりはないんだが、 議論の結果

  • nilとはなにか
  • to_sの役割
  • nil以外(ArrayとかHashとか)のto_sの挙動

などについて考察が進めばよいと思っている。

しかし、言語のあるべき姿について頭をつきあわせて考えるのは楽しいな。

_ 遅れても困る人はいない , リリースは政治パフォーマンスなんだよ。

私の愚痴に対して、 mputさんが突っ込んでおられる。

mputさんのところはコメントできないようなので、こちらで書くことにする。

さて、私の読んだところ、mputさんの主張は以下のようなものだと考える。

  1. リリースが遅れると社会的信用が目減りする
  2. リリースがきちんと行われていることは「このプロジェクトはきちんとした運営が行われています」ということを内外に示す政治的パフォーマンスである。
  3. インターネットの普及とリポジトリの公開によってリリースを行う技術的動機はなくなった(減った)
  4. しかし、リリースの「儀式的意味合い」はむしろ増加している

合ってるかな?

で、私自身はこれに対して極端に反対しているわけではない。 さすがの私だって「リリースが遅れると社会的信用が目減りする」ことは解っているし、 リリースがちゃんと行われているプロジェクトの方がきちんと運営されている印象を与えることだって知っている。

ただし、(大方の人には意外かもしれないが)私はリリースの技術的動機がなくなったとか、 減ったとか全然思っていない。ほとんどの人はCVSリポジトリを直接アクセスしたり、 スナップショットをコンパイルして使ったりなんてしない。 リリースされていないバージョンは98%の人にとって存在しないのと同じなのだ。

そうすると、天秤が発生する。 つまり、リリースが遅れることによる社会的信用の目減りと リリースにバグが含まれていることによる社会的信用の目減りだ。

「期日通りのリリース」を選ぶか「期日は遅れるがいくつかバグが少ないリリース」を選ぶか、だ。 期日通りのリリースには社会的信用を勝ちえるというメリットがある。 一方、バグにはその存在自身に社会的信用を失わせる働きがある。

もちろん「期日通りにバグのないリリース」がもっとも良いのだが、 なかなかそれは実現しない。かならずどちらかを選ばなければならないとしたら?

私自身は後者の方がより重要だと思う。

しばらく経ってしまえば1.8.0がいつリリースされたかなんて誰も気にしない(覚えてる?)。 だけど、1.8.0に含まれてたバグに突き当たった人の何人かは それ以降Rubyの品質を信じられないだろうし、「だから、もう使わない」って人もいるだろう。 そしたら「期日通りのリリースによる社会的信用」なんて簡単に吹っ飛んでしまう。

さらに今回のリリースについては、以下のような条件もあった。

  • リリース日の決定には外部からの要因はまったくなかった
  • 1.8系のリリースはもう5回目で重要なバグはかなり減っていることが期待できた(ので、今報告されているバグをなくすことは割合として大きいことが予想できた)

さらにさらに言えば、リリースってのは(特にRubyのように複数のメンテナがいて、中には反応の悪い人もいる場合には)異常に面倒な上に、実際の作業者(この場合は私だ)にはなんにもいいことないんだよなあ。バグが残ってても、遅れても、文句言われて。開発じゃないからつまんないし。細々とした作業ばかり多くて、気は使うし。

受益者負担? なにそれ?

ま、イシュートラッキングの品質が低くて、 ずっとほったらかしになってた問題もあったのは事実なので、 誰かも指摘しているように、そろそろ誰かが「仕事として」そゆことをやることが 求められるようになってるのかもしれない。

私自身もいろいろ画策してるんだけど、なかなか実現しない。 先立つモノが必要なんだよなあ。

(追記1)

上記の文章を読んで「バグの根絶は現実的じゃないんだから、いつまでたっても出せないじゃないか」という批判は当たらない。

私が言っているのは、すでに分かっているいくつかのバグを放置するかどうかだから。 まだ見つかってもいないバグも含めて全て直してからリリースする、なんて 非現実的な話じゃない。

(追記2)

MoonwolfさんからTrackbackがふたつ。 でもなんかおかしいよ(Trackback内容とリンク先が対応していない)。

そのいち。

Devlog:[Ruby] 1.8.0に対してAppleの連中が全然本気じゃなかったのはBefore Railsだったからでしょ

After Railsだったら、プレッシャーかけてきたと思いますよ。

えーと、いつから「After Rails」なんでしょうか。 ごく最近だった直前のOSXのリリースでもAppleからなんのコンタクトはありませんでしたが。 まあ、コンタクトがあったら1.8.5がそれに間に合うように出せたかというと かなり疑問ですけど。

そのに。

Devlog:[Ruby] Ruby1.8.xのリリースエンジニアリング引き受けます

そろそろ誰かが「仕事として」そゆことをやることが 求められるようになってるのかもしれない。 Matzさんが言ったので、立候補してみる。 報酬はPayPalでよろ。

えーと、DevlogでPaypal経由の寄付を集めていらっしゃるようですが、 それってMoonwolfさんが自分でお金を集めて自分でリリースエンジニアリングの仕事をする ということですか?

(追記3)

otsuneさんのブックマークのコメント

気持ちは分かるが、Matzさん。あなた当事者だから! 「先立つモノが」と愚痴る立場じゃない。まぁパフォーマンスかもしれないけど

よくわからない。私がRuby開発の当事者なのは確かだけど、それだと「先立つモノが」と愚痴ってはいけないのかな。好きでオープンソースを始めたのだが、自分のソフトウェアが世界中に使われるようになったのだから、責任がある。どんなにイヤなことでも我慢して粛々とやるか、それが我慢できいないなら自費持ち出しで人を雇え、と?

(ちょっと怒ってる)

_ [Ruby] OSX 10.3とRuby 1.8.0

あと、mputさんは、 「Ruby 1.8.0 のリリース」について皮肉られているけど、私はアレで良かったと思う。

そもそもAppleの連中は1.8.0を10.3に含めることに全然本気じゃなかったと思う。 「入れたい」という話は間接的に聞いただけでAppleから直接連絡はなかったし、 だから10.3のためのスケジュールについても「8月のはじめ頃」としか聞いてなかった。 で、8月4日にリリースして、蓋を開けたら入ってなかった、と。

もっと早く出せなかったのは、別に怠けていたからじゃなくて、 その間ずっとバグを直していたからなのだから、仮に正確なスケジュールを聞いていて、 「スケジュールに間に合わせるためにここでリリース」のようなことをした日には バグが一杯残ってて、 Macユーザの間で「Rubyは使えねー」という評価が定着してしまってた可能性が高い。 *1

そしたら、Macユーザの、あるいはAppleのRubyの評価は今よりも低くて、 今日のRubyCocoa標準添付とかいう話にはなってなかったんじゃないかなあ。 単なる憶測だけど。

それに、たとえ間に合ってたとしても、 Appleとしてもメジャーバージョンアップ直後のソフトウェアを取り込むのには 勇気が要ったと思うなあ。

*1  実際には「Ruby古いぞー」という評価があったわけだが、それはそれとして


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

_ [OSS] しまねOSS協議会 設立記念イベント

が、松江駅前テルサ(要するにオープンソースラボ)で開催された。

80名近くの出席があり、なかなか盛況だったそうだ。 あの場所に80人詰め込むのは大変だったのではないだろうか。

私は教会があるので一回休み。

その代わりビデオメッセージで登場。なんだか偉そうだな。 しかし、これの収録はとてつもなく恥ずかしかった。 やっぱ、ビデオとかだめだ。

_ [教会] 来客アリ

教会の集会終了後、近所の(独身の)仲間を自宅に連れて帰る。

来週、帰省して家族旅行に出かけるのだが、 宿の手配を楽天トラベルでしたい、とのこと。

が、息子と遊んでもらったり、 夕食を食べたり、本来の目的はすっかりほったらかし。 楽しい時間を過ごした。

いや、ちゃんと良さそうな宿を予約したよ、後で。


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

_ [OSS] オープンソースで地域振興を目指す「しまねOSS協議会」が発足

昨日のイベントのレポートが出ている。

しかし、身近な話題をITProで読むというのは変な気分。

_ [言語] 軽量からアジャイルへ

「軽量言語(LL)」っていうけど、「アジャイル言語」の方がよくね、という話(か?)

アジャイル宣言を言語に適用すると

  • 言語は人に優しくあるべきだ
  • 言語は可読性が高い記述を促さなくてはいけない
  • 言語仕様は見通しがよくなくてはいけない
  • 言語は変更に強くなくてはいけない

だそうだ。 うむ、確かに。

_ [言語] sumim’s smalltalking-tos - Smalltalk の nil とその振る舞い

最近のnil.to_sの挙動変化に関連して、Smalltalkではどうなってるか、という話。

いやあ、Smalltalkは概論しか知らないから為になるなあ。

そういえば、PythonのNoneは、

  • 他の何にも変換されない
  • str(None)は"None"

から、「なんでもない」を積極的に実践してるなあ。 ある意味、素晴らしい。

_ [Ruby] Railsトレーニングプログラム、三回目

(株)ネットワーク応用通信研究所によるRuby on Railsトレーニングプログラム(有料)、 その三回目。

米子の第一便で東京へ移動。朝が早いよ。

で、毎回のことだが、初日の午前中は私による「RubyとRuby on Railsの概要」。 今回は今までよりもirbを使ってコードを動かす例題が少し多かった。 いや、でも、私が動かすんでなくて、受講者に自ら動かしてもらった方が良かったか。

次回は、スライドをちょっと手直しして、手を動かす時間を加えようか。

午後はゆぞさんによる実践コース。ただ座学で聞くだけでなく、 TA付きで自分でプログラムを組むから(初心者には向かないが)、 学習効果は高いのではないかと思う。

これがこのまま3日目まで続く。 見ていると、前回、前々回よりもスムーズに教えられているようだ。 講師が慣れてきたのか、受講生が優秀なのか。前者...だといいなあ。

その後、懇親会。 懇親会を行うととたんにコミュニケーションがスムーズになる。 過去の経験からも二日目以降の方が質問が活発に出たりする。 学習効果を考えるなら、できるもんなら講習会前日の夜とかに懇親会をしたいよ。


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

_ 2.5" HDD 160GB

私のThinkpadはHDDが40Gしかない*1ので、そろそろディスク容量がきつくなってきた。

で、せっかく秋葉原にいるんだからということで、パーツショップに寄って 日立Travelstar 160GB HTS541616J9AT0を購入。ついでに2.5" HDDケースも。

*1  HDD 40G「しかない」とは時代も変わったものだ。320KB(!)が無限に広く感じられたのに

_ 打ち合わせ

講習会終了後、打ち合わせ。しばらく顔を見ていなかった人に再会。 意外な形で頑張っておられた。知らなかった。

_ RFC2822, RFC3339

RFC2822はメールのフォーマット、RFC3339はISO 8601 形式の RFC 版。 どちらも日付・時刻表現のフォーマットを含む。

Rubyが現在のTime#to_sで用いているフォーマットはdate(1)のものだが、 タイムゾーンの表現など考えるといろいろ悩ましい。 RFC2822のものも、RFC3339のものもイマイチ気に入らない。

私が欲しいのはごく普通の

2006-09-05 01:12:35 +0900

というものなんだが、このような形式の規格はないようだ。 まあ、規格なんてどうでもいいから押し切っちゃうってのも手だな。

そうしようかなあ。

_ [Ruby] Joel on Ruby

Austineによる「Language War」へのリアクション。

私の反応よりも面白い。

DHHによるFUDであるとの指摘も見逃せない。


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

_ [言語] Boxing in the LLRing

今まで見た中で一番詳しいLL Ringのレポートが英語なのはどういうわけだろう。

_ [OSS] SRA OSS、Sylpheedの開発を全面的に支援

SRA OSSが山本くんを雇用してSylpheedの開発をホストするという話。

ちょっと意外。いろんな背景を考えてしまうが、 オープンソース開発者が安定的な雇用を得て開発に専念できることや、 企業がオープンソースプロジェクトを積極的に支援することは素晴らしいことだと思う。

_ [Ruby] フューチャーシステム、Ruby 非同期処理ライブラリ「AP4R」を OSS として公開

RubyForgeにライブラリを公開したことがプレスリリースになるような日が来るとは。


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

_ HDD 引っ越し

40GBから160GBへ引っ越し。 何度か引っかかったので将来のためにメモ。

以下の手順で引っ越した。

  1. 160GB HDDをケースに入れ、USBで接続

    以後、/dev/sdaとして見える。

  2. fdiskでパーティション分け。

    今回は末尾に2GBほどswapを用意し、残りは1パーティションに。

  3. ファイルシステムを作る

    当初XFSを使おうと思ったが、なぜかうまくいかなかったので*1、従来通りext3 fsを使う。

    sudo mke2fs /dev/sda1
  4. ファイルシステムをコピー。

    新しいディスクをマウントし、現在のディスクの内容をコピーする。

    sudo rsync -aP -H -E -S -x / /mnt

    無限再帰にならないため -x オプションが必要。/devは別にコピーする。

    sudo rsync -aP -H -E -S /dev /mnt

    シングルユーザモードで実行するのが望ましい。 理想はKnoppixなど立ち上げて両方をデバイスとしてコピーすることか。

    私は今回動かしたままコピーしたけど(なんて冒険)。 不整合が起きるだろうファイルは引っ越し後に再コピーした。

  5. grubをMBRにインストール

    難しいことは何もない(はず)

    % sudo grub
    Probing devices to guess BIOS drives. This may take a long time.
    grub> root (hd1,0)
    grub> setup (hd1)
    grub> quit
  6. HDDの入れ換え

    Thinkpadなら簡単♪

  7. reboot

    みごとリブートすればめでたくHDDが160GBに。

と、書くとスムーズに行ったように思えるだろうが、 実際は慣れていないのでさんざん失敗した。

以下に失敗の履歴とその対処を書く。

  1. /devのコピーを失敗

    /devをコピーするために

    sudo rsync -aP -H -E -S /dev /mnt/dev

    というコマンドを使った。これでは/dev/devというディレクトリができてしまう。

  2. grubのインストールの失敗

    grubではディスク番号とパーティション番号が0始まり。 デバイスファイルでは1始まりなのに注意。

*1  後で思えば/devのコピーに失敗していたかも

_ 熱力学とガベージコレクション

うーむ、GCについては知識があっても熱力学について無知なので どう役に立つのか想像できない。

とりあえずresolutionは分解能だと思う。


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

_ 【ストリーミング】 Lightweight Language Ring(LLRing) -Blood Sweat & Code

とうとうビデオ公開っ。でも、時間がかかるのでとても全部は見れない。 Language Updateの範囲でのお勧めはOCamlか。

参加できなかった部分のビデオはなんとか時間を取って見ることにしよう。

_ [Ruby] Sun Officially Backs Ruby, Brings JRuby In-House

SunがJRubyのメイン開発者であるCharles NutterとThomas Eneboを正式に雇った、という話。

とうとう来たよ。そういう時代が。

彼らのブログ

立役者(らしい)Tim Brayのブログ

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

もう11月かよっ。テーマは「理系・文系」。でも、書きおわらなかった。 正確には書きすぎたので削らなくちゃ。

日経Linuxの方は「HTTP+CGI」。こちらは半分ほど書けた。

_ [言語] Parsing expression grammar

Dave Thomasから「yacc捨てたいって言ってたよね、こんなのどう?」と紹介されたもの。

大変面白そうだけど、背景となる理論が理解できてない。

Cを対象にするコンパイラ・コンパイラがあれば理論なんて分かってなくても使えるけど、 どうもHaskell, Java, Tcl対象のものしかないみたい。 「自分で作る」ってのは避けたいしなあ。


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

_ [教会] ステーク大会

教会に集合し、何人かの仲間と一緒に新見まで移動。 今回は運転してもらえるのでだいぶ楽をした。

新見ではいろいろな話を聞けて大変ためになった。 夜更かしが多い生活をしているので、こういうずっと話を聞くタイプの集会では 居眠りをしてしまうことがあるのだけど(自制心のなさよ)、 今回は一生懸命メモをとったので、(ほんの一瞬を除き)集中力を維持できた。 メモ重要。後で思い返せて役に立つしね。

印象に残ったこと

  • 円満な家庭の運営には、日々の良い習慣の継続と模範が重要
  • 日本人が英語の数字が苦手だが、逆も真なのね(やっぱり)
  • キリストに似たものになる
  • 家族ってありがたいなあ

_ [Ruby] M17N

で、うちに帰った風呂の中でRubyのことをぼーっと考えていたのだが、 もしかするとM17N化しても文字列のデフォルトはbinaryのままでいいんじゃないだろうか。 大抵の文字列処理は正規表現を使えば可能なのは分かってるんだし。

今、(1.9に)存在しなくて、M17Nに絶対欲しい機能はなんだろう。

  • 文字単位の文字列処理

    欲しいこともあるだろう。いつも必要かどうかは分からないけど。

  • 文字、文字クラスの名称による指定

    「\p{KATAKANA LETTER MA}」とか。これは欲しいと思う気持ちは分かる。 なにが書いてあるかわからない「\343\203\236」という表現よりはずっと良いから。

他にあるのかな。

あと、アプリケーションデフォルトが分からないライブラリをどうやって構築すべきかは きちんとした方針を用意しないと使えないM17Nになってしまうだろうな。


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

_ [教会] 後期ステーク大会

今回は2年に一度の衛星放送によるステーク大会。 朝から米子に移動。

山陰側だけでも集まると結構な人数になる。 会場はほぼいっぱい。

直前にプロジェクターのランプが切れたとかで(不運な)、 急遽家庭用プロジェクターで投影することに。 そこまで大画面にすることを想定していないのか、かなり暗い。 私たちの席はかなり後ろの方だったので、人の顔がよく見えない。 なんか近視の人が見てる世界のようだった。 ということは、普段の世界に近いということか、私の場合。

日本向けということで、 日本の文化や歴史に配慮したお話が多かった。 考えてみればアジアの中でも少々特殊だよな。

ただ、予定よりもはるかに短い時間で終ってしまったのにはびっくりした。 2時間あると思ってたよ。はっきりした原因は分からないけど、 なんかトラブルでもあったのかな。

まあ、短くはあったけど充実した内容であったし、 かえって時間に余裕ができたので、それはそれで良かったけど。

今回もメモをとった。後で見返してみないとな。

_ 一族集合

というわけで、近くにいない妹と弟、それと頭痛で体調不良という妹婿を除いて 一族が実家に集合。えーと、ひい、ふう、...15人か。

一緒にお昼ご飯。子供は運動会並みに駆け回る。 実家は古い家だし、階段が急(75°くらいありそう)なので、 見てる方は心配なのだが、あいつら恐怖心というものがないのか。

もっとも考えてみれば、自分が子供のときはもっと危ないことしてたよなあ。 良くケガしなかったものだ。

いや、してたか。たまに打ち身とか捻挫とか。 親も気が気でなかったことだろう。

今になって分かる親の気持ち。


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

_ [Ruby] www.ruby-lang.orgリニューアル

ハードウェアが不調であった beryllium.ruby-lang.org のリプレースも完了し、 とうとうwww.ruby-lang.orgがリニューアルされた。

なんかすごいかっこいいぞ。 ずっと昔の手でHTMLを組んでた頃のものと比べると雲泥の差だ。 tDiaryも良かったけど、エントリのURLが日付(のような数字列)になっちゃうのが CMS的でなかった。まあ、tDiaryとしたら目的外の流用なわけで、 「そんなこと言われると困っちゃう」といったところだったろう。

いずれにしてもそのような点についても解消された。

今回はRuby on Railsで実装されたCMS、 Radiantを使っている。

英語版の方が情報が多いので、 時間に余裕があって、英語が苦手でない人は そちらも参照していただきたい。

リニューアルに関った多くの人々に感謝したい。 特に前田くんとリーダーを引き受けてくれたJohn W. Longに。

あ、そうそう。韓国語版とかも計画中。

_ KDDI研、XMLの高圧縮技術を開発−EZニュースフラッシュで活用

携帯電話の限られた資源の中で効率的に復元できるということらしい。 あと、復元と同時にバリデーションもできるとか。

でも、今なら携帯でもzip解凍ルーチン積んでるだろうし、 そんなにうれしいのかなあ。

_ [言語] Pnuts Addict: I don't need invokedynamic

戸松さんのブログ。動的言語支援用にJVMに最近追加される決まったinvokedynamicは要らない、という話。

Pnutsがやっているようにちゃんとメソッドキャッシュを使えば(遅い)リフレクションを使って メソッド呼び出しをすることはほとんどないから性能には関係ない。 しかも、(Pnutsには)invokedynamicを使ったのでは呼び出せないケースもある、 ということのようだ。

まあ、確かにIronPythonも同様の技術でCLR上で速度を出したんだものなあ。 JRubyの連中がいろいろな成果をあげて、Sun本体に動的言語実装のテクニックを蓄積してほしいものだ。

というか、戸松さん自身がSunなのに、どうして伝わってないのかな。 「サン・マイクロシステムズ」と「Sun Microsystems」では違うということなのだろうか。

_ [言語] カール、リッチクライアント開発言語の無償版「Curl/Personal」を公開

Curlの開発環境がとうとう無償になった、という話。

これを「イヤな流れ」ととるか、「起死回生の一手」ととるか。

Curl頑張れーっ。


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

_ [原稿] 日経Linux 2006年11月号

先日も書いた通り、今回のテーマは「HTTP+CGI」。

過去にも何度も書いたことのあるテーマなので、 難しさはそれほどでもない。ただ、まったく同じ文章になってしまいがちなのが 難点だ。さすがにおんなじ文章じゃ、読者に申し訳ない。

あと、生のHTTPやCGIは技術として古いので、 文章が古臭い印象があるのも否めない。 同じく古い技術でも、全然古さを感じさせないものもあるのにな。 たとえば、高階関数とか型とか。

やっぱ、数学にルーツがあるものは強いか。

_ Quilt

Quiltはスタック型のパッチマネージャである。

たとえば中央リポジトリにあるソースコードをローカルにコピーして、 手元で変更を行うとする。それらの変更を塊ごとにパッチとして管理し、 積み重ねておくことができる。

「この変更はやっぱりやめた」という時はパッチをポップすればよい。 また気が変わったらあらためてプッシュする。

中央リポジトリの状態に合わせるためには、以下の手順を行えばよい。

  • スタックに積んであるすべてのパッチをポップする
  • 「cvs update」などでローカルコピーをアップデート
  • あらためてパッチをプッシュする。矛盾があれば解消
  • 必要に応じてパッチを中央リポジトリにチェックイン

これで、ネットワークが切り離されても、 作業単位ごとに変更を管理できる。以前考えていたネットワーク独立型開発にもぴったり(元々その目的で開発された)。

ところがQuiltにも欠点がある。 それはこれから編集するファイルをあらかじめ宣言する(quilt add)必要がある点だ。 Quiltは非常に原始的な(全部shで書いてある)システムで、基本的な原理は オリジナルを別の場所にとっておいて、必要に応じてdiffをとるだけだ。 また、パッチを作る時にもあらかじめ「これからパッチを作る」と 宣言(quilt new)しなければならない。

いずれにしても「あらかじめ」というのがキーワードである。 私のような頭よりも手が先に動くことがあるタイプにはあまり向かない。 そもそもバージョン管理システムそのものが「あ、まずかった」と思った時に巻き戻せる ことを目的としているので、このような「あらかじめ」を要求するのは望ましくない。

そこでちょっと調べてみるとEmacsのQuiltサポート(quilt.el)というものがある。 これはQuiltが管理するディレクトリでは、それを検出してファイルを自動的にread onlyにしてくれるものだ。quilt addしないと編集できないから、ついうっかり失敗ということがない。

これなら使えるかな...、と思ったが

  • パッチ作成宣言はやっぱり「あらかじめ」行う必要がある
  • メールで届いたパッチの適用がしょうしょう面倒(これはquilt.elで検出できない)

うーん、もうちょっと考えてみよう。 GITの上にQuilt相当を実現するStGITというのもあるらしいから、それも調べてみないとな。


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

_ [Ruby] Ruby公式サイトがリニューアル,tDiaryからRailsベースCMSに:ITpro

先日のサイトリニューアルの件が日経ITProに掲載された。

正直、「こんなことまでとりあげられるの!?」という感じだが、 それだけRubyが旬ということなのだろう。

できることならば、ブームは去っても「そういえばそんなのあったよね」などと 言われてしまうようなことがないようにしたいものだ。

_ mwheel, mouse-avoidance

quilt.elの件でEmacs Lispを調べている時に見つけたEmacs Lispライブラリ。

mwheelはマウスホイールのサポートを行うライブラリ。

大抵のマウスはスクロールホイールの上下をそれぞれボタン4とボタン5に割り当ててくれるから .emacsの中に以下のように書いておくと、ホイールでスクロールができる。

(define-key global-map [mouse-4] 'scroll-down)
(define-key global-map [mouse-5] 'scroll-up)

しかし、これでは現在のマウスカーソルの位置は意識してくれないから、 ウィンドウを分割している時に現在のテキストカーソルがあるウィンドウで スクロールが発生することになる。 (特にWindowsでは)ホイールは現在マウスカーソルが入っているウィンドウをスクロールしてくれる ことが多いので、これはあんまり嬉しくない。

そんな時にはmwheel.el。.emacsに以下のように書くだけ(Debianではパスの設定やrequireは要らない)。

(mwheel-install)
(setq mouse-wheel-follow-mouse t)

これで他のGUIアプリケーション同様、現在マウスカーソルがあるウィンドウをスクロールしてくれる。

あと、マウスカーソルとテキストカーソルが近すぎるとなんか邪魔な気がするのは 私だけではないはずだ。そんな時にはmouse-avoidance.el。

(if (display-mouse-p) (mouse-avoidance-mode 'exile))

これを.emacsに付けておくだけで、マウスカーソルとテキストカーソルが近くなりすぎると マウスカーソルの方がよけてくれる。よけ方には何種類かあって

  • banish: 右上隅に移動
  • exile: 右上隅に移動。しばらくすると元に位置に戻る
  • jump: ランダムに移動
  • animate: ランダムに移動するが移動する様子がアニメーションされる
  • cat-and-mouse: animateと同じ
  • proteus: animateと同じ。マウスの形状もランダムに変化する
  • none: 移動しない

個人的にはexileが好みだが、animateも面白い。

_ [Ruby] Joel on Software: Ruby Performance Revisited

Joel Spolsky、ふたたびRuby(のパフォーマンス)について語る。 結局は「だって遅いじゃん、コンパイルできないし、動的だし」という話。

このことの受け止め方はそれぞれだと思う。

たとえば、SeasideのAvi Bryantは「HREF Considered Harmful: Ruby and Strongtalk」において、

と反応している。ま、それは言える。LispもSmalltalkも長年の投資で それなりに高速化されている。場合によっては、通常コンパイル型言語と呼ばれることの多い 静的型言語よりも高速なケースもあるくらいだ。

DHHも反応している。「Outsourcing the performance-intensive functions (Loud Thinking)」で、

  • そんなのボトルネックだけ外に出せばいいじゃん。Basecampではサムネイル作成みたいな仕事はCで書いたプロセスにやらせてるよ。ずるい? うん、でも、この場合「ずるいは正しい」だと思う。

といった感じか。ごもっとも。私の以前の反応とも対応している。

まあ、Webサービス(ASP)的なBasecampと 結局ユーザサイドにインストールされるJoelのところのFogBugzでは 前提が違うのかもしれない。

また、ウサギ(C#)とカメ(Ruby)にたとえたブログエントリもあって面白かった。

さて、私自身は大規模なシステムやたくさんのユーザがいるシステムをRubyで組んだことはないので (我が社には何人もいるけど)、エンタープライズなRubyについて語っても説得力はないのだが、 この件で感じたのは、JoelがRubyについて少なくとも検討するだけは真面目に考えた、という事実だ。

つまり、(ソフトウェア開発に関して私と趣味・趣向・思想が全く異なる)Joelでさえ、 検討に値するほどRubyがメジャーになったということだ。 だって、ここに名前が出る言語っていったら他にはC#, Java, PHP, Pythonくらいなもんだよ。

思えば遠くに来たもんだ。ここまで来れたことを考えたら、 Joelが実際にRubyを使おうが使うまいがそんなことは小さいことに思える。

_ [Ruby] WEB2.0がRubyを選んだ理由:ITpro

ベンチャー企業「ウェブツーポイントオー」がRubyを選んだ理由。 簡単に言うと「とんがった個人が利用してばりばり生産性をあげちゃったから」。

ま、Rubyが採用される、あるいは強みを発揮できるケースってのは 結局そんなものかもしれない。

しかし、Rubyが広まるにつれ今度は「ほんとはJavaで開発したいのに、業務命令でしぶしぶRuby案件を開発する」なんて人も数多く出てくるんだろうなあ。なんか現在なら代わって欲しい人が続出しそうなシチュエーションだけど。


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

_ [言語] James Gosling: The Black Hole Theory of Design

結局、Javaにクロージャを入れることになったGoslingのひとこと。

I have somewhat mixed feelings about closures: they are pretty complicated. But they're an instance of what I think of as the Black Hole Theory of Design. I have a really strong memory from years ago of Guy Steele saying roughly "Lisp is a Black Hole: if you try to design something that's not Lisp, but like Lisp, you'll find that the gravitational forces on the design will suck it into the Black Hole, and it will become Lisp". [Guy doesn't actually remember making this remark, but he does say it sounds like the kind of flip comment he would make; I could also be totally mis-remembering who said it, but I haven't found any quote like it through Google].

Guy Steel曰く「Lispはブラックホールだ。「Lispに似た(でもLispではない)なにか」を作ろうとすると、重力につかまってブラックホールに落ちてしまう。そしてそれはLispになる。

うーん、確かに。Rubyだって見る人が見ればLispだろうしな(だがマクロは拒否する)。

_ 「曇りガラスに描いた絵から水滴がぽたり」--経産省の20歳以下限定プログラミング・コンテスト,最優秀賞決定

ITProの記事。MSN毎日インタラクティブでも紹介されている。 U-20プログラミングコンテンスト 優秀作品決まる

ITProの記事のタイトルにもなっている団体の部最優秀作品「ぽたり de アート」は、 昨年の最優秀作品「AKI黒板」に似過ぎているという意見もあったが、 「こだわりが面白い」ということで採用。

これで「U-20は黒板系が狙い目」という風説が流れなければよいが。

個人の部最優秀賞は「プログラミング言語Spinel」。 昨年の「Frontier」の続編だが、スクラッチから書き直している(ソースを見たら本当に書き直していた)。わずかの期間に次の言語を作り出したパワーを評価した。 また、Frontierと比較してSpinelはより「普通のプログラミング言語」に近づいている。 粗削りなところが減って(残ってるけど)、「言語デザイナーとして経験を積んだな」ということを 感じさせる。でも、実用するにはGCとかが欲しいなあ。

あと、「Atomoo」の作者はうちの長女と同い年である。 こうもちがうものか。いや、長女にはプログラミングとか教えてないけど。 最終審査会での彼のプレゼンは(年齢を考慮すると)驚異的であった。

_ がんばれ“プログラマの味方”ボーランド

ふたたび開発環境を提供しはじめたボーランドを応援する記事。

それだけといえばそれだけなんだけど、

Intersimone氏は,今後ボーランドの開発ツール部門がよりプログラマ指向になること,プログラミングする人の数を増やすことが世の中にとっても同社にとっても重要であることを繰り返し強調した。氏の考えには,「初心者に使いやすい開発環境を安価に提供する」という,かつてのTurboシリーズの理念がそのまま受け継がれている。ここ数年間,プログラマの人口を増やせないかと考えてきた記者は,大変心強く感じたものである。

ただ残念なことに,インタビューの席上ではマイクロソフトのツール群に対して明確なアドバンテージを打ち出せるような方策は聞けなかった。ターゲットとなるプラットフォームをIntel Macや家庭用ゲーム機に広げてみたらどうか,最近流行のスクリプト言語,動的言語を扱ったらどうか,などいろいろ話を振ってみたものの,「Turbo製品群は第一弾に過ぎない,今後期待してほしい」というだけで,明確な回答は引き出せなかった。記者はTurbo Rubyでも出せば結構ヒットするのでは,とも思うのだが。

た、「Turbo Ruby」?

_ fontconfig, fontconfig-config

Debianのアップデートを行い2.4.0-5にしたとたんにフォントが汚くなった。 小さめのフォント(16ポイント以下)に対してビットマップを使うようになったらしい。 しかし、個人的な好みとしては8ポイントくらいまではアンチエイリアスが使いたいんだけど。

たぶん、/etc/fonts/conf.d/のどれかのファイルをいじれば良いのだと思うんだけど、 この大量のXMLファイルのどこに必要な情報があるのかわからない。

だからXMLは嫌いだ(八つ当たり)。


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

_ [言語] The Universe of Discourse : Design patterns of 1972

ある言語で頻繁に使われるデザインパターンは、他の言語ではパターンでさえない。 よって「デザインパターンは言語の弱さを示すサインである」という話。

確かにブロックを持つRubyではVisitorパターンや、Iteratorパターンは もはやパターンとは呼べないレベルだし、Observer、SingletonやDelegatorは ライブラリで対応できちゃう。

ということは、デザインパターンが頻出する言語は、「弱い言語」である、 ということであり。言語設計者はデザインパターンが頻出しない言語を目指すべき、ということ?

そうなのかも。とはいえ、「マクロが解答」というのも癪な話である。

_ [言語] PythonSpeed

Pythonを高速化する細々としたテクニック。 多くはRubyにも適用可能だ。

_ [言語] HAML: A new view template language for Rails on Ruby on Rails softlogger

Hampton Catlinによって開発された新しいテンプレート言語。 「HTML Abstraction Markup Language」なのだそうだ。

!!!
%html
  %head
    %title Client Admin Site
    %meta{"http-equiv"=>"Content-Type",
       :content=>"text/html; charset=utf-8"}/
    = stylesheet_link_tag 'tabbed'
    = javascript_include_tag 'tabbed'
  %body
    #application
      #header
        .container
          .statusbar
            .logo
              %strong Admin Interface
            .menu= link_to 'logout',
               :controller => 'account', :action => 'logout'
          %br{:style=>"clear:both;"}/
          .tabs
            %ul.navigation
              %li= link_to 'Member Approval', member_admin_url
              %li= link_to 'User Management', user_admin_url,
                 :class => 'selected'
              %li= link_to 'Pages', page_admin_url
              %li= link_to 'Reports', reports_url
              %li= link_to 'Help', '/'
      #page
        #content
          //These will only render if there is
             a non-false value returned from the helper
          #errors= print_flash(:error)
          #notice= print_flash(:notice)
          = @content_for_layout
        #sidebar= @content_for_sidebar || false
        %hr/
      #footer
        %p= "Copyright Hampton Catlin 2006"

えーと、慣れたら使いやすい....のかもしれない...多分。

_ 『ホーム・アローン3』

テレビで放映していたものを子供たちに見せた。

映画は自分たちで楽しむばかりであまり子供には見せてなかったんだけど(ポケモンかアニメにしか興味を示さないし)、 なんか、みんながみんな気が狂ったように笑うんだけど。

他の人(悪党)が痛い目にあうのがそんなに面白いのかしら。

確かに可笑しいけど。

というわけで、この種のものがウケると分かったので、 他にも見せてみようかしら?


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

_ フリーマーケット

中学校の運動会が台風で中止になったので、 妻がかねてから行きたいと言っていたフリーマーケットに参加。

環境関連のイベント(名前忘れちゃった)の一部だったのだが、 私としてはフリーマーケットよりも環境関連発表の方が面白かった。 知り合いや取引先が出展してたりして、ちょっと気恥ずかしかったけど。

_ [Ruby] Geeksなら注目のサイトruby-lang.orgに採用されたCMSの実力は?

MYCOMジャーナルでRadiantが取り上げられている。 キャッチアップが速い。

最近、MYCOMにイイ感じの記事が増えているような気がする。 いや、Rubyが取り上げられたから言うわけじゃないけど。


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

_ バーバルとノンバーバル

教会ではいろいろな方の貴重な話が聞けたが、 そこに交じって私も話す必要があった。

その時にはかならずしも十分に伝えられたとは思えないのだが、 伝えたかったことを(宗教色を薄めて)再度まとめてみる。

前提

バーバルコミュニケーションとは言葉によるコミュニケーションである。 話すとか書くとか、そんなの。対するノンバーバルコミュニケーションは、 言葉によらないコミュニケーションね。

伝わらないノンバーバルコミュニケーション

「子供は親の背中を見て育つ」とか「男は背中で語る」とかいうのは ノンバーバルコミュニケーションである。なんかカッコいいけど、 実際にはノンバーバルコミュニケーションはえらく効率が悪い。 業界的な表現をすると大域幅帯域幅が狭い。

ノンバーバルコミュニケーションでは、伝えたいことが そもそも伝わらないことも多いし、たとえなんらかの情報が伝わったとしても 本人が意図している通りに伝わることはまれで、むしろ大幅にノイズが入っていると 考える方が自然だ。コミュニケーションに、そういう品質の低いチャネルを使っていると、 誤解、行き違い、不満などは頻発する。

幸せな生活のためには伝えたいことはちゃんと言葉にして伝えよう。 ここでの原則は「言わないことは伝わらない」である。

少ないが重いノンバーバルコミュニケーション

では、ノンバーバルコミュニケーションは役に立たないか、というと全然そんなことはない。

帯域幅が狭いということは伝送できる情報が少ないということだが、 それそのものはチャネルの性質で問題ではない。 問題はノンバーバルコミュニケーションでバーバルコミュニケーションと同等の情報量を伝達しようというところにあるのだ。それは無理な相談である。

私の知人の調べによると、両親との折り合いが悪い子供の大半が持つ不満は 親の言ってること(バーバル)と実際の態度(ノンバーバル)が食い違っていることなのだそうだ。 別に知人はまじめに統計をとったわけではないが、話半分としても共感できる。

人間は嘘をつく。言葉で嘘をつくのは非常に簡単だ。 悪意のある嘘以外にも「建前と本音」のような嘘もある。

一方、言葉を使わない嘘は、不可能ではないものの、言葉の嘘よりもずっと難しい。 そのせいか、言動不一致があると、態度によって示されるものの方が受け入れるものらしい。 ああ、本当はそう思ってるんだな、と。

ノンバーバルコミュニケーションは少ない情報しか伝えることができないが、 伝わる少ない情報には大変大きな意味がある。 つまり、伝わった情報はバーバルコミュニケーションによる情報よりも「重い」と言える。

ここでの原則は「言行一致重要」である。

まとめ

「言葉で伝え、態度で追認する」。子育てにあっても、人に接するにあたっても そういう生き方で望みたいものだ(まだ、できてないけど)。


2006年09月18日 敬老の日 [長年日記]

_ The Fly

娘の学校の先生が授業中「The Fly」に言及したらしい。 どんな文脈だったのか興味があるのだが、 それはともかく「見たい」というので借りてくる。

ついでに「ホームアローン」も借りようと思ったが、 それは貸し出し中。同じことを考える人は多かったらしい。

で、みんなで(恐いのが嫌いな次女は遠慮した)鑑賞。 ....、さすがクローネンバーグ。趣味の悪さは一級品である。


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

_ fontconfig

先日来の問題は要するに今までよりも積極的に埋め込みビットマップフォントを使うようになった ということらしい。で、ビットマップフォントとアウトラインフォントでウェイトが ずいぶん違うのが気持ち悪い(ボールド好き)。

などとぐちぐち言っていたが、どのXMLファイルを設定したらよいのか途方に暮れていたら、 武藤さんのところに ヒント(というか解答そのもの)が。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="embeddedbitmap">
   <bool>false</bool>
  </edit>
 </match>
</fontconfig>

こいつを.fonts.confに入れて元通り(ちょっと違うような気もするけど)。

_ StGIT

先日断念したQuiltをGITをバックエンドとして実装したもの。 これはいい。Quiltではできなかった以下のことができる

  • うっかりパッチセットを作り忘れてても後から対応できる
  • upstreamとのマージを明示的に行うコマンドがある
  • マージした結果、空になったパッチセットを自動で削除できる
  • 矛盾解消を行うコマンドを設定可能

これを使えば、ネットにつながらない時でも自由にハックして、 その結果を(パッチセットごとに名前を付けて)保存できる。 また、ネットにつながった時に、upstreamとマージして、 パッチセットごとにコミットできる。

StGITの導入方法は以下の通り。

  • .gitを導入する。私は以前にtailorで インポートしていた.gitを使ったけど、gitを直接使ってimportしても良いだろう
  • stg initコマンドを実行

ローカルで編集する場合には(個別の修正ごとに)

  • stg newでパッチセットを作る
  • 編集が終ったらstg refreshでチェックイン

upstreamからマージするためには

  • stg pop -aで全パッチセットを一回取り除く
  • stg newでマージ用パッチセットを作る
  • cvs updateで取り込んでくる
  • stg refresh
  • stg commit

upstreamにコミットするためには

  • stg pushでパッチを当てる
  • コンフリクトがあれば(Rubyの場合、ChangeLogが絶対コンフリクトする)、編集
  • cvs ci -m ...
  • stg refresh
  • stg commit

で、これだとちょっと手順が繁雑なので以下の三つのシェルスクリプトを作った。

stgnew
パッチセットの名前を考えるのが面倒な時に時刻からパッチセット名を作りstg newするスクリプト
stgpull
upstreamからマージする一連の手続きを一度に行うスクリプト
stgpush
手元の変更をupstreamにコミットするスクリプト。ChangeLogのdiffからcvs logを抽出する機能付き。

各スクリプトの実装は宿題とする...なんてね。反響が大きければ公開しよう。 それぞれ小さなスクリプト(stgnew4行、stgpull13行、stgpush28行)だけどね。

_ [Ruby] Symbol as String (2)

で、StGITのおかげでRubyをハックしたい気持ちが増大した。

で、今回はStringのサブクラスとなったSymbolについて。 いろいろな選択肢があり得たのだが、さんざん考えた結果、

  • SymbolはStringのサブクラス
  • Hash的にはSymbolとStringは同一視される(互換性については申し訳ない)
  • Symbol#hashおよびSymbol#eql?はSymbolに対して高速に実行されるように最適化
  • Symbolに対する操作の結果はString。これはSmalltalkでもそうであった。

とした。 全体にSqueakの動作に近づいたことになるのかなあ。


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

_ [Ruby] Rubyist Magazine 16号

出た。今回は「言語探訪」は代打にお願いした。 まあ、私じゃ「なでしこ」はじゅうぶん紹介できかったと思うから、 かえって良かったんじゃないかな。

もう2年にもなるそうだ。 それもこれも笹田くんのおかげである。

_ [Ruby] Ducktator

外部からYAMLファイルで指定したsignature validationを行うライブラリ。

ruby-talkでは「Signature ValidationはDuck Typingではない」という論争が 起きたりもしたが、まあ、沈静化したらしい。火消しに走った甲斐があった、というものだ。

_ [OSS] opensource 2.0

Tim O'Reillyによる講演。要するに従来のオープンソースという枠組みでは 自由を担保できないタイプのアプリケーション(具体的にはWebアプリケーション)がある、 という話。GPLv3の主要なテーマの一つである。しかし、Opensource 2.0とは 陳腐なキーワードだなあ。

先日、メールによる取材で「オープンソース2.0」というキーワードを かかげたものがあり、「それって何よ」ってツッコんだら、 そのキーワードは引っ込んでしまったという経験があった。

その矢先にこれだものなあ。

追記

yomoyomoさんから「前から使ってたの知らないの」との指摘。

そういえば、以前に読んだような気もしないでもない。 不明を恥じる。 まあ、あんまり記憶力に自信がある方じゃないんで。

ただし、

  • Timが使っても「陳腐なキーワード」という印象は変わらない。 まあ、Web2.0からしてそうなんだけど。
  • 今回のキーワードはTimのとは関係なく独自に作ったものだった

ということは明記しておきたい。

_ [言語] Python 2.5リリース - パフォーマンス向上、コンパイラ仕様の変更も

おめでとう。いやあ、開発方面にも人材豊富な感じがしてうらやましい限りである。

Python 2.5リリースを記念して、Ruby 1.9にもString#partitionとrpartitionを追加した。 「リスペクト」である。


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

_ [OSS] OSDLのCEO:「フリーソフトウェア財団はGPLv2とGPLv3の関係を早急に説明すべき」

Open Source Development Labs(OSDL)のリーダーは米国時間9月20日、現行のGNU General Public License(GPL)の適用対象ソフトウェアが、現在策定中である次版のライセンスの適用対象ソフトウェアとどう関係することになるのかについて、 Free Software Foundation(FSF)は早急に説明する必要があると述べた。

しかしCohen氏とは異なる判断をしているMoglen氏は、この問題を明確にすることは当面ないだろうと示唆した。

Moglen氏はCNET News.comに対して、「GPLv3の最終的な条項が明らかにならないうちに、GPLv2の適用対象コードとGPLv3の適用対象コードとの関係についてコメントすることは、時期尚早であるというのが私の意見だ」と述べている。

OSDLの気持ちも分かるが、ここではFSF側の方が筋が通ってると思う。 このほかにもGPLv3に対して批判的な意見はたくさん耳にするが、 個人的にはv2とv3に互換性がなさそうな点が非常に気になる。

「any later version」オプションは大きな非互換性を仮定していないと思うのだけど。

_ [OSS] デジタルスケープ、オープンソースSNSをベースにナレッジ機能を付加した企業向けSNSツール

OpenPNEにナレッジ・マネジメント機能を追加した商用SNS。

ライセンスに従っているのなら(サボってOpenPNEのライセンスを確認してないんだけど)、 別になんの問題もないのだが、興味深いのはその値付け。

各メンバーがそれぞれナレッジ収集・整理できる「ナレッジポケット」は初期費用110万円、年間保守費用24万円。管理者のみがナレッジを吸い上げて収集・管理する「ナッレジキャッチャー」は初期費用60万円、年間保守費用12万円。専用サーバのハウジングで月額10万円。

そうかあ。それだけ値段が付くものなのか。まあ、「ナレッジ機能」とやらのデキによるのだろうが。

_ [Ruby] String is Enumerable no longer

以前からStringが行ごとに繰り返すeachをベースにしたEnumerableであるのは 使い出がない、と感じていたのだが、この度、思い切ってStringにEnumerableをインクルードするのを 止めてみた(1.9)。

とりあえず、手元にあるコードの範囲内ではStringにあるEnumerableのメソッドは使っていなかったみたい。なんのトラブルもなかった。もし、問題が起きたら、文字列を行ごとの配列に分解するlinesメソッドを新設したので、それをはさんでもらいたい。

string.max  →  string.lines.max

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

_ 「著作権保護期間の延長を」−権利者団体が要望書 ネット時代も意識

えーと、権利者が飯のタネに対してより強い保護を求める気持ちは 分からないでもない。

が、しかし、今、進めようとしているやり方には賛成できない

  • 無条件に20年延ばしてしまえば、20年間パブリックドメイン文書が増加しない。 これはたとえば青空文庫にとって大打撃で、人類にとって損失だ。
  • 作者死後70年間権利関係が明確な作品よりは、そうでない作品の方が圧倒的に多そう。 一部の作品の権利を守るため、多くの作品が「死蔵」されるのは人類にとって損失だ

ということで、延ばしたい人は一定の条件(期限付き更新による登録とか)で、 好きなだけ延ばすことができて(上限を設けるかどうかはよくわからない。要らないような気がする)、 デフォルトではもっと短い期間でパブリックドメインになる「二階建方式」とか採用できると、

  • 自分の作品を保護したい人はいくらでも保護できてハッピー
  • 大衆は積極的に保護されない大多数の作品が素早くパブリックドメインになってハッピー

なんてなことになると思うんだけど。権利者団体は「ネットに理解を示したフリ」をするより、 こっちを推してほしいなあ。

_ [言語] The State of the Onion 10,

えーと、正直ついていけてません。すげー。

_ [Ruby] 「Ruby成功の秘訣」

先日、情報処理学会誌に書いた記事に対するコメント。

平易で淡々とした文章の中にも、成功者の自信が自然と感じられ、読んでいて心地よいです。

とほめていただけているようだ。 が、これが本当に「成功の秘訣」を述べているとか、 その「秘訣」に従えば他のソフトウェアも成功できるのかとか については正直、自身のないところだ。


2006年09月23日 秋分の日 [長年日記]

_ [教会] ピクニック

「若い女性」が音頭をとって、ピクニック。 おなじみ森林公園へ。参加人数は前回のバーベキューよりは少なかったが(やはり食べ物関係は出席が良い)、けっこう楽しんだ。

_ [Ruby] 米Yahoo!、RubyとFlashの開発者向けリソースセンターを開設

Yahoo! Ruby Developer Community

なんと。まだ中身はほとんどないみたいだけど、 ちゃんと取り扱ってもらえてるのがありがたい。

やっとPHPやPythonに追いついてきたってことかなあ。

_ [Ruby] Inspecting a live Ruby process

gdbを使ってRubyの中身を見る、というような話。

実際にRubyのデバッグが主な「仕事」である私は日々こんなことをしてるわけだ。 生きたプロセスの中身を見るという点では、よしおかさんのこのエントリも参考になる。


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

_

気がつくと長女が熱を出している。 昨日、頭が痛いって言ってたっけ。

仕方がないので留守番してもらうことに。 「眠いから寝る」のだそうだ。

実際、教会から帰ってもまだ寝ていた。

_ [教会] うっかり

今日は1歳半から3歳までの子供のクラスの代理教師をする予定だったのだが、 ちょっとしたうっかりがあってやらなくても済んだ。

自分の娘を教えるのはちょっと抵抗があったし、 なにぶんまだ言葉もなかなか通じない赤ちゃんにどうしたもんだかと 少々悩んでいたので、ありがたいのだが、 自分のミスで楽になるというのはいかがなものよ。

_ [教会] 選択の自由

神権会ではレッスンを行う。こっちは逃げられない。

テーマは「選択の自由」。 私たちは日々選択を積み重ね、 その結果を引き受けるわけだが、 自ら進んで選択を行うことができる権利が 人生においていかに大切か、ということについて。

_ 新生児

教会の近くの病院に、昨日、生まれた知人のお子さんを見に行く。 ちっちゃい。

新生児と比べると末娘が巨大に見える。


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

_ カーネル読書会

kosakiさんが、YLUGのカーネル読書会でglibc mallocについて語られたらしい。 スライド[PPT]はさっそく眺めてみた。dlmallocってこんないろいろ工夫してたのね。 Rubyのメモリ管理も以前にいろいろ試してみたのだが、 結局小さなchunkはmallocですなおに管理するのが一番高速という結果が出たのは これらの工夫が原因なんだろうか。 でも、sweepで一気に解放するから、プレゼンの中で「苦手なパターン」と されているケースのような気がするんだけど。

Googleビデオも公開されているので、ぜひチェックしたい。 ビデオは時間がかかるのが難点なんだが。

_ [Ruby] ObjectView

私は今まで知らなかったんだけど『ObjectView』という雑誌があって、それのPDF版を(少し遅れて?)公開しているのだそうだ。

で、その第9号[PDF 2.2M]が Ruby特集なのだそうだ。

我らがレベッカたんも登場している(Rubyのことじゃないけど)。

_ ■コンピュータは人間を進化させるか■アラン・ケイ氏インタビュー

やっぱ、Alanって視点が人と違うよな。

我々が(私が)、今、目の前にあるツールをどう良くして、 自分がどう楽をするかってことを考えてる時に、 数百年後のことを考えている。

"Reinventing Computing"という彼の講演からの抜粋[英語]も興味深い。

_ svkとCVSの連携

ああ、そうか、VCPがCVSへのuploadをサポートしていない時点であきらめてしまったけど、 uploadだけcvs ciを使うという手があったよな。

考えてみれば、StGITを使った今の運用だって、そうしてるんだものな。

現在、私が利用しているStGITと上記のsvk+CVS連携の比較は以下の通り。

  • pull(sync)は結局CVSを使うのでおんなじ。 ただ、StGITは(私の運用方法では)手元のパッチを全部revertしてから 同期するのでこの時点では矛盾が発生しないのは嬉しいかも。
  • ローカルリポジトリの操作は、好みによる。 svkの方がいろいろできるが、StGITの方が(私には)わかりやすい。 特にStGITはブランチとか考えることなく、一連の変更をまとめて操作できるのは 個人的にありがたい。
  • pushもCVSを使うので同じ。私はスクリプトを書いたので いろいろ自動化されて便利(ChangeLogからのコミットログ切り出しとか)だが、 それはsvkを使っても似たようなことはできるだろう。

ま、結局、svkの操作とStGITの(というかQuiltの)操作のどちらが好みかということだろう。 先にも書いたが、私はStGIT派である。


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

_ [Ruby] Array unshift patch

最近、Eric Mahurinが一年以上前に送ってくれていたパッチをベースに Array#shiftと#unshiftのパフォーマンスを改善したのだが、 彼がさらに改善できるというパッチを送ってくれた。

だが、このパッチかなり規模が大きいうえに、 ベースになった時点と現在とでarray.cが相当変化しているので 取り込むのが大変。

一通りのマージはすぐに済んだのだけど、 実行するとSEGVするのだよ。どこにバグがあるのやら。 実際にコミットされるまでにはずいぶんかかりそう。

しばらくはstgのパッチスタックに積んだままかな。

_ [OSS] 「GPLv3は危険」〜複数のLinuxカーネル開発者が共同声明

Linux開発者にえらい不人気なGPLv3の話。

しかし、Afferlo GPLもどきの条項を含むとかいう噂とか、 DRMや特許についてえらいドラスティックな条文を含んでいたドラフト1と 比較すると、現在のGPLv3ドラフトはだいぶおとなしい気がするのだが、 それでも「危険」なんだろうか。

どっちかっていうとLinusとFSFの(やや感情的な)対立に 他の開発者が同調しているだけのような気がするんだけど。

ま、私自身もGPLv3を読み込んでないんで、 偉そうなことは言えないんだけど。

_ 夏休み

今日は夏休みにしようと思っていたのに、 「夕方から会議」とのメールが来たので出社する。

残念(半日以上は休んだけど)。


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

_ 私事

詳細は書けないが、大変緊張することがあった。

が、(予想外にも)成功したので、びっくりした。 嬉しいが、今後の仕事が増えたということでもある。

_ [OSS] 孔雀の羽とオープンソース - 欧州の視点

オープンソース開発の動機について。

良く聞かれるんだけど、私の動機ってなんだろうなあ。 Rubyやcmailを公開した理由ってのは「公開しないことを考えもしなかった」って 消極的な理由だし。

現在、オープンソース開発者であることから受けるメリットは 数多くあるのだが(飯のタネだし)、それが動機かと問われると違うような気もする。

経済的利益も、名誉も、技術的好奇心の充足も、 違うとは言わないけれど、それだけでないなにかがあるような。

やっぱ、か?

うーむ。


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

_ お出かけ

夏休み3日目。妻は息子の小学校の給食試食会なのだそうだ。 私が小学生のころと違って、 なかなか魅力的なメニューが提供されることが多い最近の給食の試食というのは 面白そうではあるのだが、 生徒一人あたり親一人ぶんしか提供されないとのことなので、 私は末娘とお出かけすることに。

日中、1才児とふたりだけで出かけたことはあまりなかったので、 ちょっとどうなることかと思ったが、 思ったよりも聞き分けが良く(最近は反抗期なのだ。口癖は「ヤダ」と「自分でやるッ」)、 かなり楽しい時間が過ごせた。

_ 誕生日

長女の誕生日。ずいぶん大きくなりました。

_ 小学生が編み出した哲学

「小学生の頃、こんなことを考えてました」という話。 まあ、小学生でもいろいろ考えるよね。

私は右目で見るのと左目で見るので色味が少しだけ違っている。 右目で見た方がやや黄色みがかっているのだが、 これをもって「一人の人でも見え方が違うのに、他人はいったいどう見えてるんだろう」と 深く考え込んだことがある。結論はいまだに出ていない。

_ 心の三層モデル

小学生の哲学で思い出した。 そういえば、小学生の頃、人間の(正確には、自分の)心は三階層になっていると思った。

つまり、

  • 言語化された層。
  • 言語化されない層
  • もっと下。本能やひらめき。

の三層だ。考えている時には言語(日本語)を使うわけだが、 頭の中で日本語をつむぎながら、次に何を話すか考えている。 これは言語よりももうちょっと構造化されていない概念のリンクのようなものだ。 これが第二層。

これらが連携しているから、アイディアを練りながら文章が書ける。 概念のリンクからより表層に近づき文章になる。

が、よくよく自分の心を観察すると、第二層の概念の引き金となる もっと下の層が感じられる。これはあんまり制御されないし、 心の奥のほうから第二層にどんどん概念を突っ込む感じ。

結局、人間の発言とか、作文とかは、一番奥の第三層から出てきたものを 第二層でリンクしたり、フィルタリングしたりして、 第一層で言語化したものなんだ、と一人納得していた10歳くらいの私。

あの頃は「心」に興味があって、心理学者とか精神科医にでもなろうと思っていた。 ま、いろいろ挫折して今に至るわけだが、 いまだに人の心は扱っているような気がする。だいぶ違う形だけど。


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

_ プログラミング入門の動機

最近は自分の机がある本社ではなく、 駅前の「オープンソースラボ」にいることが多いのだが、 今日は(珍しく)お客さんがあった。

プログラミングを学んでそっち方面の仕事に転職したい(CとPerlは読み書きできる)、 けど、まだ勉強が足りないような気がして、とのことだった。

正直、私自身はあまり勉強しようとしてプログラミングを学んだことはないので、 そういうニーズにどう答えたもんだか、と思う。 私は別にそれを仕事にしようとしたわけではなく、 プログラミングそのものが面白いことだと思って、 それを実行してきただけだ。

プログラミング入門書とか見るとなんかすごい違和感があるのはその辺かもしれない。 「プログラミングを学ぶ」ということへの動機づけがよく分からないからだろうか。 「それを仕事にしたいから、採用されるだけのスキルを身につける」というのが 動機なのか。うーむ。

とりあえず、

  • やりたいこと、興味のあることを見つけよう
  • その分野のコードを読んでみよう

とアドバイスしておいた。

もしかして、これって「オープンソースラボ」開設以来、 もっとも設立目的にかなった時間だったんではないだろうか。

_ インタビュー

大新聞社の記者の方がわざわざ島根までいらっしゃって 取材してくださる。Rubyやらオープンソースやら物作りやらをテーマに 3時間も話し込んでしまった。大変、楽しい時間ではあったが、 それを限られた紙面で一般読者にどう伝えるか頭を抱えていらっしゃった。

その辺が新聞記者のつらいところである、たぶん。

_ 「IT投資」という考え方そのものが間違っている

「IT化」というのは経営(判断)の自動化でもあるので、 あくまでも「経営の具体化」であって、 あたかも機械を導入するかのように「投資」するという考え方は間違っている、 という話。

確かに、経営陣の持つ「道具を導入する」というイメージと 実際の「仕事そのものを計算機が実行できる程度に明確化・具体化・自動化する」という プロセスとのギャップによって多くの「IT化プロジェクト」の「悲劇」が生まれているような 気がする。

できれば、そういう分野からは離れてくらしたいなあ。 あくまで道具の開発で終始できれば、それはそれで幸せかも。

_ [OSS] オープンソース生き残りの条件 - 日本のITは世界を制す!?

企業によって支援される「コマーシャルオープンソース」というのは 実際にアリだと思うし、今後ますます重要になっていくとは思う。 私自身もオープンソース企業に雇用されている身だ。否定できるはずもない。

が、だからといってそうでないものを「草の根」と呼んだり、 「コマーシャルオープソースに..草の根オープンソースは太刀打ちできない」 というような捉え方には賛成できない。

リンク先エントリの内容には、 「お金が全て」のような気持ちが透けてみえるし、 従来のビジネスモデルに慣れきった人々からのウケは良くても、 多くの開発者が情熱を傾けている本質への理解が感じられない。 それなしには、たとえ「コマーシャルオープンソース」でも 成立するのは難しいだろう本質なのに。

『ソース公開しているのは(あくまでも)「チラリズム」である』というのは、 オジサンにも理解しやすいオープンソース論だが、 その程度のオープンソース論で、本当にオープンソースビジネスをやっていけるんだろうかと 人ごとながら心配になる。

まあ、この人はSugarCRMの日本代理店の中の人ということなので、 自分とこの商品がオープンソースだろうがなんだろうが、海外から持ってきた ソフトウェア商材を売るというビジネスモデルには変わりない(から、オープンソースの「本質」とか関係ない)ってことなのかもしれない。


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

_ XP祭り関西

朝6時に自宅を出発して大阪へ。XP祭り関西に出席するためだ。 しかし、大阪は遠い。東京よりずっと遠い。

で、スピーカー特権で特等席で話が聞けた。 もっとも今日はRubyのハックで気にかかっているもの(array rfree patch)に かかりきりだったので、あまり一生懸命は聞けなかった。

昼休憩にビデオチェックを行ったら、私のPCのビデオ出力がプロジェクターに映らず、 「また呪いかっ」と危惧したのだが、結構入力に厳しいプロジェクターだったようで、 リフレッシュレートを60Hz固定にしたら出力された。焦った。

昼食は「千房」でお好み焼き。他のスピーカーも来てた。 なんか昼間っからビール飲んでる人もいるし。

で、本番。今回のタイトルは「The State of the Dominion」。 日本Rubyカンファレンスのときのものと同じだが、 すこし書き足してある(スライド)。

どのくらい通じたかわからなかったけど、 Rubyイベントのものをそのまま持ってきても あまり違和感がないくらい「アウェイ感」は減少したのは感じられた。

休憩時間に平鍋さんと、 機械猫さんが提唱した「アジャイルの価値」と言語の関係について話をする。 私が感じた以上に平鍋さんは感銘を受けたみたいで、 英語のブログまで書いていらっしゃる。

英語圏での反応や如何に。

_ 物理的距離、時間的距離、経済的距離、心理的距離

松江からの距離を考える時に、 物理的な距離なら大阪が近い。半分以下か。

しかし、時間的な距離だと東京の方が近い。 飛行機を使うから。移動時間が全然違う(大阪行き飛行機もあるけど)。

東京の方が交通費が4倍以上するから、 経済的距離は東京は4倍遠いことになる

心理的距離は、それら全部を総合したもの+αということになるだろうが、 それでも大阪は遠い気がする。

東京一極集中の弊害か。島根は関西文化圏ではないからか。

私、大阪生まれなんだけどなあ。

_ 子育て

昼休み、XP祭りスタッフの某氏と某氏と一緒にお好み焼きをパクつきながら、 子育てについて語る。

「私、中学生の娘がいるんです」「どっひゃーっ」(童顔なので)

「将来、子供に嫌われたらどうしようと。まだ、子供いないんですけど」(気が早すぎ)

とか。大変楽しかった。

_ 安倍晋三氏の公式サイトが採用したオープンソースCMS Plone

Plone使ってるんだ。「美しい日本」にこだわりのある安倍氏なら、 日本製言語たるRubyを使うべきではないのか。...なんて、ね。

あ、でも、ZopeもRailsも結局日本製じゃないしな。


最新 追記