最新 追記

Matzにっき


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

_ U20プロコン最終審査会

二次審査合格者を集めて、自分の作品についてプレゼンしてもらった上で 最終審査をする会。

年齢のことも考えるとみな驚くほどプレゼンがうまい。 作品の完成度も高まっているし、 私の「二極分化仮説」を実証してくれているようだ。

が、応募作品全般の完成度が高まったせいで、 「勢いだけはあるが完成度は低い」作品が審査を突破する確率は下がったように 思う。良いことなのか、悪いことなのか、私には断言できないけど、 すこし寂しい気がする。

_ 死なないために

Paul Grahamエッセイ。 成功するために必要な原則は「本気になる」、「やめない」ことである、 ということ。

「あきらめないことは才能である」ことと、どこかでつながるような気がする。

_ [Ruby] davidflanagan.com: Nifty Ruby Unicode codepoints utility

『JavaScript the definitive guide』のDavid Flanaganによる Unicodeトリック。要するにconst_missingのテクニックを使って

Unicode::U00A9

とすることで、\u00A9(copyright sign)を得られるようにする、というもの。

gemsにもcharescという類似のものがある。こちらもconst_missingを使っているのだが、

"abcd#{U6789u789A}"

"abcd\u6789\u789A"

が表現できるというもの。こっちの方がコンパクトか。


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

_ [教会] 第一日曜日

司会はビショップにお願いした。

日曜学校は聖餐について。 毎週聞いている聖餐の祈りの言葉の意味を改めてふりかえる。 微妙な言葉の違いに意味が隠されている、とかいうような話。

おなか空いた。


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

_ [Ruby] RubyアソシエーションがRuby言語公式ロゴのデザイン募集:ITpro

Rubyのロゴ、といえばRuby公式ホームページにある 「ブリリアントカットのRuby」が知られているが、 これは「ホームページのロゴ」なんだか「言語のロゴ」なんだかはっきりしないし、 それとして定着しているわけではない。

今回、Rubyアソシエーションのロゴは 決めたけど、これはあくまでも「組織のロゴ」なので、 「言語のロゴ」として使ってもらっては困る。

まあ、決定権はおそらく私(たち)にあるので、 「ブリリアントカットのRuby」こそが「言語のロゴ」である と宣言してもよかったんだけど、 話題作りのためにもコンテストを開くことにした。

我と思わん人は 募集要項を 読んでから、どしどし応募していただきたい。

注意点

  • 〆切は10月1日00:00(UTC)。日本時間だと1日の朝9時になる
  • 採用された人には賞金10万円(日本人じゃなくても)
  • その代わり、著作権は譲渡してもらう(CC BY-SAで公開予定)。
  • 私は、審査時に「誰が応募したか」はチェックしない。「どうぞよろしく」とかメールしないこと。

_ [OSS] Open Tech Press | GNU GPLv3 日本語訳

八田さんによるGPLv3日本語訳が出た。 今度こそ、ちゃんと読まないとなあ。

_ [言語] retlang - Google Code

Erlangに「インスパイア」された、.NET上の並列支援ライブラリ。

でも、ちらっとドキュメント読んだ範囲では、あんまりErlangらしくなかったような。 が、この辺(従来言語でErlang風味を実現)には興味があるので、 もう少し調べてみたい。


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

_ Full Disclosure: World's most powerful supercomputer goes online (fwd)

決してTOP500に載ったりすることはないし、 LINPACKの実行に最適化されてたりもしないけれど、 世界でもっとも強力な「スーパーコンピュータ」がまさに存在している。

その名はStorm。ワームなどで乗っ取られたコンピュータで構成される ボットネットである。

こわい、こわい。

_ [知財] 元麻布春男の週刊PCホットライン - DRMどころかEPNも嫌いだ

(EPNを含む)DRMが存在すると、ユーザは特定のPCやハードディスクに縛られてしまう。 それらが壊れるといっきにデータを失うことになる。 これは買い替え需要を減らす結果にもなり、結果として経済に悪い影響を与えかねない。

どうしてもDRMが必要だというのなら、やはりFairPlayやEPNのような方式にならざるを得ないだろう。この場合、一定期間を経ると暗号が解除される仕組みを組み込んで欲しい。5〜10年で暗号が自動的に解除されるのであれば、それまでの5〜10年間くらいは我慢できるかもしれない。

補償金とDRM、どちらか二択と言われれば、やっぱ補償金かなあ。 DRMは筋が悪すぎる。

法を尊重しない人なら、DRMを選択してクラックするんだろうけど。

_ 取材

取材を二件も受ける。 主に地域振興とかそういうテーマ。

確かに話題にはなってるんだけど、本当にお役に立ってるんだろうかと 不安にならないでもない。まあ、松江市の露出という意味ではそんなに悪くないか。


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

_ 取材

昨日に引き続き取材。なんでも中国地方ローカルのNHKニュースのコーナーで 取り扱ってもらえるのだそうだ。 どういう扱いになるんだか。

恥ずかしい。撮影はもうちょっと先。

_ [Ruby] Ruby needs a facelift - Blogs - Byte Club - Builder AU

Rubyロゴコンテストについて。

笑っちゃうのはこのロゴ。

まあ、実際。世間的にはRailsあってのRubyとみなされていることが多いと思うので、 そうでないことを明示的に示すメッセージを発信することにはなると思う。

我々としてもRailsの知名度を利用していないとは言えないので、 あんまり突き放すのも誠実な態度ではないか。悩ましいところである。

ま、とはいえ、だからといってこのロゴを採用したりはしないけど(エントリされてないし)。

_ [言語] Why is X not written in Lisp? or C, man, C!

Cを誉め称える記事、のように見えるが、 実際には言ってることと実際が全然違う、という記事。

ほめごろし?

まあ、こういう抽象化が必要なケースでは Lispにかなう言語はなかなかないよなあ。

_ [言語] Matasano Chargen >> Four C Programming Anti-Idioms

Cのアンチ・イディオム4つ。

  1. mallocの戻り値をチェックする

    failmallocの件とは正反対だが、たしかに多くのプログラムでは どうしようもないというのも事実だ。でも、例外が使えるなら raiseした方が良いと思う。

  2. void*をキャストする

    キャストを強制されるC++と違ってCのvoid*はそのまま代入できる。 こっちの方が良い(と著者は思っている)。

  3. 小さな構造体を参照渡しする

    もうオーバーヘッドは問題ない。どんどん使おう。

  4. mallocのsize指定

    sizeofの引数に型を指定すると変更箇所が増える。 式そのものを書くと型が変わっても対応できる。

賛成できるようなできないような。

_ [言語] Recording Artist: Microbenchmarking

マイクロベンチマークの使い方。

マイクロベンチマークっていうのは 実際のアプリでないベンチマーク向けのプログラムによって 性能を測定すること。

言語処理系(インタプリタとかバーチャルマシンとか)の性能を測定すること になるが、実際のアプリケーションではむしろライブラリの性能の影響の方が大きい。 ので、大抵の場合、マイクロベンチマークは不適切に用いられている。

まあ、世間の誤解ってのはなかなか解けないよね。

なら、それを逆に利用してしまおう。

今回、YARVでマイクロベンチマーク性能を改善することで 実は世間の「マイクロベンチマーク信仰」を逆手にとって マーケティング効果があがることを 期待している。

_ [言語] SQLAlchemy, Declarative layers, and the ORM 'Problem'

PythonのORMである、SQLAlchemyとElixirではSQLAlchemyを使うべきだ、という話

SQLAlchemyの例:

from sqlalchemy import Column, ForeignKey, MetaData, Table, types
from sqlalchemy.orm import mapper, relation

metadata = MetaData()

person_table = Table('person', metadata,
    Column('id', types.Integer, primary_key=True),
    Column('name', types.String, nullable=False),
    Column('age', types.String)
)

group_table = Table('group', metadata,
    Column('id', types.Integer, primary_key=True),
    Column('name', types.String, nullable=False)
)

persongroups_table = Table('person_groups', metadata,
    Column('person_id', types.Integer, ForeignKey('person.id', ondelete='CASCADE'), primary_key=True),
    Column('group_id', types.Integer, ForeignKey('group.id', ondelete='RESTRICT'), primary_key=True),
)

class Person(object):
    pass

class Group(object):
    pass

mapper(Person, person_table, properties=dict(
       groups=relation(Group, backref='people', lazy=False)
))
mapper(Group, group_table)

Elixirの例:

from elixir import *
class Person(Entity):
    has_field('name', String)
    has_and_belongs_to_many('groups', of_kind='Group')

class Group(Entity):
    has_field('name', String)
    has_and_belongs_to_many('people', of_kind='Person')

Elixirの方がだいぶActiveRecordっぽい。ひとめ見ると誰の目にも Elixirの方が魅力的に見えるが

  • How do you add a column to the many to many table to store an additional bit of info for the join?
  • Do they both enforce referential integrity?
  • How do you control whether SA is eager loading the relation? Can you restrict it to just one column of the relation?
  • What are the table names used?
  • How many tables are in your database?
  • Where do you change the id column name?
  • Which one is closer to the Zen of Python?

