前の記事に続いて日本Rubyカンファレンス2006をレポートする。
Ruby作者のMatzことまつもとゆきひろさんによる基調講演。
タイトルはアメリカ合衆国「一般教書演説: State of the Union」のパロディである、Perlの"State of the Onion"のそのまたパロディだそうだ。wordsファイルを'nion$'でgrepしてそれらしい言葉を選んだという。
Matzは"State of the Onion"を「タマネギがどうした! って感じ」と言ってたけど、Larry Wallは「努力、忍耐、謙遜」でPerl界をタマネギに例えてるから、"State of the Onion"はそういう意味なんでないの? いや、みんなそれを分かってるのを前提としてのジョークなのか? Matzの思考を読むには私のハッカー度がまだ足りないようだ。
さて、実際の所、Dominion = 支配 -- 世界制覇は「理系男子の夢」なのだそうで、また現実に今Rubyは(シェアはさておき話題として)最もホットな言語であるから、制覇しつつあるともいえる。
ここで宣伝入りまーす。"Programing Ruby"(邦訳は通称「うさぎ本」)の原書第2版が出てます。第2版邦訳も準備が進んでいて、今度は分量が多くなるため「言語編」「ライブラリ編」の分冊になるそうです。今度の愛称は「ピッケル本」
さて、ではRubyが世界を制覇しつつあるとして、それほど話題になっているのはなぜであろうか。Matz曰く、
MatzはRubyが優れている点として次を上げた
素性については、「純粋オブジェクト指向言語」であることが挙げられるだろう。いろいろな言語からいろいろなものを引き継ぎつつ、Smalltalkとはちょっと意味合いが違うけれど「全てがオブジェクト」を実現した。
強力なスクリプティングについては、確かに、単なるミニマリズムではなく現実の用途への使い易さを追求しているし、Perlからいろいろなものを引き継いでいてテキスト処理も強力だ。
気分良くかけることについては、そうだろう。Rubyは「プログラマという人種のあるサブセットに共有されているある思想や習慣」に合わせて最適化されているっていうもんなー。だからそのサブセットに含まれる人に取ってRubyは最高に使い易い。finalizerあたりに象徴的だけれども、Rubyの仕様策定の方針として
finalizerは故意に使いにくくしたそうだものね。
この魔法が、あるいはRuby最大の弱点かもしれないと私は思うのだけれど。いや、悪しき習慣を引きずっている人たちにとって使いづらいというのはどうでもいい。でも、今は「ある習慣を持っているサブセット」が大きいからいいけど、どうも私はこのサブセットの文化を形作っているのは「ALGOLの子供達」と特にCとPerlである気がしてならない。
Rubyが咀嚼して取り込んだ程度のLispのエッセンスは多分、ずっと生き残るだろう。でも、Cはどうだろう。Perlは。CもPerlも廃れたとき、果たして「サブセット」はRubyistを生み出しつづける程度に大きくありつづけるだろうか。ちょっと分からない。
話が逸れた。Matzの講演に戻ると、Rubyの話題を盛り上げた要因としてRailsの存在は大きい。RailsはtDiaryに続く「Rubyist待望のキラーアプリケーション」であった。
「成功する言語設計者にはヒゲがある」のだそうだ。
対して、
Matzもずっとヒゲが無かったけれども、2004年から生やし始めた。その直後からPythonのGuidooも生やし始めた。このヒゲがRailsが現れRubyが話題になった一因かもしれないとのこと。
Love/Hate ratioというものがある。某調査機関Gを通じて、"I love XXX"と"I hate XXX"を各々調べ、件数比を取るというものだ。それによればRubyは非常に愛された言語であるといえるそうだ。嫌う人よりも好きな人が多い。
更にRubyは非常にHotな人達からも愛されている。
RubyはMatzの言語への愛、ユーザーへの愛に満たされていて、それで使い易いということだそうだ。「愛されたければ、まず愛しなさい」
Rubyは「普通の人」むけ言語だ。ALGOL系の文法だし「普通のプログラマ」にわかりやすい。
対して、Lispなんかはやっぱり頭の良い人向け言語だ。(最近のRails勉強会@東京まわりでは青木さんの「ふつう」シリーズに因んでこの種の頭のいい人を「ふつうの人」と呼ぶ)
最近はHaskellブームだったりして関数型言語の台頭というか復権というかが目覚しいけれども、「あと10年ぐらいするとこの潮流の中からHaskellのアイディアを継承した『普通の言語』が出てくるかもしれない」とMatzは言う。
まずMatzからFAQが提示された。
moonwolfさんより。「1.8.5のリリースはどうなっているのか」「ruby-devのリリースのスレッドが止まっているけれども」
「8月を目標とする」「1.8.6はいつもどおりのクリスマスリリースで2006-12-23だろうか」と。
私yuguiより。
「かつてwww.ruby-lang.orgにあった『他の言語との比較』は非常に面白かったのだが、あれはいつからあったのか。また、今封印を破って再び書くとしたら足したい言語は何か」
「96年にwww.ruby-lang.orgを開設した頃からあった」「みんな想像以上にシャレが通じないので消した」「特に足したい言語はない」
えとさんより。「ASCIIの『オブジェクト指向スクリプト言語Ruby』の第2版は出ないのか」
「筆が遅いし、ないのではないだろうか」
moonwolfさんより。「現在はRuby's/GPLのデュアルライセンスだが、これを一本化する予定は?」「GPLだと一般に販売するソフトウェアに組み込みづらいのだが」
Matz 「Ruby's LicenseがGPLとcompatibleでないので、Ruby's一本にするとGPLソフトウェアとリンクできなくなる。従ってそれはあり得ない」「contributorの同意は得られると思うので、GPL compatibleな第3のライセンスに変更することは可能。しかし、そうする必然性がない」
Matz「RPGツクール XPなど、一般向けに組み込んだ例もあるし、copyrightの表記だけしっかりして、Ruby'sライセンスに基づいて組み込めば特に問題は無いのでないか」
卜部さんより。「現在の開発trunkではCOPYINGはGPL2 onlyとなっているが、COPYING.jaは以前のままだ。どちらが本当なのか」
Matz 「COPYINGが正しい。.jaは更新し忘れた」「GPL3が実際に出るまでは様子見として、当面GPL2 onlyとする」
青木さん「今朝のコミットではコンパイルできないのだが」「この質問は中田さんに言わされた」
Matz 「自分の所ではできたんだけど」
akrさん「minirubyまではコンパイルできる」
Matz 「昼までには直ってるだろう」
このあたり、ライブでruby-devを見てるような印象で非常に楽しかった。
後藤(謙)さん。「別の言語を作るとしたらどんな風にしたいか」
Matz 「参照等価性と遅延評価にはあこがれる。Rubyにはないものだから」
「Perlの"TMTOWTDI"のような標語はないのか」
「どうして言語を作りたかったのか」
ソフトウェア技術者のある一定の割合は深く深く技術に潜っていく。そしてそれは大きく3つの道へと分かれていく。
自分は「言語」タイプだった。高校生の頃いろいろな言語を触って、「BASICは違う」「PASCALは違う」となり、15歳で「自分で作ろう」と思った。その後おもちゃのような言語はいくつか作ったが、決意から15年を経て初めて作った本格的な言語がRubyだった、とのこと。
Zev Blutさんから「Rubyで好きな文法は。メソッドは」
Matz
とのこと。私はライトニングトークスでブロックをテーマに話す予定だったので非常にうれしかった。
「反対にミスしたと思う所は」
Matz
高木浩さんから。「『メニューのループについて』のスレッドのように議論が炎上しがちなのはなぜか」
Matz 「『ひとつのことをやるのにやりかたはたくさんある』けれども、そのやりかたの中で『どれが一番ましなんだろう』というのを追求する人達が集まっている」「あのスレッドはRuby Quizと同じノリだと思う」
「RubyはLispを参照しているけれども、Lispも勉強すべきだろうか」
Matz
Shibuya.pmの人から「Rubyをやったらモテるか」
Matz 「奥さんにpearlとrubyとどちらが欲しいか聞いてみるといい」「自分が聞いてみたところ、pearlと言われた。分かっててそう答えるから嫌だ」
ここで、誰か忘れたけれども補足として、「Matzには奥さんと4人の子供がいる」「DHHは彼女を連れて来日中」とのコメントがあった。
うえのさんから「自分の言語を作りたい人へのコメントを」
Matz 「自分の言語を愛して欲しい」「愛だろ愛」
宮川さんより「webでJavaScriptが必要なのが嫌なのだが、Rubyかブラウザに進出する予定は?」
Matz
ブラウザを作ってる側に言ってほしいとのこと。
akrさんから「名前が悪いから」「良い名前を思い付かないから」という理由で新しい機能を拒否されることが多いが、拒否の基準は?
Matz
柳田さん「最近『驚き最小の原則』という言葉をあまり使わないのはなぜか」
Matz
See Also:
最後に、Matzから会場へ質問があった「Rubyで仕事してる人はどれぐらいいる?」
会場の1/3ほどから手が挙がった。
あのー、ちょっとよろしいでしょうか?
【ここで宣伝入りまーす。"Programing Ruby"(邦訳は通称「うさぎ本」)の原書第2版が出てます。】という箇所と、
【Dave Thomas, Andy Hunt 「達人プログラマ」シリーズ著者。2002年1月1日に初めてMatzにメールを送ってきて、その後ものすごい勢いで"Programing Ruby"を書き上げ8月に出版してしまった。】という箇所の
"Programing"は、
"Programming"ではないでしょうか?