最新 追記

Matzにっき


2007年04月01日 [長年日記]

_ エープリルフール

わりと信じやすい性質なのか、 例年この日は、妻にいいようにだまされている。

「あなた、外は雪よ」
「ウソっ」

「ええ、ウソよ」

とか。

が、今年は日曜日なこともあって、平和であった。 別にだますこともだまされることもなく。

やっぱウソはいかんよ、ウソは。

っていうか、私はウソに堪えられない性格で たとえば映画「ミセス・ダウト」のような、 ウソをついて、 それをごまかすためにさらにウソを重ねるとかいうような ストーリーだと、悶絶してしまって、最後まで正視することができないのだ。 どうもバレた時の悲惨さをリアルに想像してしまうようだ。

ロビン・ウィリアムズ好きなんだけどな。 ちょっと下品なところも含めて。

_ [Ruby] オブジェクト指向機能を取り除いた Ruby-- が登場!?

今年とりあげる唯一のエープリルフール・ネタ。

正直、それほど面白いわけではないけど、 ちょっとニヤリとしたので。

でも、まじめな話をすると、正直「オブジェクト指向機能を取り除いたRuby」って 存在できないような気がする。

ただ、

  • HashとArrayが融合したRubyとか
  • Enumerableが遅延評価なRubyとか

なら見てみたいような気がする。これらは成立不能というわけでもなさそうだし。

互換性はともかく。


2007年04月02日 [長年日記]

_ [教会] セミナリー1日目

今日から本年度のセミナリーが開始。

うちの長女が今年から参加。 起きられるかどうか心配だったけど、 とりあえず問題なし。

今年は教義と聖約と教会歴史。

教える方も大変だ(私だケド)。

_ LMLML

MLにおける多言語(多エンコーディング)対応文字列ライブラリ。 非常に興味深い。

_ [Ruby] 最速配信研究会 - なんだかいろいろ申し訳ない気分になった話

「Railsって難しそうだから」というエンジニアがいる一方で、 Rails本を3冊ほど買って試しているうちに「やったらできちゃった」という非エンジニアがいる、という話。

Railsやらなんやらで敷居が下がると、 エンジニアの価値ってどこに残るんだろう、ということになる。 うかうかしてると足元が危ういかも。

_ [Ruby] Headius: ActiveRecord 100%, Performance Doubling, Java Support Improving

表題の通り、JRubyが

  • ActiveRecordを100%サポート
  • 性能が2倍
  • Javaサポートが改善

しているという話。着実に前進している。

そのうち追い越されちゃったりして。


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

_ [Ruby] Bitwise Magazine:: What's Right With Ruby?

先日の「What's Wrong With Ruby」に続く第二弾。 今度は反対の立場から。

ま、「いい点もあるよ」という話。 先日のと、これと、一遍にリリースしておけば面倒なことにならないと思うんだけど。 それは予想の範囲外だったのかなあ。

_ [OSS] オープンソースソフトウエアがビジネスの成長を加速

日本ユニシスと日本HPのOSS担当者の対談。 なんだかよくわからない。

特にわからなかったのは、ここ。

伊藤 OSS の有効活用には、技術や知財を形にして、安心感を提供することが大事ですね。

赤井 自社の知財として、OSS をトータルソリューションの中に組み込み、ベストプラクティスを提供していくことも重要でしょう。

えーと、なにをおっしゃってるんでしょう? 宇宙語?

「安心感」はともかくとして、「技術や知財を形にして」がなにを意味するかは不明瞭だし、 「自社の知財としてOSSを〜組み込み」というのは、 思いっきり誤解される表現だと思う。ジャイアニズムの匂いがする。

オープンソースをビジネスに利用することについては、 むしろ積極賛成派の私だが、少なくとも意味のわかる話をしてほしい。 担当者(「OSSセンター長」と「オープンソース&Linux推進部 推進マネージャ」)の 対談で、こういう「わけのわからない」表現を見るようでは、 逆効果ではないだろうか(元ページはユニシスのPRページ)。

_ Passion For The Future: なぜ株式投資はもうからないのか

個人投資家は機関投資家の「餌場」としての役割がもっとも期待されている、という話(なのか?)。

ま、情報格差から滅多なことでは対等な土俵には立てないわけで、 うかうか乗り込んでもカモになるだけというのは少し考えればわかるわけだが、 まあ、考えないんだろうなあ。


2007年04月04日 [長年日記]

_ [Ruby] Rails 1.2と1.1、速いのはどっち? - Railsbenchによる性能レポートを公開 | エンタープライズ | マイコミジャーナル

Rail 1.2は1.1と比較して倍遅いという話が出ていたが、 実際にちゃんとベンチマークを取った結果、 ライブラリが大きくなったぶん、ロードに時間がかかるが、 それ以外はたいして変化していないという結果になった、という話。

AutoLoadでロードの負担を減らすというのはRuby/Tkで効果があったテクニックだが、 Railsではうまくいかないような気もする(結局全部使うから)。

_ [言語] 3rd Workshop on Dynamic Languages and Applications - Dyla 2007

動的言語ワークショップ。 今年はベルリンだっ。

去年はプログラム委員に名前が入っていたが、 本当に名前だけという情けないありさまだった。 今年は迷惑をかけないようにしよう。

7月31日だとちょっと難しいかなあ。 弟の誕生日だし(関係ないか)。

_ [言語] When lisp is faster than C

「LispがCより速い時」。

遺伝的プログラミングではon-the-flyコンパイル(たぶんJITのこと)がある CommonLispの方が速かった。まあ、動的に関数を作れないCだと、一種の言語内インタプリタを作る必要があるから、速いのは当然といえば当然かも。

Greenspunの第十原則」の一種か。

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

十分に複雑なCまたはFortranのプログラムは、場当たり的で、仕様が決まってない、バグだらけで遅い、CommonLispの半分の実装を含む


2007年04月05日 [長年日記]

_ 東京移動

朝から家族で米子の実家へ移動。 両親に子供たちを預けて、妻と米子空港から東京へ。

まず、広尾の神殿により、 その後、ホテルにチェックイン。

ホテルオークラとホテルニューオータニを間違えてしまったのは内緒だ。 どうも、ぼーっとしている。

しばらく休憩した後、新宿へ移動。 買い物と晩ご飯。堪能した。

結婚して15年、妻が思ったより都会好きであったことは意外であった。 本人によると「新しい街を歩くのが好き」ということだが、 田舎じゃそんな刺激は無いものな。

住むとなるとまた別なのだろうが。

_ [言語] cat-language - Google Code

スタックベースの関数型プログラミング言語。

オプショナルな型システム、 名前付き引数、 MapReduceの実装があるというのが、とりあえずの注目点かも。

_ Prex - 組み込みリアルタイムOS開発日記 - OS開発の愉しみ

OSの開発は楽しいだろうと思うよ。 言語の開発もだいたい同じだし。

そして、どちらも理解できない人には決して理解してもらえないものなのだ。

いさぎよく理解してもらうことはあきらめて、 実績をあげてその成果を認めてもらうなり、 「自分の楽しみ」を徹底的に追求なりするしかないような気がする。

_ 2.0のキーパーソンがMacを愛する理由:ITpro

Mac人気だよね。 私はどうにもなじめないけど。

私は典型的な「オールドタイプ」だからしょうがないか。


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

_ [Ruby] 日経BP技術賞 表彰式

ホテルで朝食後、チェックアウト。同ホテルの表彰式会場へ。 めずらしくスーツ姿。

会場について驚いたのは、 私一人、演壇の直前に席が指定されていること。

これはなんの晒し者ですか?

その後、いろいろとあいさつがあった後、 対象受賞者によるプレゼンテーション。 5分という予定であったが、そうとう早口で話しても6分かかってしまった。

日経BP技術賞とは、 日経BPの記者たちがその年に登場した(or 話題になった)技術を推薦し、 その中から学識経験者が6分野12技術を選んだ上、 さらにその中からひとつを大賞に選ぶというシステムになっている。

6分野は以下の通り。

  • 電子・情報家電部門
  • 情報通信部門
  • 機械システム部門
  • 建設部門
  • 医療・バイオ部門
  • エコロジー部門

で、今年は「プログラミング言語Ruby」が情報通信部門で大賞を受賞したということなのだそうだ。

で、この受賞だが、聞くところによると

  • 個人受賞は初めて
  • 情報通信部門受賞は久しぶり
  • オープンソースソフトウェアも初めて
  • ソフトウェアの大賞受賞は初めて

なのだそうだ。いかに普段から特異な(メインストリームからはずれた)変な活動をしているかがよくわかるような結果だな。