というようなことを考えると(うへー、またExplicit Better Than Implicitだよ)、 やはりSQLAlchemyの方が良い(と著者は考える)。

Leaky Abstractionの弊害については理解できないでもないけど、 ここまで表現の優劣が出るのに採用しないってのは、 それがPython的ってもんなのかねぇ。

_ [Ruby] RubyConf 2007 Preliminary Agenda

RubyConf 2007の暫定プログラムが決まった。

今年からはマルチトラックということだ。 RubyConfの成長曲線を考えるとある意味必然なんだが、 今までのRubyConfらしさを失ってしまいそうで、 少し残念な気がする。いや、変化も当然なので、文句を言っているわけではないけど、さ。

2日目の午前中のセッションがIronRuby, JRuby, Rubiniusと来てるんで、 YARVもなにか言うべきではないのだろうか。

同じ日に予定されている私のキーノートの時間をあげようか? > ささだくん


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

_ ITmedia +D LifeStyle:電話抜きiPhoneの「touch」、動画「nano」、大容量HDD「classic」−−iPodが全ラインアップを改訂

あんまり普段から(車の中以外で)音楽を聴く習慣がない私には iPodとか欲しいと強く思うことはないんだけど、 「電話抜きiPhone」であるところのiPod touchは PDAとして欲しい気がする。

あー、でもなあ。iPhoneと同じということは(ハックしないと)野良アプリは 動かないってことだよね。PDAとして使うには向かないかなあ。 PDAじゃないもんなあ。

そんな私はいまだにVisor Edgeを使っている。 先日壊れて予備機に移行したので、 新しい予備機を購入しなくちゃ。

ヤフーオークションに出てるかなあ。

_ [言語] From Rails to Django − Myles Braithwaite

RailsからDjangoに移行したらCPUやメモリの使用量が激減した、という話。

しかし、コメントでは「(別の)アプリを書き換えたらRailsのままでも使用量が激減した」という 話もあるから、いつもそうなるという保証があるわけではない。

_ [言語] Moonlight: Silverlight for Linux

MicrosoftがSilverlightのLinux版であるMoonlight(Monoで動く)を 提供するという話に関するTim O'Reillyのコメント。

Microsoftがオープンソースの信奉者になったとはとても思えないが、 その重要性を理解し、場合によっては協力しようと考えていることは 素直に認めてもよいのではないか。たとえ、その裏に利用しようという魂胆があるにしても。

ま、オープンソースを利用しようとしているのは 我々も同じことなのだから。

_ [言語] XMLに対するXPathのように - JSON用データアクセスライブラリ「JSONPath」 | エンタープライズ | マイコミジャーナル

この考えを発展させると、 任意の(Rubyの)オブジェクトをトラバースして オブジェクトを求めるXPathならぬRubyPathを作ることも可能だと 思うのだが、そんなのにニーズはあるのだろうか。

Enumerable#selectとかの代わりができて、 参照階層が深くてもいきなり取り出すことができるのだが、 それがどれだけ嬉しいかどうか、だな。

_ 台風襲来

明日はX-Devがあるので東京なのだが、 いやがらせのように台風が東京に向かって突き進んでいる。

というわけで、予定変更して一日早く東京入り。 夕方から雨が強くなってくる。

夕食以外、ホテルに閉じこもっていたわけだが おかげで少々遅れていた原稿が片づいた。 もっとも、今月はやや減ページなのだが。

ホテルでは静かだが外では大変なことになっているらしい。


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

_ XDev 2007

というわけで、イベント本番。 ホテルをチェックアウトしてそのまま地下の会場に降りるだけなので楽ちん。

最初のプログラムは脳科学者の茂木さんと平鍋さんの対談 であったのだが、平鍋さんがいきなり遅刻する。 台風の影響だそうだ。が、遅れは10分くらいでたいした影響は無かった。 動揺せず「アジャイルで行きましょう」としゃべりでカバーする茂木さん、かっこいい。

で、アジャイルっぽい話についていろいろ。 茂木さんが(ITにはそれなりに詳しくても)開発のことは ご存じないのを、想像力で上手に補完しているところが 面白かった。

その後、講師控え室で、 茂木さんや、(TRONの)坂村先生と名刺交換。 また、名刺ジャンケンに強そうなのをゲットした。

茂木さんと平鍋さんとで写真も撮影。 茂木さんくらい(テレビにも出てて)有名な人と一緒の写真だと 身近な人にも自慢できる。

業界の有名人とかだと、 本当はどんなにすごい人でも、私の家族とかピンとこないものね。 以前、アラン・ケイととった写真を見せて この人がどんなにすごい人か解説してもポカンとしていたものなあ。

ああ、私ってば、なんてミーハー。

_ [Ruby] 「Web 2.0時代のエンタープライズ開発」

で、午後は私の講演。

実はタイトルは先方の希望。 まあ、文句を言わずに承諾したので向こうが悪いというわけではない。

が、「Web2.0」も「エンタープライズ」も イメージ先行で明確な定義がない、どっちかっていうとマーケティング向け用語である。 そこを逆手に取ったプレゼンの流れとした。

内容についてはITProの記事「【XDev】「とりあえず作って,後から作り直せ」,Rubyのまつもと氏が語るエンタープライズ開発」に詳しいのでそちらに譲る。

結構乱暴な論旨だし、反発を感じる人もいそうな気がするけど(「お前なんかに何が分かる」とか、「客がそんなの受け入れてくれたら苦労は無いよ」とか)、 そこはそれ、現状に妥協して変化しない理由を探せば、いつもいくらだって見つかるわけで、 だから変化しなくても良いというわけにはいかないだろう、ということで。

_ ITPro Challenge

その後、併催のITPro Challengeに顔を出す。

70人ほどの箱なんだそうだが、この3倍の箱を用意すべきであった、と思う。 もちろん、主催者側の諸般の事情も承知しているわけだが。

全般に面白かった。感想は他の人に任せるが、 「みんな若いなー」という年寄りじみた感想を受けたということだけは 特筆しておこう。やっぱ、世代が違うんだよねえ。

飛行機の時間の関係で戀塚さんの話以降は聞けなかったのが残念だ。

_ [言語] coding, by Derek Young: Scala vs. Groovy: static typing is key to performance

ScalaとGroovyでRay Tracingプログラムを動かして、 その速度差はやはり動的型言語であるGroovyと(型推論付き)静的型言語であるScalaの 違いであると言う結論。

しかし、実際にプログラムを見ると、Groovy版も型指定してるんだよね。

となると、動的型、静的型の違いと結論づけるのはちょっと早すぎるかも。 どっちかっっていうと処理系の作りとか、そういうところに関係してそう。 あと、多用している浮動小数点数をどのようにwrapしてるかとか。

コメントを見るとGroovy版の遅い理由は以下のものが考えられるようだ。

  • 型指定: Groovyでは動的にチェックが追加されるのでかえって遅くなる
  • 浮動小数点計算: Float値ひとつひとつにオブジェクトが生成される
  • 浮動小数点計算: GroovyはBigDecimalで計算している

最後のはあんまりという気もするが、まあ、単純にそこまで手が届いてないのだろう。

ところで、Rubyも浮動小数点数は即値ではなく、オブジェクトとして 取り扱っているのでGroovyと同じ問題がある(が、Groovyよりはずっと速いみたい)。 最近はメモリも安くなっているし、VALUEがdoubleを中に含むことができる 96bit(packed)とか128bitとかの言語処理系を作ったら、 性能特性はどう変化するだろうか。

_ [Ruby] RubyConf 2007 - powered by RegOnline

RubyConf 2007の登録が開始された。 参加希望者はそろそろ活動を開始しないと、 ホテルの手配とか面倒なことになるかもしれない。

私は例年、主催者側にお願いしてて、楽ばかりしてるけど。


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

_ [教会] ステーク大会

新見へ。連日の疲れで眠たくなったので 途中、一度休憩した。

特に遅刻することもなく、無事到着。

_ [言語] システム開発生産性が最も高い言語:ITpro

その名はExcel、という話。

が、表計算がうまくはまるような局面では その分野に特化した「言語」の方が生産性的に有利であるのは 間違いないことだから、そのこと自体はさほど驚くことではない。

問題は

  • Excelは「安定」しているのか。 つまり、バージョンの変化によってどれくらい影響を受けるか。
  • Excelは本当に「最も生産性が高い」のか。 つまり、別の言語で同じ生産性を実現する余地があるのかないのか。

であろう。特に後者に関心がある。

Excelが(特定分野で)生産性が高いのであれば、 適切なクラスライブラリを提供することで Ruby(あるいは別の言語)も同等の生産性を提供できるのかどうか。 もしそうであれば、その「適切なクラスライブラリ」とはどのようなものか。

