«前の日記(2006年09月01日) 最新 次の日記(2006年09月03日)» 編集

Matzにっき


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月01日) 最新 次の日記(2006年09月03日)» 編集