で、プレゼンテーションの内容を始めとして、授賞式の様子は ITproの記事、「【日経BP技術賞】「Rubyが評価されたのは,技術や機能ではなく“感性”」,大賞受賞のまつもと氏語る:ITpro」にまとめられている。

他の技術賞部門賞は以下の通り。

  • 電子・情報家電部門
    • 青色半導体レーザーと光ファイバーを利用した白色光源(住田光学ガラス)
    • Siウエハー上に異種薄膜を常温接合する技術「EFB」の実用化(沖電気工業)
  • 情報通信部門
    • 「UHF帯電子タグの製造技術及び実装技術の開発」(響プロジェクト)によって開発されたICタグ(日立製作所、ルネサステクノロジ、八木アンテナ)
  • 機械システム部門
    • ディーゼルエンジン用NOx吸蔵還元触媒(本田技術研究所)
    • 小型・高出力のファイバーディスクレーザー(浜松ホトニクス)
  • 建設部門
    • 地震の発生を知らせる緊急地震速報システムの開発と運用(気象庁、防災科学技術研究所、鉄道総合技術研究所)
    • デュアルシールド工法の開発 (福田組)
  • 医療・バイオ部門
    • マウス体細胞の初期化技術(京都大学)
    • 糖鎖遺伝子ライブラリー(産業技術総合研究所)
  • エコロジー部門
    • 国内最大の2400kW大型風力発電設備における大型化・効率化技術 (三菱重工業)
    • ヒートポンプ式洗濯乾燥機を実現させた超小型ヒートポンプユニット (松下電器産業)

見れば見るほど、私の受賞が変な感じ。

その後、懇親会が開かれた。懇親会の様子は別の記事「【日経BP技術賞】「プログラマの快適さが生産性を向上させる」---Ruby作者まつもとゆきひろ氏:ITpro」に。

松江市の松浦市長も来てくださって、簡単にスピーチしてくださる。 あいかわらず市長は本気である。 お役に立てるとよいのだが。

日経BPは受賞を記念して「日本で生まれ世界が育てた言語 Ruby:ITpro」という特集サイトも開設してくださったそうだ。

_ 移動

その後、妻の希望で原宿へ移動。 原宿はゼータビッツからの分離以来か。当時は本社が原宿だったからな。

私は別にすることも無いのだが、 普段なら絶対に来ないような街の、絶対に見ないような人を見てるのは それなりに楽しかった。

秋葉がサブカルチャーの中心であるというならば、 原宿はまた別のカルチャーの中心であるような気がした。

最近行ってないけど、池袋や中野も面白い発展をしてるとか。 今度見に行こうかなあ。

その後、飛行機で米子へ。 子供たちを拾って、自宅へ帰る。

くたびれた。

_ [言語] YAPC::Asia::2007 - Perl I18N in 20 minutes

ちょうど同じ頃開かれていたYAPC::Asia::2007での弾さんのプレゼン。

これを見て、RubyのM17Nでもせめて

\x{5F3E}
\N{WHILE SMILING FACE}

くらいはできるようにしようと考えた。


2007年04月07日 [長年日記]

_ 総大会

子供たちは部活、妻は(昨日までの旅行で)疲労、 ということで私だけ米子に行って総大会土曜の部を聞きに行く。

改装が終わったタバナクルが再奉献されたこととか、 お話の内容とか大変タメになった...と思ったんだけど、 今思い返すと結構忘れてるな。もうちょっとメモを取っておくべきだったか。

まあ、来月になればぜんぶ文章で読めるんだけど。

_ 『地球へ...』

新番組。 娘が録画しておいたものを見る。

なんと懐かしい。1話の段階ではストーリーは原作に忠実のようだ。 映画は超圧縮ストーリーだったが、テレビシリーズなら ちゃんと話が追えるかも。

長女によると「ベタな設定」だそうだが、確かに

  • 環境破壊で滅亡に瀕した地球
  • 他星系への移民
  • 旧人類による新人類への迫害

とか、よくあるテーマかもしれない。 が、当時は新鮮だったんだよ。

もちろんその頃でもすでにSFでは使い古されてたテーマだったんだろうけど。 懐かしさと共に今後に期待。

って、もしかして今『地球へ...』ってのは、 もしかしてコアターゲットは私と同世代?


2007年04月08日 [長年日記]

_ 総大会(その2)

息子は夕べから吐き気を訴えていて、 祝福したらだいぶ回復してはいるのだが、 米子への移動は無理そう。 次女も調子が悪いということで、 世話役の妻、次女、長男は留守番。

長女と末娘だけ連れて米子へ。

昨日に引き続き、すばらしい説教であったが、 子守りに追われたのが残念であった。 末娘がもうちょっと成長してくれると助かるんだがなあ。

とはいえ、今の時期のかわいらしさは今しかないので、 それはそれで惜しい気もする。親ってわがまま。

お昼時には一族そろって、米子の教会の桜の木の下で花見しながら昼食。 なかなか風情があった。

帰ったら、今度は長女が「気持ち悪い」とか言い出すし、 末娘は吐くし、大変だった。

末娘はニコニコと夕食を食べながら突然吐き、 その後、なにごともなかったように食べ続けた。 どういうことよ。

これは家族全員を席巻しそうだな。


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

_ 新学期

学校は始業式。 息子は元気に出かけたが、 長女、次女は初日から欠席。 前途多難である。

_ Microsoft is Dead

「マイクロソフトは死んだ」。

まあ、世界最大のソフトウェア会社は簡単なことで潰れたりしないし、 それはPaulも認識しているだろう。このエッセイの中で言及されてるIBMも 潰れてはいないし。だから、 より正確に言えば「マイクロソフトはもう恐くない」。

しばらく前に丸山先生レクチャーシリーズに顔出した時に 印象的だったことがある。 マイクロソフトの人が彼らのガジェットについて解説していて、 他のデスクトップガジェット(OSXのとか、Yahooのとか)との違いについて 語った時の言葉。

それはインストールベースです。 Vistaにはすべてガジェット機能がインストールされます。 この数については他のガジェットには真似できません。

正確な言葉ではないけど、こんな感じ。

彼は数の論理についてよく理解していて、 限りなく「マイクロソフト的」だと思った。 「ブラウザの外」ではまだこの論理は有効である。

_ [Ruby] 日本 Ruby 会議 2007

正式にページが公開になった。楽しみなことである。

_ [Ruby] ヲトナ.backtrace - Rails なプロジェクトが燃える理由

Ruby on Railsを使ったからといって、 それは定型的なコストが下がるだけであって 作業の本質が減るわけではない。 必要以上の期待(幻想)を抱いてしまうと、「炎上」することになる、という話。

ま、当たり前といえば当たり前だけど、 Rubyについても、Railsについても幻想ではなく 実物大のメリットを享受していただければと思う。

_ [言語] [ThinkIT] 第5回:グローバル変数の制御と更新履歴ファイル (1/2)

JavaScriptはスコープの制御が関数レベルでしかできないから、 グローバル変数を導入しないためには「ちょっとしたテクニック」が必要、という話。

ま、もっともな話ではあるのだが、 こんな簡単なことが簡単にできない言語は、少なくともユーザに優しい言語ではないと思う。

_ ITmedia アンカーデスク:「EMIは打つ手がなかった」−−DRMフリー化と「CCCD」という無駄 そして日本は

レコード(CD)業界がいかに「愚かな」選択を積み重ねてきたかということと、 日本では着うたフルのおかげでDRMフリー化は遠そう、という話。

いずれにしてもなんらかのDRMが導入された時点で 我々「Linuxユーザは切り捨て」と同義だよね。 少数派を切り捨てるのはビジネスとしては当然の選択だが、 切り捨てられる方は穏やかではない。

私は、諸君の中の少数派に呼びかけている!
少数派の諸君!今こそ団結し、立ち上がらなければならない!
奴ら多数派はやりたい放題だ!
我々少数派が、いよいよもって生きにくい 世の中が作られようとしている!

私は、この国の、少数派に対する迫害にもう我慢ならない!
少数派の諸君!多数派を説得することなど出来ない!
奴ら多数派は、我々少数派の声に耳を傾けることはない!

自由は無料では手に入らないということか。

_ himazu blog - 1週間に4時間しか働かない人の仕事術

「1日4時間」でもすごいけど、この人の場合には「1週間に4時間」。おそるべし。

要するにパレートの法則(80:20則)を徹底して、効果の高い20%に集中したら それくらいでも済んだということ。

実際に自分の仕事から無駄をなくしたら、 1週間に4時間は極端だとしても、かなり実働時間は減らせるかもしれない。

自分の生活に対するハックを怠らない私も、 日々の精進を積み重ねた結果、 最近ではコーディング時間が1週間に4時間を切るようになった。 その他の時間は、ブログを読んだり、メールを書いたり、 原稿を書いたり、原稿を書いたりしている。