あるいは、Excelは「言語」として特異であって、 汎用の言語に機能を追加したくらいでは、その生産性を実現することは 困難なのか。

_ [言語] 新言語 Xtalを作る日記 - PseudoArray

Xtalにおいて、selectなどがPseudoArrayなるArrayのように振る舞うオブジェクト(その実態はイテレータの上に構築された擬似配列)を返すようになったという話。

Rubyでも同種のことがやりたい(から、LL魂のスライドでもそう書いた)のだが、 なかなか実現できないでいるところを、あっさり実装してしまう このスピード感が素晴らしい。

ちゅーか、なにか、年取って開発のスピードが落ちたということか。 そうか、そうなのかっ!?

_ [Ruby] 「Ruby 1.9は1.8より平均5倍速い」、YARV笹田氏 − @IT

昨日のイベントで裏番組だった未踏発表会のレポート。 5倍とか書いちゃってるよ。 嘘ではない、嘘ではないんだけど。

これがどう出るかは、未知数である。

確かに(マイクロ)ベンチマークを行えば平均5倍速くなるので、 「これは素晴らしい技術だ」と思ってもらえるのか(その場合の賞賛は、ささだくんに行くべき)、 あるいは、実際にアプリを動かしても、実際の速度差は アプリの構成(特にアルゴリズムの選択)やライブラリ実装に依存する以上、 体感5倍は出ないわけだから、「なんだ、言うほど変わらないじゃないか」と 思われちゃうのか。

なんとなく、世の中の流れ的には前者の方が多いような気がするんだけど。

_ News from the Front

ポール・グレアム最新エッセイ。 出身大学と成功には全然関係がない、という話。

裏を返せば、このようなエッセイが書かれるくらい、 アメリカでも出身学校による先入観ってあるんだね、やっぱり。 もちろん日本でも顕著なんだけど。


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

_ [教会] ステーク大会

今日は家族を連れて新見へ。

かねて予告されていた通り、ステーク会長会が再組織された。 新しく召された人は予想外ではあったが、納得のいくものであった。

語られることのない背景や彼らの決意を考えると 感慨深いものがある。 顧問のひとりは、私が子供のときから良く知っている人で、 なんだか時代の流れを感じたり。

親戚と若干の交流。

あと、配車で少しだけトラブルがあった。 担当としてはドキドキしたが、結局なんとかなったみたい。


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

_ [OSS] STR : THE FREEDOM BLOG >> Linux: A European threat to our computers

「フィンランド生まれのLinuxは、我々アメリカ人から技術的優位性を奪うためのヨーロッパからの脅威だ」という話。

最後まで読んでも「冗談だ」とは書いてない上に、 他の(非技術系)エントリもずっと同じような調子(噛みついて、馬鹿にして、侮辱する)なので、 もしかしたら本気なのかもしれない。

だとすると、アメリカ大衆の底力(っていうんだろうか)を垣間見たような気がする。 ダグラス・アダムズも言っていた。

真のバカでも使えるものを設計しようとして人々がよくやるミスは、真のバカのバカさ加減を過小評価することだ。

そういえばアダムズもヨーロッパ(イギリス人)だ。

_ [Ruby] Ruby 技術者認定試験の問題を予想してみました - Don'tStopMusic (2007-09-10)

大変面白い。

問題は担当スタッフが鋭意作成中であるが、 これも参考にできるかも(笑)。

とはいえ、実際の問題はもう少しストレートで優しいものになる予定。

_ NHK取材・撮影

今回はでかいビデオカメラが持ち込まれて実際の撮影である。

しかし、ほんの5,6分の番組のためにいろいろいっぱい撮るもんである。 そういえば、以前『クローズアップ現代』に未踏の件で数分映った時も おおかたまる半日かけて撮影したなあ。

一番感動したのはディレクターの人が持ってきた、 私が中学時代に使っていたシャープ PC-1210*1を持ってきたこと。 父親に借りたんだそうだ。まだ、保管してたのね。

二十数年ぶりの再会か。 電池と液晶がだめになってて、使い物にはならなかったけど、 とても懐かしかった。

*1  実際にはメモリ拡張されててPC-1211相当

_ 第9回 お客様視点? でも本当は売り手視点:ITpro

まあ、知らず知らずのうちに自分(作った人)の視点で商売しちゃうというのは しばしばあることだ。

面白かったのはここ。 Rubyが「とがった技術」の代表としてのイメージが(OSS業界の外でも)定着してる ということを示して面白い。

「長島さん、このソフトは最新のソリューションを盛り込みました。言語も今流行りのRubyを採用し、オブジェクト指向で・・・。このライブラリが・・・。さらにこの通信で・・・・・・」
「なるほど、なるほど。分かりました。それで、どれくらい販売されているんですか?」
「それが全く売れないんです。こんな良いソフトウエアなのに、どうしてでしょうか」

でも、そんなの関係ねぇ

_ [Ruby] 業務用途でRubyを使う上での課題 − @IT

パネルディスカッションで印象的だったのは、楽天の森氏も、CTCの小島氏も“Rubyの楽しさ”を強調したことだ。小島氏は言う。「Rubyを使うようになってから、プログラマが幸せそうに働いているんですよ。このインパクトは大きい。朝から黙々とキーボードを叩いている姿は、今日も会社に行くの嫌だなと思うのとは大きな違いです」。森氏も異口同音だ。「エンジニアが楽しそうで仕事が活発になった。Rubyが広がることで日本が元気になればいい」。

うーん、「楽しそう」なんて要素が業務向けの話でできるようになったというのは、 日本のIT業界も変わったと言うべきか。

もし、本当に変わったとして、もし、Rubyがその変化のきっかけになったのだとしたら、 それが本当に事実なら、作者としてこれより嬉しいことはない。

どんな賞よりも嬉しいかも。

_ steps to phantasien - sparsetable)

Google SparseHashのベースになっているSparsetableのデータ構造。

Rubyのコードを見て、やっと仕組みが理解できた(遅い?)。 大変巧妙にできている。

こういうアルゴリズムやデータ構造を考え出すことができる人ってすごいなあ。


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

_ [OSS] 【MySQL Users Conference】MySQL社がアジア初のカンファレンス開催

朝から東京へ移動。 MySQL Users Conferenceへ。

私はMySQLを尊敬してはいるが実際に使ったことはないので、 この話が来た時に断ろうと思ったのだけど、 ちょっと断れないコネクションで依頼されてしまった。

が、MySQLの「素晴らしさ」については、 きっと会場のユーザの方々の方がよくご存じなので、 しょうがない「オープンソース」の話をすることにした。

スウェーデン大使とか企業のえらいさんの挨拶が続いて 私の番が来た時にはセッション終了予定時刻まであと5分であった。 スタッフに「5分でいいですか?」と聞いたら、 「予定通り20分は話してください」とのこと。がっくり。

しかも、「堅い話が続いたので場を盛り上げてください」とのこと。 えー、そんなこと言われても。プレッシャー。

ま、何を言われてもできることしかできないわけで。 いつものようにユルいプレゼンを。それなりにウケた、のかな/

しかし、会場の同時通訳には素晴らしいものがあった。 実はプレゼンしながらイヤホンも付けて英語通訳も聞いていたのだが、 正直、訳すのが難しい部分も ちゃんと翻訳していた。通訳を聞いている人が(やや遅れて)ちゃんと冗談に反応するところが感動。

あと、DHHの名前はやっぱり発音しにくそうだった。

で、出番はこれで終わりではない。

私の所属するネットワーク応用通信研究所スマートスタイルNaClとスマートスタイル、「Ruby + MySQL」のソリューション事業で協業するということで、 いろいろと発表。

Rubyに強いNaClとMySQLに強いスマートスタイルで補完関係を構築しようということ。

_ チケット駆動開発 … ITpro Challenge のライトニングトーク (4)

先日のITpro Challengeで私が帰ってから行われたLTのひとつ。

チケット駆動開発というのは、増井さんのところでも語られていた。 やっぱ、記録という観点からも、意思疎通という観点からもこういうの 必要かもしれないなあ。

Ruby開発でも導入するかなあ。 なんども挑戦しては失敗してるんだけど。


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

_ 取材

今日だけで二件も取材を受ける。なんだか有名人になったみたい。

_ [言語] Logix

Pythonの文法を自由に再定義できるようにした新言語。 またはPythonバイトコードを吐くマクロ処理系。

が、1分で分かる紹介を 読んでもあんまりうれしい気がしないのはなぜだろう。

_ [言語] Redick - J in Scheme

APLの後継であるJの機能をSchemeで提供するという試み。

Jの配列演算ははまれば非常に生産性が高いのだが、 なにぶん演算子が難しい。JはASCIIで表現できるので オリジナルAPLよりはマシなのかもしれないが、 それでもまだつらい。

Redickについては、ユーザガイドを 読む限りでは(少なくともAPIは)見て覚えられるようなもののようだ。 そのぶん、簡潔さは失っているんだけど、write-only languageになるよりは 良いことなんじゃないだろうか。

SchemeでできるということはRubyでもできるということだよね。 誰か挑戦してみないかなあ。

_ ActionBox

GTD(Getting Thing Done)を実践するためのツール。

世の中にはGTDといいつつ単なるToDo管理ツールでしかないものは 数多くあるのだが、こちらは

  • 思いつくものを頭が空っぽになるまで書き出す(collect)
  • それを分類する(process)
  • 組織化する(organize)
  • タスクとする(task)
  • 完了(done)

という「ちゃんとした」GTDの手順にのっとっている。

私自身はGTDを身に付けてないので使いこなす自信は無いが、 自分の生産性をあげるためには有効なツールのような気がする。

actionboxはエントリ作成に重心が置かれていて、 その点は優秀なので、今後はタスクを眺めて「次のアクション」を見つける機能や、 リマインダ機能が充実するとよいんだろうな。 あまりそっちに重点を置きすぎると世にあるToDoツールとの差別化が難しくなるかもしれないけど。


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

_ スライド作成

ついつい後回しになっていたModelingForumのスライド作成。 前日だっていうのに大丈夫か(だって忙しかったんだもん)。

「モデリング」なんてやったことないので、 かなり場違いな感じがするが、 「なにを話しても構いません」と言われたので、 開き直って全然関係ない話をしようと思う。

最近、エンタープライズとかビジネスそういう話ばかりなので、 いっそ思いっきり「言語おたく」全開の話をしよう。

_ [言語] It isn't Easy to Remove the GIL

Guido van Rossumが「GIL (global interpreter lock)を取り除いてくれ」という公開メールに 対して「言うほど簡単じゃないんだよ。以前やってみた時には大幅に遅くなったし」と 返事した、という話。

それはYARVでも同じこと。1.9になってもlockが無くなる予定はない。 理由もほぼ同じで、

  • 性能が向上する保証がない(むしろ低下する自信がある)
  • C extentionの多くはthread safeじゃない
  • C libraryにもthread safeじゃないものは多い

という状況でそう簡単にGILを消去できるとは思えない。 Guidoじゃないけど「じゃあ、まず自分でやってみて」と言いたい気持ちは分かる。

一方、JVM上のPythonであるJythonにはGILは存在しなくて、 「同一マシン上であればParallel Pythonよりも高速」だったりするわけだが、 これはJavaの場合、基本的ライブラリがthread safeであると確信できることが大きいんだろう。

あと、JVMの実装が優れているというのもあるだろうけど。

ここでJythonでできてるんだからCPythonでもできるだろうというとは 短絡的すぎる。

_ [Ruby] [OOP] OOエンジニアの輪! 〜 第 38 回 笹田 耕一さんの巻 〜

ささだくんインタビュー。

そういえば、ささだくんってこれまであんまり自分のこと語ってないよね。 私なんかあちこちで自分のこと吹聴しまくってて 個人情報漏れまくりなのに。

大変面白かった。

_ [Ruby] err.the_blog.find_by_title('Even More Ambitious')

構文木を参照することでSQLを生成するライブラリAmbitiousの続報。 高速化、個別DBMS対応(MySQLとPostgreSQL)、gitによるリポジトリ公開など。

引き続き注目していきたい。あと、1.9でこれらがどうなるかについては 我々が考察せねばなるまい。構文木ってなくなっちゃうよねぇ。

_ [OSS] 韓国でオープンソースの利用が進まない理由は本当に英語?:日経パソコンオンライン

韓国では「韓国人は英語が苦手だからオープンソース利用が進まない」と言われているが、 韓国人よりもさらに英語が苦手な日本では結構進んでいるのではないか、という話。

でも、韓国で「オープンソース利用が進んでいない」という印象はあまりないんだけど、 韓国内にいる人はそう思うのかな。少し前まではWindows全盛という話は聞いていて 政府や大企業のサイトがActiveX使いまくり(なのでWindows以外ではネットバンキングも 政府サイトアクセスもできない)という状況だったそうだけど、 今ではずいぶん改善されているんで無かったかな。

各郵便局に配置されているという公衆端末はLinuxらしいし。

しかし、そんなことよりなにより印象に残ったのはここ。

日本だって英語が苦手な人が多いのに、韓国のマスコミの報道によると5000人以上のOSS開発者がいるという。韓国では100人にも満たない。

確かに韓国発のオープンソースソフトウェアについて聞いたことはないが、 それは言語の壁に遮られているせいだと思ってた。

国全部で100人以下? マジで?

どういうことだろう? 確か韓国って3千万人くらい人口があるんだよね。

利用が進むのは勝手だが、利用ばかりで開発に回る人が少ないのは あんまり望ましいことではないなあ。


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

_ モデリングフォーラム 2007

先日も書いた通り、「好きに話してください」と依頼されたので好きに話してきた。 タイトルも「Rubyからのメッセージ」。 要するに「言語おたく」全開の話(ほんとはちょっとセーブしてるけど)。

モデリングな人々置いてきぼりのような気がしないでもないが、 そこはそれ。メッセージをから意味を読み取るのはレシーバの責務ということで。

責務と言えば、前日のキーノートは 「Responsibility Driven Approach」のRebbecca Wirfs-Brockだったのだそうだ。 彼女のファンとしては惜しいことをした。

_ 仕事耕具:“旧ソ連の発明法則”でアイデア出し──「智慧カード」 - ITmedia Biz.ID

これすごい。

物体は軽くすれば強度は弱まり、強度を強めれば重くなることが多い。この「物体の重さ」と「強度」の項目もマトリックスの縦と横に入っており、その交差する部分には「非機械的なシステムで機械的なシステムを交換する」「高価で耐久性のある物の代わりに、経済的で寿命の短い物を使う」「機械的振動」「複合的な物質」といった4つの技術的ブレークスルーが書かれている。このブレークスルーをヒントにすると、いいアイデアが産まれる──というわけだ。

うむ、これに従うだけで技術的ブレークスルーを実現できる(可能性が高い)、 というわけだ。

しかし、このような技術的ブレークスルーって ソフトウェアにもありそう。こういうのをきちんと蓄積していくことで ソフトウェア開発の進歩が速められるかも。

たとえば、メモリと速度がトレードオフの関係になっていることから、

  • 副作用のない処理をキャッシュする
  • 速度の遅いディスクの代わりに速度の速いメモリを使う
  • メモリを大きなチャンクで切り出してくる
  • 計算をテーブルで置換する。あるいはその逆

とか。うーん、いまいちだが、まずはとっかかりとして。

_ [知財] 「フェアユース」の経済効果は4兆5,000億ドル、米業界団体調査

締めつけることしか考えてない近視眼的な権利団体の連中に読ませてやりたい。 いや、読んでも信じないんだろうけど。

私は(もともとそんなにこだわってないし)新しい音楽とテレビには そろそろ見切りをつけはじめている。 だって生活必需品じゃないんだもの。

_ [Ruby] urekatのスカンク日記3 - Softbank 705SHからUTF8で絵文字が来ましたCommentsAdd Star

うわぁ、UTF-8で絵文字かぁ。 ケータイの世界はなにが起きるか分からないなぁ。

なんとなく「イヤな臭い」がする。 きっと将来苦労するんじゃないだろうか。


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

_ [Ruby] Rubyのダイエット (PDF)

akrさんのLinux Conferenceでの発表スライド。 如何に1.9で(akrさん主導で)ダイエットが行われたか、の記録。

akrさんのおかげで、1.9では以下のようなメモリ削減が行われた。

  • 3要素までのStructのインライン化
  • 11byteまでのStringのインライン化
  • インスタンス変数5つまでのObjectのインライン化
  • 空Hashのインライン化
  • ±296-1までのBignumのインライン化
  • Rangeのインライン化
  • 3要素までのHashのインライン化

私自身のダイエットもこれくらい進んでほしいものだ。

スライド前半のRubyのオブジェクト構成の説明も (Rubyの中身に興味がある人には)有益な解説だろう。

_ [Ruby] Scaling Twitter: Making Twitter 10000 Percent Faster | High Scalability

Twitterのスケーラビリティに関する情報まとめ。

Twitterの瞬間最大11,000アクセスというのはおおげさに伝えられているが、 平均毎秒600アクセスというのも興味深い情報。 これは楽天の個別サービスのアクセスよりも多い。

また、それを実現したテクニックなどについてもまとめられている。

_ [言語] Smalltalk Industry Council

「STIC is the vendor neutral Smalltalk lobby organization」なのだそうだ。 今まで無かったのが不思議なくらい。

2008年6月18-21日にSmalltalk Solution 2008というカンファレンスも開催するそうだ。

Rubyアソシエーションもちゃんと仕事しなくちゃなあ。 やりたいことは沢山だが、できることは限られている。