ちっとも生活が楽になった気がしない。 もっとコードが書きたい。


2007年04月10日 [長年日記]

_ 病気

朝、セミナリーから帰ったら具合が悪い。 同じ頃、妻も吐いたという。

で、この日は妻と二人で一日中寝ていた。 夫婦揃ってこれほど具合が悪いのは15年の結婚生活の中で初めてじゃなかろうか。 末娘は元気なので、交代で少しずつ面倒を見たり。

とにかくしんどかった。

夕食はお姉ちゃんたちが昨日の残り物をベースに作ってくれた。 子供の成長がこれほどうれしかったことはない。 ありがとう。


2007年04月11日 [長年日記]

_ DRMで激化するメーカーとハッカーの攻防戦 - CNET Japan

次世代DVDのプロテクトを維持するためのメーカーの努力、の話。

メーカーがいくら頑張っても、 そんなに頻繁にキーを変更できるわけはないのだから、 勝ち目のない争いのような気がする。

っていうか、あんまりDRMで頑張ってもらうと使いにくくなってしょうがないんだけど。

不毛な争いはやめて、 どうにか、使いにくくない線で折り合いがつけられないものか。

_ [言語] ppkfなんてのを作ってみました | SiteBites Blog

Pythonによるエンコーディングデテクタ。なんでデテクタなのに「kf(kanji filter)」なんだろう?

Universalchardetに比較すると 日本で使われるエンコーディングしかサポートしていないという難点はあるが、 ぜんぶPythonで書いてあるので遊びやすいというのはある。


2007年04月12日 [長年日記]

_ [OOP] Why OO Sucks

「Erlangの人」Joe Armstrongによる、「なぜOOは良くないか」。

  1. Data structure and functions should not be bound together
  2. Everything has to be an object.
  3. In an OOPL data type definitions are spread out all over the place.
  4. Objects have private state.

2と3はちょっと誤解っぽいけど、残りは 関数型プログラミングの視点からはもっともだと思う(特に4)。 だけど、世の中にはそれに耐えられない人もいるのよ。

現実世界に「状態」があるのに、プログラミング言語がそれを表現できない (ということは、間接的に表現しなければならない)というのは、 私の脳内モデルとプログラムの距離が遠くなって大変つらい。

現実世界から副作用のない関数モデルへのマップが脳内でできる(関数脳)状態の人には 関数型言語が最適なのだと思う。 問題はどうやってそれを構築するか、だれも言語化していないことだ。 「習うより慣れろ」とかいう精神論しか聞かない。 それはあまりにスパルタな。

それとも私が知らないだけ?

_ [Ruby] Java News Brief - April 2007: JRuby

JRubyの紹介。JRubyを介してJavaな人の視野にもじわじわとRubyが進出してきているようだ。

たとえ、仕事ではJavaしか使わないにしても、 Rubyを知っておくことは無駄ではないと思うよ、実際。

ただ、仕事でJavaを使うのが苦痛になるという副作用があるかもしれないから、 それには注意。

_ [Ruby] Compute Node Ruby for Bluegene/L

Bluegene/LのノードでRuby 1.8が動いた、という話。

考えてみれば、全体としては世界最速のスーパーコンピュータだとはいえ、 各ノードはLinuxマシンなわけで、別に珍しいことではないかも。

ただ、Bluegene/Lのノードはスレッドに対応していないので、 YARVは動かないらしい。そういうものなのか。


2007年04月13日 [長年日記]

_ 出でよ,猛々しいプログラマ!:ITpro

「猛々しいプログラマ」とは、猪突猛進でどんどん進めていくタイプのプログラマだそうだ。 協調性もなさそう。

小学3年生のその子供は,プログラムを作り始めると,人の言うことなど聞かない。ロボットの動きだけをたよりにどんどんプログラムを作成していく。彼はそれを「猛々しいプログラマである」と表現した。自分が作ったプログラムを人に説明することはできないが,人に指示されるよりも自分の理解を基にプログラミングを進めていく姿勢に対して,ベストプログラミング賞を贈ったという。

猛々しいプログラマ──やや閉塞感のある日本のソフトウエア産業界にブレークスルーをもたらすとすれば,こうした人材像ではないだろうか。

そうかもしれない。日本の職業プログラマはお行儀が良すぎるのかもしれない。 ま、ほとんどのソフトウェア開発はチームワークだから、必然でもあるのだけど。

が、驚いたのはその後。

例えば,まつもとゆきひろ氏は,職業としてはプロのソフト開発者である。しかし,Rubyの開発に限っては,完全にホビイストの立場だったのではないだろうか。彼がおもしろいと思いながらひたすら作り上げたRubyは,世界中で利用される優れたプログラミング言語となった。

まさか、私が言及されるとは思わなかったな。 「猛々しい」は私の人格を的確に表現している形容詞だとは思わないけど、 「好きなことをしている」、「協調性がない」という点は当たってるかな。

_ [Ruby] Google Code - Summer of Code - Organization Information

今年もGoogle Summer of Codeの採択プロジェクトが決定した。 昨年同様RubyCentralもホストとして参加する。

個人的に興味があるのは

くらいかな。

_ [言語] The Mechanical Bride: Haskell for C# 3 Programmers

C# 3.0との比較でHaskellを学ぶ、という話。

  • 型推論
  • 遅延評価とストリーム
  • 関数
  • 再帰

というか、これだけ比較が成立するのは、 C# 3.0がいかに関数型言語の「マネ」をしているか、 ということでもある。そして、それはとても良いことである。

_ [言語] Jonas Maurus' maurus.net >> I’m sorry, but PHP sucks!

「PHPはダメだ」、という話。

本エントリでは、まずPHPの良い点から紹介している。

  1. “PHP makes it easy to get things done for a beginner”(初心者が仕事を片づけるのが簡単)
  2. インストールが簡単

しかし、良いところはそこまで。

  1. There are 3 incompatible versions of PHP.
  2. PHP’s character-set support is so bad, I want to scratch my eyes out.
  3. (string)"false" == (int)0 is true
  4. References are syntactically complex and implemented, let’s be nice, “badly” (PHP 5 solves some of this with an incompatible change)
  5. PHP isn’t thread-safe.
  6. The quality of PHP’s compiled-in libraries differs widely

私にとって2や5は少々意外だった。 PHPの人気や実績から考えたら、この辺は当然クリアしてると期待するじゃない?

とはいえ、実際に「喜んで」PHPを使っている人はそれなりにいるわけで(「しかたなく」使っている人も大勢知ってるけど)、そういう人たちはまた別の理由や動機があるのだろうか。 それとも「現状に満足しちゃってる」とか、「新しい言語を学ぶくらいだったら、非効率な方がマシ」ということなんだろうか。時として「知らないこと」は強力な動機となるわけで。

最後にJonasは「残されたPHPを使う動機」として以下のものをあげている。

  1. You have found the ideal framework or base for your software and it’s written in PHP
  2. You already have a huge investment in PHP technology
  3. Your time-constraints do not allow you to learn something else

で、彼の結論は「For me, PHP is now an unacceptable solution to all but the simplest problems」なのだそうだ。PHPを使ってない私がなにを言ってもまったく説得力がないけれど、 この人はそれなりにPHPの経験を積んだ上での発言のように思える。

あなたの結論はどうだろうか。

_ [Ruby] SimpleCSV

FasterCSVよりもさらに高速なCSVパーザ。 すばらしい。いっそ標準添付のものを置き換えちゃうか。

いつの間にかLightCSVに改名されていたダウンロードはこちら

_ 第7回 オープンソースサロン

私の日経BP技術賞大賞受賞記念ということで、プレゼンテーション。

今回はRubyを技術賞に推薦してくださったITProの高橋さんにも 松江に来ていただいて、技術賞とはなにかとか、 受賞の意味とかについても発表していただく。

しかし、ありがたいことだ。

で、私の発表の内容は、授賞式のプレゼンテーションとほぼ同じで、

  • Rubyのこれまで
  • Rubyの発展状況
  • Rubyが評価されたワケ
  • 感性が重要

とか言うような話。授賞式と違って5分という縛りがなかったので、 もうちょっと言葉多くして30分くらい。 後、質疑応答。松江らしく(?)おとなしいものであった。 もっと質問しないともったいないと思うんだけどなあ。 それでも、オープンソースの基本的なことから、 PHPとの比較など技術系、非技術系とりまぜた質問が出る(指名したり、ちょっとむりやり感はあったけど)

その後、懇親会。


2007年04月14日 [長年日記]

_ 誕生日

年齢がひとつ増えた。めでたい...ことではないか、人生折り返し地点を過ぎてれば。