とりあえずロゴコンテストの応募は沢山集まってるけど。

_ [言語] Neil’s point-free blog >> Statically Checked “Duck Typing” in Scala

Scalaのstructural conformanceについて

def test(f: { def getName(): String }) { println(f.getName) }

と書けば、testメソッドはgetNameというメソッドを持つ任意のオブジェクトを (DuckTyping的に)引数にとりつつ、静的な型チェックも行える、という話。

もう一歩進んで

def test(f) { println(f.getName) }

だけで、

  • f.getNameを呼んでいるからfにはgetNameが必要
  • printlnの引数になっているからgetNameの戻り値は文字列

とかまで推論できるとかなりうれしいのだが、 いくら型推論言語でもシステム全体をそれで通すわけには行かないだろうなあ。

_ [言語] 並列パフォーマンス: マルチコア コンピュータ用にマネージ コードを最適化する -- MSDN Magazine, October 2007

C#における並列パフォーマンス実現機能。 C#から離れて純粋にAPIとして見ても興味深い。


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

_ [教会]

都合でお休みになった人の代わりに 聖餐会でのお話が当たる。

時間配分が予想通りに行かなくて 持ち時間が予想の倍くらいになってしまい どきどきした。

あんまり緊張したんで前に話した妻のお話も あんまり覚えていないなあ。

日曜学校は安息日について。

「創造の7日目が安息日のはずなのに、 現代のクリスチャンは週の最初の日である日曜日を安息日としているのはなぜか」 とかいうような話も含めて。


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

_ [Ruby] 中京大学公開講座「世界に広がるRuby」

という講演をすることになった。 名古屋は久しぶり。

場所は前の職場のすぐ近くである白川公園。

っていうか、名古屋の地下鉄にはこの講座のポスターが貼ってあるのだとか。 すっげー。

まるで有名人みたい。

_ [Ruby] 日経地域情報化大賞2007にRuby City MATSUEプロジェクト

松江市のRuby City MATSUEプロジェクトが日経地域情報化大賞を受賞した、という話。

今回受賞したのは松江市で私は間接的な役割しか果たしていない。

とはいうものの、松江市にそのようなアクションをとらせるきっかけくらいには なっているわけで、そのことについては素直に喜びたい。

Ruby City MATSUEプロジェクトの成果がこれまでどのくらい上がっていて、 今後どうなるかということを正確に述べるのは難しいけれど、 「松江市の広報」という観点からは大成功ではないかと思う。

_ [OSS] BSD Licensed PCC Compiler Imported

GPLライセンスで、かつコードが複雑になってしまったGCCに代わって 懐かしのPCC (Portable C Compiler) がOpenBSDに取り込まれた、という話。

もちろん、PCCと言っても古いままじゃなくて、 ANSI styleにも対応しているし、 C99対応も進んでいる。 理論上はPDP11でもコンパイルできるはず。

やるな。

_ [Ruby] Ruby on Rails講師養成講座

「Rubyの講師になりたい人への講座」。

なんだかメタな話だが、ユーザを増やすためには教えることができる人が 増えなければだめだろう、ということでの試み。

三鷹ICT事業者協会が主催した上で、 RA認定資格まで取れる、と。

もっとも当面手に入る認定資格は、「講師」にはちょっと物足りないレベルだろうけど。

_ [Ruby] 3rdRail

「CodeGearのIDE」は3rdRailという名前になった。 「第三軌条」という意味らしいんだが、 鉄道に詳しくないんで、それがどういう意味なのかよく分からない。

と、書いとくと、鉄分の高い人が解説してくれるかもしれない。


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

_ [Ruby] まつもとゆきひろ氏やソフトイーサに経済産業大臣表彰,情報化月間で

なんだかまた表彰していただけるそうです。 しかも、今度は経済産業大臣に。..って今誰だっけ*1

誉めていただけるのはありがたいことだし、 「なにやってるか分からない人」という周囲からの評価を改善するのに役立つから 今回もありがたくお受けしようと思うのだけど、 なんだか世間での評価と私の実態が乖離しているような気がするなあ。

他にもたくさんの人や企業が受賞する。登くんのところとか。

*1  甘利明さんですって

_ 「猫の司書さんはかわいい働き者」---U-20プログラミング・コンテスト,最終審査結果発表

で、この表彰を受ける同じ日、同じ会場でU-20の表彰も行われる。 で、私も(若者に向けて)話すことになっている。

テーマは「プログラマの内なる衝動」。

ところで、表記の記事では「私が年齢を詐称して応募しても入賞できないかもしれない」と の私の発言が引用されている。確かにそう言ったのだが、 正直、「できないかもしれない」ではなくて「間違いなくできない」だろう。 自信がある。ネガティブに自信を持ってどうする、という気もするが。

_ [言語] C REPL

REPLとはRead-Eval-Print Loopの略。 Lispでは一般的だが、Rubyでもirb(interactive Ruby)が実現しているもののこと。

C REPLはC言語のためのREPL。高林くんのアイディアを具現化したもの。 要するに入力された各行をDLLにコンパイルし、 成功したらサブプロセスにロードさせて実行するというもの。

バイナリハックかくあるべし、という感じ。


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

_ [Ruby] REMIX'07

マイクロソフトのイベント。 なぜか招待されている。

ITProでレポートされている。このレポートには「研究テーマとして研究」というよくわからないフレーズがあるが、 私が発言したものではない、念のため。

しかし、日本で一番マイクロソフト製品を使っていないエンジニアであろう 私に講演を依頼するとは、マイクロソフトもなにを考えているのだろうか、 と思ったのだが、これはこれで面白い企画だろうと思って参加した。

内容的には「Rubyとエンタープライズ」とかいうような ここの所よくしゃべっている内容だけに新規性は無かったと思う。 その辺を期待した人には申し訳ない。 むしろ、ModelingForumの方が新しい内容があったかも。

個人的に良かったのは、講演前に控え室で、次のセッションの話者である (DLRの責任者でJohn Lamのボスである)Mahesh Prakriyaと話ができたこと。 個人的にデモまでしてくれた。

些細なことではあるが

C#やPythonの文字列はimmutableだし、逆にRubyの文字列はmutableだけど DLRではその辺どうするの>

と聞いてみた。答えは

まだ決まってない。IronRubyはまだとりあえず動くレベルで決まってないことは多い。 おそらくはmutableな文字列とimmutableな文字列の両方を用意するんじゃないだろうか

とのこと。

その他、いろいろな話(IronRubyやDRLのゴールとか、マイクロソフトで働くこととか)を 聞いたのだが、たぶんなんでもかんでもブログに書いてはいけないのだと思う。

とても楽しかった。

_ [Ruby] プログラミング言語「Ruby」の資格認定試験を開始

というわけで、世間で噂(?)の認定試験の詳細がとうとう発表になった。 問題はまだ完成してないけど。

Ruby認定制度とは

Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師などを対象とした認定試験制度です。

認定者は、Ruby技術者としての技術力を公正に評価され、高い水準のRubyによるシステム開発能力を持つことを認定されます。 この認定によりRubyベースでシステム開発を行ううえで必要な基礎的な知識と応用力をもつことをアピールすることができます。 試験の合格者は、Rubyアソシエーションにより『Ruby Association Certified Ruby Programmer』として認定されます。

試験の目的

  • Rubyの学習・教育において、到達目標となるような技術レベルの基準を示す
  • Ruby技術者が技術力を確認し、他者にアピールする基準を示す
  • 企業などのRuby技術者の採用(雇用及び開発委託)に際しての判断の基準を示す

認定試験の概要

Ruby技術者認定試験は、Rubyアソシエーションにより委託されたCTCが、受験者のRuby技術者としての技術力を公正に評価するために実施します。開発業務においてRubyを使用するための幅広い技術力を計ることができます。

Ruby Association Certified Ruby Programmer認定資格は、今後複数レベルのスキルに対応して認定することを想定しています。

認定試験合格者には、Rubyアソシエーションが発行する認定証が交付されます。

試験実施要項

  • 試験時間 : 90分 14:00−15:30予定(13:00受付開始)
  • 試験内容 : 第1回〜第3回(ペーパー試験)、選択式、出題数50問
  • 費  用 : ¥15,750
  • 第1回試験: 2007年10月27日(土) 松江会場:テルサ松江
    〒690-0003 松江市朝日町478-18(JR松江駅前)
    ※募集期間:2007年9月20日(木)9:00〜10月19日(金)12:00申込締切
  • 第2回試験: 2007年12月1日(土)東京・松江の2会場で開催(予定)
  • 第3回試験: 2008年1月19日(土)東京・松江の2会場で開催(予定)
  • 申し込み : 次のホームページよりお申し込みください。  http://www.school.ctc-g.co.jp/ruby/rubycertify

あ、そうそう。第1回の試験は松江会場でしか行われません。 また、初回を記念して、Rubyアソシエーション理事長から舞台挨拶があります。