娘が私のためにシュークリームを焼いてくれた。 膨らみが足りず見てくれは、お店のものには敵わないかもしれないけど、 味と愛情は負けてない、と思うよ。

昼食はモスバーガーで新しくなったというモスバーガーに挑戦。 しかし、味の違いがわかるほどモスバーガーを食べつけていなかったりする。 おいしかったけど。

_ [言語] Notes on Haskell: Fight the next battle

「静的vs動的」の戦いにはほぼ決着が見えてきて、RubyやPythonの人気が上がり、JavaやPHPが落ち目になっているように「見える」。 だとすると、「次の戦い」のテーマはなんだろうか、という話。

彼の意見はこんな感じ。

  • Functional programming over OOP and Imperative programming
  • Strong typing over weak static typing or dynamic typing
  • Mathematical foundations for concurrency over ad hoc models (i.e. threads)
  • Parsing over regex hackery
  • Implicit parallelism

どれも興味深い。いくつかは「将来のRuby」にも取り込みたいと考えている。

_ Letter to the Patent Office From Professor Donald Knuth

ソフトウェア特許に関するKnuth教授からのオープンレター。

「後で読む」

_ [言語] What Programming Languages Should You Know?

基礎知識としてプログラミング言語を学ぶなら、なにを選ぶか、という話。

ここで挙げられているのは以下のもの。

  • C: Portable Assembly
  • Smalltalk
  • Lisp
  • Erlang
  • Haskell
  • Prolog

無難なリストではある。


2007年04月15日 [長年日記]

_ [教会] 松江

月に一度の評議会。 聖餐会での司会。 プライマリでのお話。

普段通りの日曜日。


2007年04月16日 [長年日記]

_ [言語] James Clark's Random Thoughts: XML and JSON

James Clark、JSONについて語る。

ネームスペースがない、という指摘はわかるようなわからないような。 確かに表現すべきデータ構造が複雑になった時に ネームスペースのようなものがほしいことは、もしかしたらあるのかもしれないけど、 ほとんどの場合には「配列、マップ(オブジェクト)、文字列、数値」で 表現可能なのではないだろうか。

それを越える場合には、確かにJSONではカバーしきれないだろうが、 ごくまれな特殊なケースのために巨大な道具を持ち込むのは間違っている、と思う。 もともとXMLも、巨大すぎるSGMLや一貫性のないHTMLへの対案として誕生したはずなのに、 今や(well-formedな一貫性は維持されてると思うけど)、 揶揄の対象になるくらい巨大になってしまったような気がする。

JSONについては、外から受け取ったデータを 安易にevalに渡してしまうようなケースの方が心配。

_ [言語] Kamen Lisp

クライアントサイドで動作するLisp、らしい。

というか、ラムダをバックにした仮面ライダーストロンガーの印象が 強烈すぎて、他のことがふっとびそう。

_ [Ruby] Ola Bini on Java, Lisp, Ruby and AI: ThoughtWorks

あまり目立たないがJRubyの立役者であるOla Biniが大学から ThoughtWorks(Martin Fowlerがいるところ)に移って、 フルタイムのJRuby開発者になる、という話。

すげー。

っていうか、 本家Ruby開発者は(私以外は)なかなかフルタイムという話はないのにな。 笹田くんは結構近いけど。 それを思うとやっぱJavaの威光はすごいな。

_ [言語] 言語の歴史(Lisp, C)

_ [Ruby] 「Google恐れるに足らず、パートナーと協業し日本独自のSaaSを」、アスタリクス社長に聞く:ITpro

アスタリクスの中島社長のインタビュー。

「Google恐れるに足らず」というのは強気な発言であるが、 日本ベースであるがゆえにGoogleにはできないことはあるだろう。 エンタープライズRubyの先駆けとしてぜひ成功していただきたい。

NaClも応援している。実際に一部開発してるし。

_ [Ruby] Scaling to multiple databases with Rails (Loud Thinking)

「Twitterの中の人」Alex Payneがインタビュー

ぼくたちは世界最大のRailsユーザーだと思うけど(毎秒11,000リクエスト受けたことがある)、Railsはスケーラビリティが課題だよね。Railsは同時に複数のDBと話すことができないし(超訳)

と、発言したのに対して、DHHが

RubyもRailsもオープンソースだし、簡単に手を入れられるんだから 誰かが自分の問題を解決してくれないか、口をあけて待ってるんじゃなくて 自分で解決して世界に貢献したらいいのに

発言

それを受けて、解決手段であるMagic Multi-ConnectionsNic Williamsがリリースという流れ。

どこに突っ込めばよいのかわからない、この流れ。

DHHの挑発的な応答もさることながら、 それに対してわずか75行のプラグインで対応できてしまうNic Williamsのセンスや そもそもそれを可能にしたRailsというアーキテクチャ、 またその背後にあるRubyのパワーなど、考えるべきことはいろいろある。

_ デイトレーダー型新入社員を見くびるな (ニュースを斬る):NBonline(日経ビジネス オンライン)

「我慢して頑張る」を嫌う「新人類」型新入社員について。

かくいう私の世代は世に言う「新人類」という言葉で最初に形容された世代になるのだが、 この「我慢して頑張る」を嫌う感覚はよく分かる。 会社が一方的に押しつける都合を嫌い、「頑張る」必然性を見いださない。

っていうか、会社と従業員との関係は常にWin-Winであることを目指すべきで、 従業員が一方的に我慢する構造というのは間違っている。 この業界、徹夜しても仕事を完遂する「すばらしい」人は多いのだが、 そのすばらしい働きは、ほとんどの場合、さほど評価されない。 私にはその「報われない」責任感がよくわからない。なんで我慢できるんだろう。

あなたが(自らの身を削ってまで完遂する)すばらしい火消しでも、 たぶん、あなたは出世しない。あなたのキャリアはいつもトラブルの渦中にあるのだから。 経営者からは、あなたはトラブルとワンセットでしか見られない。

プロジェクトが火を噴いているのは、たぶん、あなたのせいではない。 でも、責任をとって徹夜するのはあなただ。 「遅れてすみません」と頭を下げるのはあなただ。

でも、会社はたぶんあなたに報いてくれない。 責任者はあなたに感謝はするだろうけど、それ以上ではない。

それでもなぜ頑張るのか。 一度や二度の突発的な事態なら仕方がないかもしれない。 でも、これが恒常的になるなら、あなたは転職を考えた方がよい、と思う。

「我慢して」も「頑張っても」、将来報われるなんてことは期待できないと思う。 今三十代より下の人にとっては「将来のおいしいパイ」なんてのは、 上の世代がぜんぶ食い散らかした後だ。

「怠けてもよい」とは言わないが、楽しんで仕事すること、充実した仕事をすること、 そして、会社とWin-Winの関係を築くことを、もうちょっと真剣に考えてもよいと思う。

_ 長男誕生日

長男、誕生日。10歳。ケーキを食べる。


2007年04月17日 [長年日記]

_ [言語] Metalua

Luaにマクロを加える試み。文法がS式でない言語へのマクロという点で 非常に興味深い。

同じinfix文法を持つ言語でも、 Dylanのマクロよりは ずっとわかりやすいが 美しくはない。

_ [言語] taw's blog: Compiler for RLisp

RubyでできたLispのコンパイラ。

まず、LispをLuaのものに良く似たバイトコードに変換し、 さらにそれをpure Rubyのコードに変換するというコンパイラ。


2007年04月18日 [長年日記]

_ [Ruby] YouTube - 高橋メソッド in 中文

高橋会長のプレゼンテーション(高橋メソッド)。 ウケている。

_ [言語] 指向性メモ::2007-04-06(金)::あなたがAdaを使わない10の理由

Appleの営業の人による「あなたがMacを買わない10の理由」のパロディなんだが、なんともおかしい。 特に言語がAdaであるところが。

でも、Adaのことを全然知らないとこのおかしさは伝わらないだろうなあ。

_ [言語] toute.ca -- home of Termite and other random stuff

Termiteっていうのは、要するにScheme(Gambit)に Erlangの並列モデルを組み込んだもの。リンク先の論文には 結構性能が出ているような話も見える。

Rubyでもそういうのをやったらよいような気がする。

_ [言語] The Next Big Language

Steve Yeggeによる「次の言語」の条件。

  • C-like syntax
  • Dynamic typing with optional static types
  • Performance
  • Tools (IDE)
  • Kitchen Sink
  • Multi-Platform

私は賛同しないけど(特に最初の二つ)。

コメントではDylanやJavaScript、DやC#3を押す人がいた。 でも、これらも「次」って感じじゃないだろう。

_ [言語] 「次」の言語

じゃ、私は「次」の言語はどうなるか、と考えているか、という話。