_ [Ruby] [Think IT] 楽をする為ならどんな苦労も厭わない!

MySQL Users Conference会場でThinkITのインタビューを受けた時のもの。

っていうか、ビデオメッセージとかめちゃ恥ずかしいんですけど。 自分がしゃべってるのを聞くと落ち込む。こんな甲高い変な口調でしゃべってるんだねえ。 ああ、やだやだ。


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

_ [知財] 絵本の文章、無断で掲載…作家の寮美千子さんが提訴

私は著作権は大事だと思っている。ので、 通常のケースなら、自分の文章が無断で利用されることに対して裁判を起こす人の気持ちは分からないでもない。ただ、このケースには賛同できない。

絵本の文章をホームページや本に無断で掲載されたとして、奈良市在住の作家、寮美千子さんが18日、岩井国臣・元参議院議員に、侵害行為の差し止めと75万円の損害賠償などを求める訴えを東京地裁に起こした。

しかし、この「絵本の文章」は彼女のオリジナルではない。

訴状によると、絵本は1995年に出版した「父は空 母は大地」で、先祖伝来の土地を追われることになった米先住民の首長が1854年に行ったとされる演説を寮さんが翻訳、再構成した。

さて、オリジナルの著作者は(実際には確定ではないらしいが)先住民の首長であり、 1854年の演説と言うことは、この首長さんが相当長生きでも著作権は切れていると考えてよいだろう。

では、この「無断掲載」は寮さんの著作権を侵害したことになるか。

  • オリジナルに著作権は無くても翻訳(二次創作物)に著作権がないわけではない。
  • が、翻訳・出版を行った事実はパブリックドメインの文章に対する 独占的な権利を発生させない。
  • オリジナルは英文であり、そこから独立に翻訳したものに寮さんの著作権はおよばない
  • よって、「無断掲載」された文章が(文言が微妙に違うなど)独立した翻訳である 可能性が否定できない場合には、彼女の権利侵害とは言い切れない
  • 「翻訳・再構成」した彼女の独自の成果が明らかに「無断掲載」に反映されているようならば なにがしかの権利侵害が発生したといえないことはないだろう

とはいえ、パブリックドメインの文章を翻訳・出版しておいて、他人に損害賠償を求めると言うのは、どうにも納得が行かない

追記(2009-09-30)

コメントでusagitoさんから情報をいただいた。 無断使用に対する著作者人格権に基づいた謝罪要求に相当する提訴であると理解しました。 「謝れ」と裁判で要求するのは現実的じゃありませんからね。

私が今回納得できなかったのは「パブリックドメインからの二次創作物の財産権に基づいた損害賠償」なので、上記の「賛同できない」、「納得できない」は取り下げます。

_ [Ruby] Asianux Road Show 東京

というイベントで講演することになった。10月16日。 よしおかさんの頼みを断れなかったからだ。 人脈というのはこのように活用するのね。

しかし、せっかくの機会なのでもうビジネスの話は忘れて 技術っぽい話をすることにした。 ベースはModelingForumの時の話なんだけど、 より技術っぽい話(って言っても、私のことだから知れてるけど)にフォーカスしようと思う。

参加は無料。けど120人が定員だな。あまり多くはない。

_ [言語] メニイコア、ヘテロジニアスコアのプログラミング言語

この記事で解説されているようなものを「言語」とは呼ばないと思う、普通。 なんか、CPUインストラクションセットを言語と呼んでるような感覚。

でも、アプローチとしては面白い。 「言語」はこの技術を如何に抽象化し、隠蔽したまま、活用するか、 というところが腕の見せ所になる。

_ [Ruby] Devlog - FasterCSVよりもLightCsvよりも速いCSVパーサ CSVScan

Moonwolfさんのところ。

定番の郵便番号データをパースして行数をカウントするプログラムだと、FasterCSV比で19倍。LightCSV比で12倍の速さ。

というからたいしたもんだ。しかし、それでも「Pythonのcsvモジュールに比べると60%の速度」なのだそうで、「Pythonのcsvモジュールは化物か」という気分だ。

いや、専用にC extensionを書き下ろしてるからなんだけど。

_ [言語] PHPの性能を大幅に改善するFastCGI

先週のMySQL Users Conferenceでもらった資料を眺めているのだが、 PHPの性能を大幅に改善する技術としてFastCGIが紹介されている。 いや、そりゃ、FastCGIは有効な技術であるのは分かるし、 Rubyでもproduction codeではずいぶん利用されている。

が、そんなに新しい技術というわけでもないし、 2007年にマーケット色たっぷりにパンフレットを作って紹介する ようなものではないような。

PHPの(あるいはZend+Microsoftの)マーケティングは 日々耳にするWeb技術のトレンドからずいぶん「遅れた」ところを ターゲットにしているように思えるんだけど、 それっていうのは「PHPの現実」を意味してるんだろうか。


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

_ [言語] 竹内郁雄@Lispハッカーは、日本のゲルトミューラーだ/Tech総研

やっぱ、あのバイタリティにはかなわないよなあ。

なんだかひとつふたつ上の世代の業績とかを見てると 「とてもあの人たちにはかなわない」という気にさせられる。 もちろん時間をかけて積み上げてきたものがあるというのも事実だが、 それだけじゃない差を感じる。

うーむ。

_ [言語] soutaro#nikki() - 愚痴っぽい話

あとRubyは型無し(Untyped)な言語で良いような気がする。

ふむ。Rubyにおいて個々のオブジェクトが持っている「アノ情報」のことは型とは呼ばない ということなんだね。それはそれでかなり抵抗があるんだけど、なんでだろう?

型というのはあくまでも式に付属するものであるという観点から考えると いっそ「型無し」と呼んでしまって安全とみなす方が自然なのかな。

_ 楽天ミーティング

楽天のミーティングに出たら、ささだくんがいた。 世間は狭い。

松江に帰らねばならなかったので、夕方からの勉強会には出席できず。 残念だ。


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

_ 車探し

何件か車屋を回る。 なかなか気に入ったのはない。

どーしよーかなあ

_ ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - Changelogのための英文テンプレート集

RubyでもChangeLogエントリは英語で書くようになってひさしいが、 英語が苦手な日本人としては悩ましい場合もないわけでない。

このテンプレは結構参考になるかも。ま、RubyのChangeLog自身が テンプレであると言えないこともないのだが。

_ [言語] Ciaran’s Random Writings >> Blog Archive >> Getting started with Mnesia

Erlangの組み込みデータベースであるMnesiaについて。 パタンマッチのあるDBMのようなものか。

が、APIを見る限りでは普通のデータベースに見えるので、 Erlangならでは高速性とか分散とかの仕組みは見えない。 やっぱ、中身を見ないとダメかなあ。


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

_ [教会]

日曜学校は「断食」について。歴史とか聖書の扱いとか。 わりとクラスの反応が良いので嬉しい。

ステーク大会の交通費の件でどたばたする。 お金のやりとりが発生するとめんどくさい。


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

_ [Ruby] ongoing・The Rubinius Sprint

Rubiniusが開発スプリントを行ったという話。 開発も順調に進んでいるようで素晴らしい。 あと、SunはJRubyだけでなく、Rubiniusや本家Rubyの開発も支援してる、 ということも忘れちゃいけない(ブログエントリ的にはそっちの方が重要)。

で、本家もスプリントを行いたいのだが、 地理的分散も大きいし、 どうしたもんだか。

そこで、SkypeやIRCを利用して、仮想的に集まることを 考えているのだが、なにぶん経験がないので うまくいく確信がない。

似たような経験のある人で、「こうした方がよい」とか 「このツールが役に立つ」とかいうような情報があれば 歓迎する。

とりあえず、通常の開発環境以外には Skype+RememberTheMilkでやろうと思ってるんだけど。

Trac(やRedMine)を用意して、そこに全部チケット突っ込むという手もあるけど、 どうなんだろうね。

_ なぜお前らは「好きだからコードを書く」はできるのに「好きだからメンテナンスする」ができないのか? - mputの日記。

「メンテは趣味ではできない」という断言は早急すぎないか、 可能性の芽を摘まないか、という懸念。

  • ちゃんとメンテができる人は少ない。
  • メンテができてないことによって(特にビジネス分野で)発生する落胆は大きい。
  • メンテがちゃんとされていることは当たり前とする感覚は思いのほか大きく、 苦労の割に報われない

など、メンテナンスには困難な側面があるのは事実だろうけど、 それなりに楽しい側面もあると思うよ。 私、実はメンテ、嫌いじゃないもの。

私の場合は、好き嫌いではなく、粗忽者すぎてトラブルを頻発させるから 「降ろされた」という感じかな。

OSSプロジェクトはちゃんとメンテできる人を三顧の礼で探すべきだ。

_ [言語] ongoing ・ WF II: Erlang Blues

Tim BrayによるErlang探訪。

Erlangに1,167,948行のログファイルを食わせて、 「ongoing(彼のブログ)」へのアクセス105,099行を抽出してみたら、 MacBookで56.44CPU秒かかった。

どうもI/Oが遅そうなのでスキャン部分は全部外して、 単にファイルを読み込んでみたら34.165 CPU秒かかった。

一方、同じ処理をRubyにやらせたら、3.036 CPU秒しかかからなかった。

分散がうまくはまればErlangは驚異的な性能を発揮するが、 (スクリプト言語としては基本的な)ファイルI/Oや正規表現マッチなどは 驚異的に遅いということを認識する必要がある。 まだ、汎用言語になるには改善が必要かも。

_ [言語] Erlang for .NET: Inside BEAM, the Erlang Virtual Machine

ErlangのVMであるBEAMの実装についての解説。

個人的に一番興味深かったのは GCがプロセス単位であること。 アルゴリズムはシンプルなマークスイープだけど、 ひとつのプロセスがカバーするオブジェクト数は限定的なので、 停止時間が短くてすむのが特徴。

_ [言語] Calamari Dynasty: Clearing the Air - Languages that Suck

TIOBE Index同様Googleの出現数を使って「Suckな言語」を探す試み。

RankLanguageQueryHits
1Perlperl sucks58,900
2Cc sucks49,600
3C++c++ sucks39,900
4Javajava sucks27,900
5LispLisp sucks19,100
6JavaScriptJS sucks13,400
7Visual BasicVB sucks8,000
8PHPphp sucks3,000
9Pythonpython sucks2,000
10Rubyruby sucks500

Rubyってば、ダントツである。こういうタイプの調査に滅法強いんだよね。

さらに、「Hackな言語」についても調査し、 「Hack比/Suck比」を計算してみる

LanguageTotal FilesHacksSucks
C4,530,000224,00011,300
C++847,0002,7003,000
C#120,0002,00050
Fortran115,00040020
Java830,00010,400500
JavaScript22,700600100
Lisp36,000600100
Perl208,00014,200400
PHP580,00014,200300
Python326,000400300
Ruby15,6002,00050
Shell80,6004,00050
Visual Basic29,90040050

RubyはHackな言語であることが認定された。


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

_ 講習参加

最近ではなんらかの形で教える(情報発信する)機会ばかりで、 勉強会とか講習会のようにいかにも「学びます」という感じのことは ほとんどなくなっていたのだが、諸般の事情から講習会に参加することになった。

内容は「いかにすぐれた認定試験を行うか」というもの。

生涯において認定試験というものをあまり高く評価してこなかったので、 まさかこんなことを学ぶことになるとは予想もしていなかった。 しかし、いざ学んでみるとこれが非常に面白い。 さりげなく眺めていた「試験」がこれほど奥が深いとは。

  • どのような試験が理想的か
  • どのような問題がすぐれているか
  • どのように評価するか

などについて、理論的背景と共にしっかり学んできた。 こんな講習会を受けられる機会は滅多に無いだろう。 なんか久しぶりに「私の知らない世界」を見た気分だ。

_ [知財] “コミケの力”をアニメにも−−“権利者公認”2次創作の祭典

コミケでは(じゃっかんグレー気味に)二次創作が黙認されていて、 それがマンガにおける裾野の広さに繋がっている。 しかし、アニメではより権利関係に厳しくそのような伝統はこれまでなかった。 それを緩めることで、もっと良いものが出てくるのではないか、という話。

まあ、こういう「損して得とれ」のような発想が権利者から出てくるというのは 良いことだと思う。ほんとは音楽業界(アーチストや作曲家よりもレコード会社)に こういう発想が必要なんだと思うけどね。 でないと、長期的に見て音楽は壊滅的なダメージを受ける可能性がある。

あまり音楽に依存していない私には関係ない話ではあるが。 そうなって欲しくない人はそれなりにいるんじゃないかな。

_ [Ruby] InfoQ: Rubinius roundup

Rubinius頑張ってるって話。

  • It is byte code based. This means it's easier to handle performance.
  • It has a pluggable, very clean architecture, meaning that for example garbage collection/object memory can be switched out to use another algorithm.
  • It is designed to be thread safe (though this is not really true yet), and Multi-VM capable.
  • It works with existing MRI extensions.
  • Most of the code is written in Ruby.
  • It gives you access to all the innards, directly from your Ruby code (stuff like MethodContexts/BlockContexts, etc).
  • The project uses Valgrind to ensure that the C code written is bullet proof.

拡張ライブラリがそのまま使えるというのは驚異だ。

_ [Ruby] Ruby Way

Ruby/RSpec/Railsに、「デファクトを受け入れる」という姿勢は希薄だ。いや、無い訳じゃない。Lispを差し置いてRubyなんかが目立ってしまったのはデファクトスタンダードなALGOL風記法によるところも大きいだろう。ただ、今あるものを粛々と受け入れる姿勢はない。いまあるものの本質を理解して、それに反するものは本家本元であろうと容赦なく批判し、本家もそれを受け入れていく。それがRuby wayである。

そんな感じ。私のカリスマ性が低いことの結果かも。

現在の「Railsバブル」にはちょっと危機感を持ってる。 確かにRails(とRuby)は最近たいへん評判が良くて、 あちこちで注目されている。 中には実体以上に期待されているところがある。

が、バブルはいつまでも続かない。

そのうち、Railsと比較して生産性において遜色ない(おそらくはRuby以外の言語ベースの) フレームワークが登場し、相対的にRailsの注目度は下がるだろう。 また、Railsをそれが向いていない領域にまで適用して、 「Rails使えねーっ」と叫ぶ人も登場するだろう(もう出てるか)。

そうなっても、良いものは良い、悪いところは(できる範囲で)直す、 という態度で淡々と進みたい。それがRuby Wayだと思う。


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

_ [Ruby] M17N開発会議

この時期になるもまだ詳細が未確定で、 ショーストッパーになりかねないM17N開発を加速するべく 開発会議を開催した。

ほんとは松江でとか思ってたんだけど、 結局秋葉原ダイビルで。

参加者は、私、ささださん、akrさん、なかださん、mputさん、 Martinさん、青学の学生さん。

で、最初の議論は、最近主流っぽいUCS(Universal Character Set)モデルを 採用するか、日本の伝統的文字列処理の延長線上で(ある意味、茨の道)なんとかするか という話。結局、後者で頑張ることに。

で、伝統を尊重して

  • ASCII(7bit)しか含まない文字列/正規表現は特別扱いして相互演算可能に
  • 7bitの範囲内のコードポイントがASCII互換でない文字集合(EBCDICとか)は扱わない
  • (optional)スクリプトはバイト列としてみた時にASCII互換のものだけを許容する。 UTF-16スクリプトとかはナシ
  • (optional)ASCIIの範囲内しか含まない文字列のエンコーディングはASCIIになる
  • デフォルトのエンコーディング(仮にprimary encodingと呼ぶ)があり、それはlocale/コマンドラインオプションのいずれかで指定される
  • エンコーディングを明示的に指定しない入力のエンコーディングはprimary encodingになる
  • エンコーディングを明示的に指定しない出力は文字列のバイト表現を直接出力する
  • encodeメソッドでエンコーディングの変換(とバリデーション)を行う
  • バイト表現を変更せずエンコーディング(タグ)だけ変換するメソッドは別に用意する。 これはエキスパート用なので長い名前にする(仮にforce_encodingと呼ぶ)
  • エンコーディング情報を使うメソッドは

    • 二つのエンコーディングが等しい時→そのエンコーディングに基づき処理
    • 二つの文字列内容がASCIIのみの時→ASCIIエンコーディングで処理
    • それ以外→エラー

    となる

これは議論していないんだけど、JRubyなどでこれをどう実現するかと考えると

  • primary encoding(仮称)はUTF-16で固定。UCSモデル
  • primary external encoding(同じく仮称)を導入し、これをlocale/コマンドラインオプションで指定できるように
  • ASCIIの範囲だからと言ってASCIIにしない

とすればいいんじゃないかな。

追記

成瀬さんからコメントをいただいた。

すでに世界がUTF-8で統一されつつある今、UCSでもCSIでもそう変わらなかったりはするかもしれませんね。

UTF-8はともかくUnicode系では統一されつつありますね。

> (optional)ASCIIの範囲内しか含まない文字列のエンコーディングはASCIIになる
これを optional にするのは危険な気がするのですが、互換性とか大丈夫ですか。

あ、ここでのoptionalというのは「現状の実装ではASCIIにしてる」が、最終的には分からないと言う意味です。1.8との互換性の問題はないでしょう。JRuby的には難しそうなので、なくした方が良いかもしれません。

> 二つのエンコーディングが等しい時→そのエンコーディングに基づき処理
> 二つの文字列内容がASCIIのみの時→ASCIIエンコーディングで処理
> それ以外→エラー

「一方のみASCIIのとき→もう一方エンコーディングで処理」ですよね?

そうですね。