こうやって、言語の話題をあちこちでチェックしていると 次世代のプログラミング言語についての傾向がわかってくる。

  • Rubyはもはや当たり前。「次」とは言えない
  • 次にくるトレンドは「関数型」と「並列」
  • 両方を押さえたErlangが本命。歴史も信頼性もあり、知名度上昇中
  • ビジョナリーもErlangに注目してる。Dave Thomasとか

というわけで、 次世代の言語を今味わいたい人はErlangもいいかも。 今はTIOBE Index 50位以下だが、今年のLanguage of the Yearになるかも。

_ [OOP] Chad Perrin: SOB >> OOP and the death of modularity

OOPの「欠点」。

本文だけだとよくわからないけど、筆者によるコメント欄でのサマリが面白い。

  1. OOP allows for more maintainable code in larger projects.
  2. As technologies allow things to scale upward, people tend to scale them upward -- even when they shouldn't be scaled upward.
  3. As a result of this, object oriented software projects like MS Windows sometimes get really, really big and bloated.
  4. That happened to MS Windows, where a better result would have been to include additional functionality the way the Unix tradition tends to do things -- create small utilities that each do one thing well.
  5. Thus, the MS Windows user environment is full of huge, tightly coupled programs that are, in turn, tightly coupled with one another.
  6. Thus, MS Windows is not modular.

オブジェクト指向は複雑なソフトウェアを取り扱えるが故に、 ソフトウェアの複雑化を招くというのは(その主張に同意するかどうかはともかく)、 新しい視点であった。

確かにWindowsの「なんでもかんでも一体化した設計」は、あまりうれしくない気もする。 それが本当にOOPのせいかどうかはわからないけど。


2007年04月19日 [長年日記]

_ [言語] lisp-1 and lisp-2

最近、「CommonLispはLisp-2で、SchemeはLisp-1である」という文章を読んだが、 恥ずかしながらLisp-1とかLisp-2ってなんのことだかわからない。 Lisp 1.5なら知ってるんだけど。

ので、調べてみた。

で、その結果、名前空間がひとつ(関数と変数に区別がない)のがLisp-1で、 区別があるのがLisp-2であるということだそうだ。なるほど。

だとすると、PythonやJavaScriptはLisp-1で、RubyはLisp-2だな。

_ [言語] The shortcomings of scripting | InfoWorld | By Andrew Binstock

スクリプト言語に欠けているもの、という話。

  • スケーラビリティ
  • パフォーマンス
  • 開発ツール(IDE)
  • コミュニティ

まあ、最後のものはともかく(Javaよりも開発者が少ないという意味らしい)、 残りについては自覚はしている。次第に改善されるんじゃないかな。

_ [Ruby] Ruby: let's get an AST - fAST

Ruby 2.0ではぜひAST(Abstract Syntax Tree)が欲しい、という話。

一度公開しちゃうと変更できなくなって面倒だから、 という非常に開発者の都合で公開していないんだが、 やっぱりAST機能欲しいんかねえ。

いっそ、RubyのソースコードからS式を吐くフロントエンドを作るというのはどうだろう。 で、S式からYARVバイトコードを作るとか、Gaucheに喰わせるとか。

その場合、Rubyってのは本当にLispの一種になっちゃうね。 なんとなく先祖帰りな雰囲気。

_ [Ruby] Twitter, Rails, Hammers, and 11,000 Nails per Second − Thought Palace

「毎秒、11,000アクセスというのはすごいけど、それDBアクセスいらなくね?」という話。

確かに毎秒11,000回DBにアクセスすると大変なことになりそうだけど、 Twitterの性質をよく考えてみると、そもそもDBに格納する必要のない情報ではないだろうかと。 ActiveRecordのおかげでDBアクセスが簡単になって、 DBを単なるストレージのように扱えるが、本当はSQLデータベースに向いてない使い方も されているんではないだろうか、という指摘。

あと、毎秒11,000アクセスってのは純粋にものすごい数で、 それってAPの設計の見直しでもうちょっと下げられるような気もする。

_ [Ruby] Why was Rails only possible with Ruby? - O'Reilly Ruby

「なぜRailsはRubyでしか可能にならなかったのか」という話。 TurboGearとかDjangoの人とかは「Pythonでもできたぞ」とか言いそうだけど。

それはRubyismのおかげだそうで、で、「Rubyismとはなにか」ということは、 『Rubyisms in Rails (Digital Short Cut) - $9.99』を読むとわかるんだそうだ。

そうかぁ。 $9.99かぁ。

_ [Ruby] InfoQ: Adding Properties to Ruby Metaprogramatically

Rubyのメタプログラミング機能を使ってプロパティやプラガブルタイプを実現する、 という話。

ところで、例題に

property :speed {|v| v >= 0 && vn< 300  } 

というコードがあるが、これはSyntax Errorになる。 これはRubyのパーザーが「:speed {|v| v >= 0 && vn< 300 }」をメソッド呼び出しと 解釈しようとするからだが、数値、文字列、配列、シンボルなど 識別子以外のものの後ろのブレースの優先度が高すぎるのが原因だ。

ということで、1.9の文法を少々いじって、文法エラーでなくすことにした。


2007年04月20日 [長年日記]

_ Win-Win関係を築くことについて

先日の挑発的なエントリは、ざっくりまとめると

  • 仕事上の苦労は昇進に直結しない(むしろじゃまになる)
  • 仕事上の苦労が将来報われるということは期待できない
  • Win-Win関係の構築に真剣になるべき

ということであった。

しかし、その中で安易に「転職を考えた方がよい」と 書いたのは間違いであった。なぜならば、 会社とWin-Win関係が構築できていない場合、 その原因の大半はあなたの側にあり、 それを解消しない限り、 転職しても同じことの繰り返しになる可能性が高いからだ。

まず、最初にWin-Win関係とはなにか、についてまとめておこう。

スティーブン・コヴィーの『4906638066』によれば、 利害関係のある二者間での関係は、

  • 双方が得をするWin-Win関係
  • 一方が損をし、他方が得をするWin-Lose関係
  • 双方が損をするLose-Lose関係

の三通りがある。当然Win-Win関係が理想だが、現実にはなかなかそうもいかない。 しばしば、Win-Lose関係や、Lose-Lose関係に陥ってしまう。

経営者とプログラマの関係は、 仕事をしてもらって給料を払うという観点からは双方が得をする Win-Win関係と捉えることもできるが、 仕事と報酬がバランスしていない場合には、 簡単にWin-Lose関係になってしまう。

ここで重要なのは一方がWinしているかどうかという基準は 多分に主観的であるということである。 つまり、給料が安くても仕事内容が充実しているために満足している場合もあり、 逆に給料が高くても精神的なストレスなどのため仕事に不満があるケースも珍しくない。

このことを考えると、あなたが仕事上、正しく扱われていないという不満を持っていても、 それは必ずしも上司があなたから搾取しようと考えているわけではない。 彼らは、おそらく以下のいずれかである。

  • あなたの不満に気づいていない
  • あなたの不満に関心がない
  • Win-Win関係が維持できていると思っている

満足が主観的なものである以上、口を開かないで理解してもらえることは まったく期待できない。

この状態で不満を内に持ちつづけることは非常に生産的ではない。 もちろん、予算が無限にあるわけではない以上、 報酬など待遇にも一定の限度があるわけだが、 少なくとも交渉する余地はあるはずだ。 コミュニケーションは重要だ。

あなたの不満は伝わっているだろうか。 あるいは上司はそもそも聞く耳がないのだろうか。

十分なコミュニケーションを行っても、なおなんらかの事情で 妥協する余地が見いだせない場合には、はじめて転職が有効な選択肢として登場するだろう。 いきなり辞めるのでは、それこそLose-Loseの関係である。

_ [Ruby] 「Ruby開発者との交流も魅力」,松江市が「8年間家賃半額」でIT企業を誘致:ITpro

いつのまにそんな話が。

いや、IT関連企業の誘致のために家賃補助というのは、 過去にも似たようなことをしているわけだし(たとえば松江市には電気代補助制度がある)、 そんなに珍しいわけではないのだけれど、 「まつもとと交流」なんてのが「魅力」として登場するというのは 予想の範囲を越えている。

まあ、みなさまの「地域資源」ですから、よしなに活用してくださいませ。

_ [言語] How Common Lisp sucks - comp.lang.lisp | Google Groups

「Common Lispはいい言語だけど、ダメなところもあるよね」という話。

具体的には

  • 近代的な機能に対する標準APIがない(データベース、他言語インタフェースとか)
  • lisp-2としての性質は変えようがない。DSLとして向かないこともある(ただ、これは無茶な話だと思うけど)
  • いくつかの関数名がダメすぎ。ELTはNTHの機能を包含しているし、引数の順番が逆。集合の差分はSET-DIFFERENCEなのに共通部はINTERSECTIONだったり。

とか。些細なことだといえば、その通りだが、 それが気になるくらい他の部分が良いといえば、前向きだろうか。

_ [Ruby] 『0976694093』

角谷さんから献本していただいた。

これは良い本だ。おおむね以下のような本だと言えよう。

  • 新しい技術を冷静にキャッチアップする技術(手順)
  • マネージャにRubyを紹介するための理論武装
  • 「Rubyの良さ」の再確認

だから、もっとも重要な点は「Rubyについて」ではない。 あらゆる新しい技術に応用可能だ。

個人的には、私が趣味としてはじめたRubyについて こんなに真面目に「仕事として使う」ことを考えてくれる人がいる ということだけで、胸が一杯になった。

あと、角谷さんが正誤表を含むサポートページを開設している。


2007年04月21日 [長年日記]

_ [Ruby] 島根大学が「オープンソースと地域振興」を開講,Rubyのまつもと氏も登壇しテキストも公開:ITpro

島大の野田先生が中心になってやってる講座。 4月からもう始まっているが、ITproで報道された。

私も6月末に一回教えることになっている。 これの事務手続きが異様に面倒だったが、それも片づいたし。 いちおう、非常勤講師という扱いになるらしい。 また肩書きが増えた。

_ 肩書き

肩書きで思い出した。

私の肩書きが4月から「(株)ネットワーク応用通信研究所 フェロー」になっていたのだった。 今までの「特別研究員」とどこが違うのかというと謎なんだが。 辞書を引くと「Fellow」とは「特別研究員」のことであるそうだし。

どうも、Rubyが広まってビジネスの中心が移動するのにともなって、 私にインパクトのある肩書きをつけたかったという社内事情があったようだ。

まあ、いいや。肩書きで仕事するわけではないし。 名刺を作り直した以外には別に私自身には変化はない。

_ [OSS] 10 golden rules for running an open source project - Lot 49: Greg Beaver's blog

オープンソースプロジェクトをうまく運営するための10のルール。

  1. If you must criticize, criticize with a gentle and humble tone
  2. Unless the evidence suggests otherwise, assume that users you don't know are not interested in committing to the project
  3. Despite the evidence, it's probably your fault
  4. Follow the rules you apply to those with lower karma!
  5. Don't apply new rules casually, and simplify if possible
  6. Assume everything you ever say will become permanent and don't say things that will come back to haunt you
  7. People like to improve their code, and like coding standards
  8. Assume there will be politics, and plan for them
  9. You have two audiences: developers and users
  10. Dream big, baby. Plan for the future

必ずしも全部に賛成するわけではないが、 人間系が重要である点には同意する。

_ [Ruby] BlogFranz: Ruby, Python, and an XML-RPC Server Arbitrary Shell Command Execution Flaw

Rubyのxmlrpcライブラリにはセキュリティ上の問題があるのではないか、という指摘。

要するに任意のメソッドが呼べちゃうよね、ということなんだが、 確かに呼べるメソッドに制約を与えないとまずいこともありそうだなあ。 xmlrpcには詳しくないんだけど、制限できるんだっけ。

あとdRubyではどうしてるんだろう。


2007年04月22日 [長年日記]

_ [教会] 松江

聖餐会では「什分の一」を中心に経済的なこと。 金銭にまつわる聖句は思ったよりも多いということなどを含めて。

日曜学校原則クラスは「選ぶ自由」について。 我々の生得権である「選ぶ自由」と、その目的、効果、活かし方。 私が教師だったが、むしろ大変為になる話を聞かせてもらった。 子育てとか。


2007年04月23日 [長年日記]

_ [Ruby] g-squidの日記 - Ruby プログラマは引っ張りだこ

Second Annual Silicon Valley Ruby Conferenceでは、 Rubyプログラマへのリクルーティングが盛んであった、という話。

日本でもそういう傾向は見えつつあるが、 まだ、「Rubyプログラマ優遇」とか「高給保証」とか、そこまでは届いていない。

つか、そういうところまで持っていきたいものだ。 待遇改善には原資が必要である。

_ lambda.oasis: Observations from DATE 2007

DATE 2007カンファレンス(EDA関連の最大のカンファレンス、EDAってなに?)で感じたこと。

  • Parallelism is a must. (並列性は不可欠)
  • Transactional memory, although very cool, doesn't scale. (トランザクションメモリはクールだがスケールしない)
  • Compilers should cost money, more so than they do today. (コンパイラは今よりもお金がかかるようになる)
  • C no longer fits the model of computation. (Cはもはや計算モデルに合わない)
  • Platforms are no longer reliable. (プラットフォームはもはや信頼できない)

システムの規模が大きくなるにつれ、挙動と性質が変化しつつあるということだと思う。 賛成する。

_ [Ruby] On Ruby: April Bloggin Contest

「Pat Eylerのブログコンテスト」、4月のテーマは「未来のRuby」。

What Changes would make Ruby a better language without making it into something that isn't Ruby?"

Rubyを「Ruby以外のもの」にすることなく、Rubyを良くするアイディアについて。

最優秀の人にはApressから好きな書籍をもらえる。

気がついたのが遅かったので(もう月末までわずかしかない)現時点でも結構集まっている。

中には明らかにRubyらしさを失うものも(optinal static typingとか)あるが、 耳を傾けるべきものも多い。が、interpreter lockなしのnative threadingとか、 気持ちはわかるが、実装は無理なんじゃないかと。

_ [言語] Phil Dawes’ Stuff >> Blog Archive >> Gambit-C namespaces

Gambit-Cのネームスペースについて。

(namespace ("f#" foo) ("b#" bar baz))

と宣言しておくと、そこから、fooはf#fooに、barはb#barになるので、 ライブラリのロード前にnamespace宣言しておく、というもの。

簡単で、ある程度効果的なのは認めるけど、なんか違和感がある。

_ [言語] spoon - NetJam.ORG

Smalltalkの新しいオブジェクトシステム。 Squeakの「フォーク」だから「スプーン」という名前付け。うーむ。

クラスのアンロードができるため、とても小さなメモリイメージを作ることができる のが特徴だとか。実際、最少のイメージは1,337バイトだとか。小さい。

_ [言語] Lemonodor: Why Lisp is Different

「なぜLispは違うのか」。

CやJavaの観点からLispを見ているんだと思う。 「悪い」と言ってるわけでなく、「違う」と言ってるところが重要なんだろうな。

しかし、これらの指摘の一部は実は動的言語でも共通なわけで、 それが別に問題になってないように見受けられることを考えると これらの違いの多くはさほど問題ではないということだと思う。

とすると、...やっぱり括弧か。

_ 世界へのマドルスルー(5)“平凡で強い”は摸倣困難な競争優位:ITpro

京セラが極端な違いはないのにやっぱり強い、そのことは素晴らしい、という話。

理想的な態度だ。 細部の細かな使い勝手の蓄積によって全体的な強さが構築できるということなのだろう。

Rubyもどこが良いのか言語化できないのに強いというのと 似た性質である....のだといいな。


2007年04月24日 [長年日記]

_ [Ruby] Rubyのロードマップ

東京へ移動。今回はいくつかの用事を果たすためだが、 その一つがダイビルでの笹田、中田、まつもとのミーティング。

未踏としての結果を出すためにもロードマップを作る、 というテーマなんだが、普段からロードマップとは無縁の生活をしてるので すぐに脱線しちゃう。

なんだかんだといって決めたのがリンク先のもの。主要な部分は

  • 今後のスケジュール
    • 5末:まつもとさんがm17nベースを入れる
    • 6中:RubyKaigi前に合宿する? こさこさんを呼べるか?
    • 6末:鬼車をm17nにマージ?

といった感じ。

_ [Ruby] Rubyから始める開発経験もあり−−NaClがトレーニング拡充 − @IT

うちが提供するトレーニングプログラムのレパートリーが増えました、という話。

それなりに好評のようでありがたい。 売り上げとしてはそんなに多くはないのだが、 これまでの開催でも結構「次につながった」ケースもあり、 無視できない。

教育重要。

_ [言語] (The Scheme Way): An introduction to Termite

Scheme上にErlangの並列実行モデルを実装するTermiteの紹介。

論文だけだとわかりにくいところが実際のコードで見ると 把握しすい。 明示的にforkしているところはちょっと抽象度が低いけど、 「仕組みが見える」と考えると、それはそれで良いのかもしれない。

_ [言語] The Whole Enchilada: A Programming Language

なんともヘンな言語Enchiladaの紹介。

あらゆるものがImmutableな関数型言語であるEnchiladaは 分散や並列を意識して設計されている。 データ型はリストしかなく(!)、数値などもリストで表現する。 つまり、数は空の式n個を含む配列で表現する(!!)。