> primary encoding(仮称)
まずこの「primary encoding」が指す対象が何かを決めた方が決めた方がいいように思います。

上でも書きましたように「明示しない時の入力のエンコーディング」です。 それ以上でもそれ以下でもありません。

スクリプトのエンコーディングはmagic comment(pragmaという言葉は使わないことにしました)で 決まりますが、primary encodingとは関係ありません。

なお、[0x82, 0xA0].pack('C*') は BINARY でしょうか。

packの結果はBINARY(ASCII)です。前にもどこかで書きましたが、 実用上の観点からASCIIエンコーディングとbinaryは区別しません(が、8bit目が立っているASCIIエンコーディング文字列は7bitの特別扱いを受けません)。

> primary encoding(仮称)はUTF-16で固定。UCSモデル
ここでいう「primary encoding」は何に関わるのでしょう。String#encodigが常にUTF-16になるという趣旨だと解釈します。

それは違うのでは。primary encodingはあくまでもデフォルトですから、 明示的に指定すればString#encodingは変化するでしょう。 実装としては、おそらくはバイナリのままエンコーディングタグがつくのだと思います。

ので、ここ以降の考察はちょっとズレちゃってるかも。

_ [言語] microBlog >> nobraces: Python indentation for C

CにPythonのインデントによるブロック指定を導入する、という話。

しかし、考えてみれば、Cってのは

  • 制御構造が値を持たない
  • 無名関数がない
  • クロージャがない

と、Pythonでよく見かけるインデントによるブロックの弊害の原因がほとんどない言語 ではないだろうか。

もしかして、これって理想の組み合わせ?

_ [言語] 新言語 Xtalを作る日記 - 2007-09-25(火)

せっかく東京に引っ越したということで、今年の東京ゲームショウに行ってみました。 ...

家に帰って、Xtalのコンパイラに定数伝播、定数畳み込みの機能を実装しつつ寝ました。

ゲームショウに行ったというエントリなのに、 Xtalコンパイラをいじった話が登場しちゃう。 ほんとに言語実装が好きなんだなあ。

共感しちゃう。

それはそれとして、Xtalは最近導入された言語仕様が、独自性が強すぎてちょっと不安なんだけど(first_stepとかblock_catchとか)。 言語デザイナーってのは頑張って独自性・新規性を追求しすぎちゃうと ユーザが離れちゃうし、なにも独自性がないと関心を持ってもらえないし、 難しいバランスが要求される責任だよね。


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

_ まつもと直伝 プログラミングのオキテ 第13回 プログラムを高速化する:ITpro

以前、日経Linuxに書いた記事がWebに公開されている。

1年以上前の記事だが、 パフォーマンスチューニングについてまとめた文章のうちではそれなりではないだろうか。 「ちゃんと測定しろ」とか「パレートの法則」とか。

自画自賛だけど。

_ [Ruby] Xen上でRailsが即使えるVPSサービス、アンカーテクノロジー − @IT

へぇ、と感心させられるが、 実際にこのサービス(Comodo VPSパック(仮称))のページを見ると、確かにRubyとRailsはインストールされているが、 同時にPerl, PHP, Pythonもインストールされているわけで(PythonなんてDjango, TurboGear, Pylonsと全部入り)、特にRailsを強調するようなものではない。

おそらくは開発元もことさらにRailsを強調する意図は無いんじゃないかな。 ページを見た感じから言っても。

それでも、「各種フレームワークが即使える」ではなく「Railsが即使える」と 報道されちゃうのがバブルというものなのだろう。

くわばらくわばら。

_ Linux技術者資格LPICの受験者数が全世界で15万人,国内で8万人を突破:ITpro

LPIが日本で大人気、というのは以前から聞いていたのだが、 まさか受験者数の半数以上が日本人だとは思わなかった。

やっぱ試験好きな国民なのかしらね。

ということは、我々の試験も少なくとも国内では成功の芽があるということなのかもしれない。

もともと、「試験が欲しい」という企業からのニーズに応える形で 始まった企画だしね。私たちが率先して試験して荒稼ぎしたいと考えてるわけではない。

10月27日(土)に予定されている第一回の試験だが、 まだ受付に余裕があるようだ。とはいっても当初の予定は越えていて、 急遽教室を追加して、の話だけど。

この日は私も、舞台挨拶ならぬ、試験会場挨拶することになっている。 松江会場ならではの特典か。

_ [Ruby] InfoQ: 軽量なGUI、グラフィックス、アニメーション向けライブラリRuby Shoes

Ruby Shoesはwhy the lucky stiffの新プロダクト。

こういう「変なもの」を作らせたらwhyの右に出るものはいない。 でも、次々作り出してて継続的にメンテできてるのかな。

まあ、それはともかく、Shoesを使うと簡単にアニメーション付きのGUIが 実現できる。HyperCardに影響を受けてる(というほど似てないと思うけど) せいか、簡単、手軽に、実現するという姿勢は興味深い。

それと、従来のコンポーネントベースのGUIとはかなり違っている このモデルは見ておいてもいいんじゃないかな。

_ [Ruby] Ruby on Rails LT@クックパッド

とても楽しそう。

_ [OSS] 「オレゴンはオープンソースのメッカ,OSSベンチャ支援施設も」---オレゴン州運輸局CIO Ben Berry氏:ITpro

オレゴンは昔からオープンソースに力を入れてる。 OSCONも毎年ポートランドで開かれてるし、 Linusも住んでいる(んだよね)。

そういう意味では島根のロールモデルになりえる地域だと思う。 国の違いはかなり大きいけれども。


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

_ [言語] まめめも - Lightweight Language AHP : おすすめ軽量言語診断

人間は複数の選択肢から最適のものを選び出すことは あまり得意ではないが、二つのものからよさそうなものを選ぶのには 苦労しない点を利用して、二択の連結で複数選択をする、というアイディアがAHP。

それをLL(Perl, Python, PHP, Ruby)の選択に応用したものが Lightweight Language AHP

ちなみに私の結果。。 Rubyの圧勝である。当たり前か。

_ [Ruby] [Think IT] 先取り!Ruby 1.9.1

ささだくんによる1.9.1の紹介。

いろいろ迷惑かけてます。

でも、12月には、(信頼性はともかく(ぉぃ))なにか出せるように 努力します。まずは、M17Nの仕様を確定しないとな。

_ [Ruby] dike - a simple memory leak detector for ruby with preconfigured rails hooks.

Ruby用メモリーリーク検出ツール。

いくらGCがあるとはいえ、「死んだ(もう使わない)オブジェクト」が 生き残ってしまうことはしばしばある(たとえば配列に追加しちゃったり、クロージャから参照されてたり)ので、 こういうツールが役に立つこともあるかもしれない。

_ [Ruby] Headius: The Compiler Is Complete

JRuby開発チームが、RailsConf EUやらJAOOやらに出席しながら がしがし開発している。とうとうAOTコンパイラを完成したようだ。

そのうちMRI(1.8)レベルでは、JRubyに追い抜かれそうだ。

_ [言語] LSW Vision-Smalltalk

高レベルアセンブラによって記述されたSmalltalk VM。 Windows、Mac OSX、Linux上で動作し、ランタイムの大きさは30Kb(最小構成)、 しかも、.NETと連携さえできる。既存のSmalltalk処理系(Cincom?)との互換性もある。

宣伝文句だけからは、いいことだらけで、 技術的にも非常に面白いが、これは商用でソースコードは公開されていない。 公開されていても3万行のマクロアセンブラを読む気になるかというと かなり勇気が必要だが。

_ 娘の誕生日

娘1号の誕生日。15歳になった。

そうか、もう15年か。時が流れるのは早いものだ。 あの頃はまだRubyも作ってなかった。

しっかり成長してくれて嬉しい。


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

_ Kosmix releases Google GFS workalike 'KFS' as open source (Skrentablog)

Googleはそのパワーの源泉でもあるGoogle File Systemのソースコードを公開していない。 まあ、ある意味しょうがないとは思うのだが、なんだか残念な気もする。

と思っていたところへKosmixがGFS相当のグローバルファイルシステム KFSを公開したとうニュース。

すぐに使えるかどうかはともかく、注目していくべき技術であろう。

_ [Ruby] Rubyist Magazine - Rubyist Magazine 0021 号

出た。紹介が遅くなった(このエントリを書いたのは2007-10-16)。 タイミングずれすぎ。

今回の言語探訪のテーマはProlog。 そろそろネタ切れ感が。


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

_ [教会] HT

集会。ステーク大会の交通費の調整がまた終わらない。 お金が絡むとめんどい。

夜、HTに。一ヶ月ぶり。 前回も思ったが、もうちょっと準備しないと 時間を取ってもらうのが悪いかもしれない。 今後、改善に努力しよう。

高校生活の話になって、松江北、松江南、米子東(ただし20年以上前)の 違いが話題になった。高校ごとに相当カラーが違うのね。


最新 追記