_ [言語] Amit's Thoughts: Lisp vs. Python: Syntax

Lispは単なる括弧(f x)が

  • 関数呼出しだったり
  • マクロ呼び出しだったり
  • 束縛だったり(let)
  • 名前のリストだったり(lambda)
  • リストだったり(quote)
  • その他の解釈をされたり(マクロの中)

文脈によって決定されるのがつらい、という話。

ま、そういう傾向はある。S式の解釈がプログラマブルであるところが、 Lispの最大の利点であるのだが、最大の欠点でもあるということか。

_ [言語] Python up, Ruby down: If that runtime don't work, then its bound to drizzown

Rubyに満足できずにPythonに移行したという話。残念。

  • WebアプリフレームワークRoachにはDBサポートがなかった
  • 自前Map/Reduceシステムがメモリトラブル(Mutexによるリーク; fastthreadで解決)。
  • MinGWでうまく動かないプログラムが

で3ストライクアウトだそうだ。うーむ。

その他にも「YARVが継続とグリーンスレッドをあきらめて、GCモデルは維持する」という判断に反対なのだそうだ。これは参考にしたい。が、現在のグリーンスレッドにはそれほどの価値はないと思うし、GCモデルによる問題はそれほど大きくないとは思う。継続は確かに痛いけど。

_ U-20プロコン実行委員会

今年も実行委員やります。


2007年04月25日 [長年日記]

_ ユメのチカラ: U-20プログラミング・コンテスト

同じU-20プロコンの実行委員、よしおかさんのエントリ。

今年も一杯応募があるといいなあ。

_ 社内の「変人」を見いだし躍進の原動力とする (新日本的経営の姿):NBonline(日経ビジネス オンライン)

変な人をうまく伸ばす、という話。

ま、「真のプログラマ」とか「ハッカー」とかいう人種は おおむね「変人」なのでそれをうまく使えるかどうかは この業界での差別化のために重要なのかもしれない。

とはいえ、変人ばかりでもなあ。

_ 結城さんと対談

『日経ソフトウェア』のご厚意で結城浩さんと対談。

なんか、話があっちに行ったりこっちに行ったりしたけど、 まとめる記者の人は大変だよなあ。

個人的にはとても楽しかった。 あと、結城さんはもっと線が細い人だと勝手に思いこんでた。 実際、私よりはやせてたけど。

_ [Ruby] Chris McMahon's Blog: make a change to Ruby

4月のブログコンテストのエントリを勝手に批評するシリーズ(その1)

要するにPerlみたいにメソッド定義がどこにあっても良いようにしてくれ、 という話。

気持ちはわからないでもないが、欠点がある。

  • ifで囲んでメソッド定義を条件分岐とかできなくなる
  • Rubyが基礎にしているLisp的実行モデルから離れちゃう

メリットよりはデメリットの方が多いんじゃないかな。

なお、余談だが、Rubyのごくごく初期のバージョンは def文でコンパイル時にメソッド定義していたので、 ここでの提案は実現されていた。が、結局今の実行モデルに直しちゃったんだよね。


2007年04月26日 [長年日記]

_ [Ruby] Improvements to Ruby (Jeremy McAnally)

4月のブログコンテストのエントリを勝手に批評するシリーズ(その2)

このエントリで提案するのは、オプショナルスタティックタイピング。

def my_method(Integer param)
  puts "Well, hello!"
end

で、

def my_method(param)
  do_something if param.is_a?(String)
end

の代わりをするというもの。 自分でも似たようなアイディアについて発言したことがあるので、 気持ちはわかるが、不採用。

まず、元々のis_a?を使ったスタイルそのものがDuckTyping的見地から とても悪いスタイルである「is_a関係でのチェック」になっており、 それを推奨する言語機能を追加することはありえない。 DuckTypingを捨てたらRubyの良い点(悪い点でもあるが)を捨てることになり、 言語の性質を変えてしまう。

なんらかのタイプチェックを追加するならば、 メソッドの保有関係によって行うべきだが、 method_missingを使っているものは単純なrespond_to?を使えないことなども考えると、 これも一筋縄では行きそうにもない。

結局、「Rubyのまま」という制約の下では、 なにもチェックを行わない単純なDuckTypingが最適という結論になりそうだ。

では、Rubyではないまったく新しい(動的型)言語で オプショナルな型チェックを追加するとしたらどのようにするべきか考えてみよう。

  • DuckTypingを活かすため、メソッドの保有関係でチェック。 型によるパフォーマンスチューニングについてはあきらめる(どうしても欲しければ、最初から静的型の言語を選ぶべき)。
  • 保持するべきメソッドの集合を表現する「なにか」を用意する。 この何かはオブジェクトかもしれないし、そうでないかもしれない。 これを仮に「インタフェース」と呼ぶ。
  • あるオブジェクトがインタフェースに適合するかどうかチェックするメソッド(or 手続き)を用意し、 型チェックではこれを呼ぶ。
  • 場合によっては、コンパイラがある変数に対して呼ばれているメソッドの情報を収集し、 自動的にインタフェースを作る、型推論的なことも可能かもしれない
  • method_missingはこの新しい型チェックと相性が悪いので廃止。 その代わり、respond_toとmethod_missingの両方を同時にフックするような 新しい仕組みを用意する(たとえば名前に対してlambdaを返すような)。

_ [言語] Arc in action (a.k.a. it's aliiiiive!) | Lambda the Ultimate

「Elvisは生きていた」ならぬ「arcは生きていた」。

アメリカではElvis Presleyが死んだことを認めず、 「いや、実は死んでない」とか、「実は宇宙に帰ったのだ」とか、 「ロッキー山中で目撃した」とか、よくわからない噂が流れることがあるのだそうだ。

本当か。

で、Elvisとは関係なく、 あんまり実物が出てこないものだから、きっと死んだものだと思われていた Paul Grahamのarcだが、どうやら生きていて、Y Combinator内部では実際に使われている らしい。しかも、「cons量を削減して2,3倍の高速化を実現」だそうだ。

「consを減らしたくらいで」と思わないでもないが、arcはそれ自身がCommonLispで書かれているそうなので、コンパイラとランタイム合わせたcons量は馬鹿にならないのかもしれない。

_ [Ruby] Hackety Hack

_whyによるRuby(とプログラミング?)の入門ツール。

Windows版しかないのでないので、試せなかった。 Webを見る限り、それなりに評判は良いみたい。

誰か試してみない?

評価記事も出ている。


2007年04月27日 [長年日記]

_ [Ruby] NullPointerFactory: Open letter to the Ruby Santa

4月のブログコンテストのエントリを勝手に批評するシリーズ(その3)。

「良い補完付きのIDEが欲しい」というもの。言語そのものとは直接関係ない。

IDEについては、NetBeansが頑張っていることは知られているわけだが、 Eclipse系でも

と結構な動きが出ている。Rubyのプレゼンスが上がるにつれ、 もっと良いものが登場して来るんじゃないかな。

_ [Ruby] DevDanke: ruby-improve

4月のブログコンテストのエントリを勝手に批評するシリーズ(その4)。

現在のブロックコメント(「=begin」から「=end」まで)に変わる新しいものを導入しよう、というもの。 提案されているのは「#*」から「*#」。

個人的にはブロックコメントの必要性はあまり感じていない。 ツール(たとえばEmacsのruby-modeでのruby-encomment-region)で 簡単に対応できるからだ。

たとえ導入するにしても記法はよく考える必要がある。 少なくとも「#*」では既存のコメントに重複するものがありそうだ。

_ [Ruby] djberg96: What would I change about Ruby?

4月のブログコンテストのエントリを勝手に批評するシリーズ(その5)。

ruby-talkの常連djbergによるもの。たくさんある。

  • Native thread support. Huge. Especially for embedding and extending the language.
  • SMP support - no giant interpreter lock. Also huge.
  • Unicode support, including the ability to parse some Unicode mathematical notation, ala Fortress.
  • Asynchronous methods.
  • Better regex engine.
  • AOP support (pre, post, etc).
  • Implicit getters and setters.
  • Refactor some of the core classes. Some methods are overwrought, and some are useless.
  • Behaviors (as per the Sydney definition).
  • Better project management. That means dealing with bug reports, patches, and RCR's in a timely fashion instead of letting them sit for years (or not responding at all).
  • Optional static typing, as a Behavior.
  • Transactions.
  • Atomic expressions.
  • Fine grained mixins.
  • Named parameters.
  • Make def return a (improved) Method object.
  • Anonymous methods via 'def'.
  • New parser. Goodbye yacc.
  • Structured warnings.
  • Class.aliased_methods.
  • Different License.
  • Better Proc/proc integration.
  • Make Windows NT a first class citizen. Drop support for Windows 95/98/ME/cygwin/mingw.
  • Along those same lines, limit support to production platforms, instead of trying to support every OS under the sun. That means MS Windows, Solaris, Linux, FreeBSD, AIX, HP-UX, and OS X. This will reduce maintenance and simplify the build process considerably.
  • Continuous integration on supported platforms so that we don't have to rely as much on preview releases to smoke out bugs.
  • Replace the autoconf based configure with something cross platform ala Perl's build script.
  • Much more thorough test suite.
  • Better documentation.
  • Include several RCR's from rcrchive.net - too many to list here.
  • Improved standard library:
    • Remove the Japanese specific libraries.
    • Remove the rarely used or outdated libraries (abbrev).
    • Integrate some libraries into the core classes (io-wait).
    • Remove Unix specific libraries (dbm, sdbm, gdbm).
    • Replace some libraries (getoptlong, etc, csv) with better/cross-platform versions.
    • Refactor/redesign existing libraries that need it (net-http).
    • Add new libraries that I feel would be useful to a wide audience (kirbybase, dbi).

Maybe

  • Traits.
  • Type inferencing (as a Behavior).
  • Selector namespaces.

いちいちコメントつけるだけでも疲れちゃいそうだけど、とりあえず、 1.9で(ある程度)やるものは以下の通り。

  • Native thread support. Huge. Especially for embedding and extending the language.
    • 一口にnative threadと言っても奥は深い。1.9のは「native threadを使うライブラリと共存できる」のが最大の目標。
  • Unicode support, including the ability to parse some Unicode mathematical notation, ala Fortress.
    • Fortress的なUnicodeの使い方には「No」
  • Better regex engine.
    • 鬼車でよければ
  • Better documentation.
  • Remove the Japanese specific libraries.
  • Remove Unix specific libraries (dbm, sdbm, gdbm).
  • Replace some libraries (getoptlong, etc, csv) with better/cross-platform versions.

曖昧すぎて何ともいえないが、(2.0以降)検討してみたいのは以下の通り。

  • Asynchronous methods.
  • AOP support (pre, post, etc).
  • Implicit getters and setters.
  • Refactor some of the core classes. Some methods are overwrought, and some are useless.
  • Atomic expressions.
  • Fine grained mixins.
  • Named parameters.
  • Make def return a (improved) Method object.
  • Anonymous methods via 'def'.
  • New parser. Goodbye yacc.
  • Structured warnings.
  • Class.aliased_methods.
  • Better Proc/proc integration.
  • Traits.
  • Type inferencing (as a Behavior).
  • Selector namespaces.

考えないといけないのはこれ。

  • Better project management. That means dealing with bug reports, patches, and RCR's in a timely fashion instead of letting them sit for years (or not responding at all).

もうちょっと良いissue trackingが必要だ。

_ [言語] StreamIt

Streamをベースにした言語StreamIt。

並列実行を最大化するために、 あらゆる計算をStreamでつなごうという試み。 成功するだろうか。

_ 「エヴァ」制作のガイナックス取締役、mixi騒動で辞任 - CNET Japan

赤井さんは同郷で(学校は違うけど)、高校時代に個人的に面識もある先輩なので こんな下らないことで辞任というのは残念で仕方がない。

_ [Ruby] The Ruby VM: Episode III

Ruby VMインタビュー・エピソードIII。 Multi-VMのこととか。

_ [Ruby] Ola Bini on Java, Lisp, Ruby and AI: Ye Zheng joins ThoughtWorks

Ola Biniに続いて、XRubyの開発者Ye ZhengもThoughtWorksに入社したという話題。

これってすごいことだと思うよ。 で、このままだとXRubyとJRuby周辺で協調と積極的な開発が進んで、 オリジナルRubyが置いていかれそうで、ちょっと危機感を感じたりして。 いや、1.9ももちろんそれなりに頑張っているんだけど。


2007年04月28日 [長年日記]

_ [言語] Unifying events and threads

Haskellでイベントモデルとスレッドモデルを融合した 新しい並列実行モデルを実装したという話。 Linux上のI/OベンチマークでNTPLよりも高速だったそうだ。 ふむ。

まだ論文は読んでない。

_ [Ruby] ITキャリア大図鑑:No.003・まつもと ゆきひろ|パソナテック(PASONA TECH)

「Rubyな生き方について」。 4/16から公開されていたが紹介するのを忘れていた。

改めて読み返してみると、私は変なキャリアを生きてるよなあ。 ただ、「自分の環境をデザインする」という考え方は 誰にも応用できる発想だと思う。

_ [言語] twitterブームの陰で注目を集める“Erlang” − @IT

Erlangの紹介。

@ITみたいなメジャーなサイトでErlangが紹介される日が来るとは。 しかも、私のエントリもリンクされてるし。

Erlangのやり方に時代がやっと追いついてきた、ということだと思う。 もっとも純粋に言語としてみた時のErlangは少々とっつきにくい。 記法にPrologの影響が強すぎるのかもしれない。 あと、エラーメッセージがぜんぜん直感的でない。

もっとも、最大のとっつきにくさは私の関数型言語への苦手意識という 非常に個人的なものなのかもしれない。

_ [言語] PragDave: A First Erlang Program

達人プログラマーDave Thomasによる最初のErlangプログラム。 これくらいなら別に難しくもなんともないんだけどねえ。

_ [Ruby] Headius: What Would I (Will I?) Change About Ruby

4月のブログコンテストのエントリを勝手に批評するシリーズ(その6)。 最後はJRubyのCharles Nutterのもの。

実際にRuby処理系を実装しているだけあって具体的。

  • Threading

    Thread#kill, Thread#raise, Thread#criticalをなくしたい。

    Thread#criticalをなくすのは規定路線。前二者はJavaのスレッドでは 提供されていない機能だからCharlesがなくしたいというのはもっともである。 これらはいずれもより抽象度が高い機能(timeoutとか)を実装するための道具 なので、それらが別の形で提供されるなら(段階的に)取り除いてもかまわない

  • ObjectSpace

    なくしたい(特にeach_objectとか_id2refとかだと思う)。

    _id2refについてはThread同様、上位機能(weakrefとか)が実装できれば 問題なし。そのために「_」で始まる名前にしてるんだし。

    残りはメソッドのうち、garbage_collectはGCをスタートするだけだから問題ないはず。 each_objectは悩ましいところだが、デバッグ用のオプションを必要として普段は動かないとかは 許容されるかもしれない。こういうのが必要なのはどうせハックだし。 後はfinalizer関係だが、これらはなくすわけにはいかないと思う。

  • $SAFE and tainting

    Charlesの意見は「これらはいらない」というもののようだ。 それなりに便利なのに。

    が、$SAFE=4のSandboxは_whyのSandboxのようなもので 実現すべきであるという意見はもっともだと思う。 $SAFE=1だけ残すというのが良いのかもしれない(2.0以降)。

    「Javaのsecurity modelにマップすべきだ」という主張は 私自身の知識が足りなくてイメージできなかった。 個人的にはJavaのsecurity modelには「繁雑」という印象しかないんだけど。

  • Direction

    非技術的なのであえて具体的にはコメントしない。 もっともなことだとは思う。

    • Ruby needs a spec.
    • Ruby needs a non-profit governing body.

2007年04月29日 昭和の日 [長年日記]

_ トイレ問題

教会のトイレが詰まった。 どうやらかなり奥の方で詰まったらしく、 男女共にすべてのトイレが使えなくなった。

こういう時こそ教会の雑用係を自任するビショップリック顧問(私)の出番である。

用具室から吸盤のついたアレ(なんて呼ぶんだっけ)を持ち出してきて トイレと格闘する。水は少しずつ流れているようだが、 なにぶん奥にあって圧力が届かないせいか、 どうにも流れが改善されない。

しばらく格闘した後、手の空いた人をつかまえて 二人で息を揃えて同時に圧力をかけてみた。

一回、二回、三回。...とうとう流れた。

みなさん、お疲れ様でした。

やはり、協力するものである。一人ではできないことも、二人ならできる(こともある)。


2007年04月30日 [長年日記]

_ 集合

近隣に住む一族(+帰省した弟)が実家に集合する。 総勢19名。多いな。だんだん増えてるし。

おしゃべりをしながら昼食。 楽しかった。 子供たちも(特に年少の子供たちは)、かなり楽しく遊んでいたようだ。 普段は最年少のうちの末娘も、ここでは少々お姉さん顔をしていた。

その後、墓参り。掃除と雑草抜き。

解散。

_ 買い物

で、うちの家族は帰宅前に米子の天満屋で買い物。

少々疲れて機嫌の悪いものもいたが、 ロフトで買い物、1Fでアイスクリームを食べて、 それなりに満足して帰宅。


最新 追記