日本Rubyカンファレンス2006 (4) Matz基調講演

前の記事 に続いて日本Rubyカンファレンス2006をレポートする。

06100024.jpg

State of the Dominion

Ruby作者のMatzことまつもとゆきひろさんによる基調講演。

06100022.jpg

タイトルはアメリカ合衆国「一般教書演説: 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版邦訳も準備が進んでいて、今度は分量が多くなるため「言語編」「ライブラリ編」の分冊になるそうです。今度の愛称は「ピッケル本」

06100028.jpg

Rubyの人気の秘密

さて、ではRubyが世界を制覇しつつあるとして、それほど話題になっているのはなぜであろうか。Matz曰く、

  • Rubyが優れているから
  • Railsのお蔭
  • Matzがヒゲを生やしたから

Rubyのすごいところ

MatzはRubyが優れている点として次を上げた

素性については、「純粋オブジェクト指向言語」であることが挙げられるだろう。いろいろな言語からいろいろなものを引き継ぎつつ、Smalltalkとはちょっと意味合いが違うけれど「全てがオブジェクト」を実現した。

強力なスクリプティングについては、確かに、単なるミニマリズムではなく現実の用途への使い易さを追求しているし、Perlからいろいろなものを引き継いでいてテキスト処理も強力だ。

気分良くかけることについては、そうだろう。Rubyは「プログラマという人種のあるサブセットに共有されているある思想や習慣」に合わせて最適化されているっていうもんなー。だからそのサブセットに含まれる人に取ってRubyは最高に使い易い。finalizerあたりに象徴的だけれども、Rubyの仕様策定の方針として

  • 良く使う、望ましいプログラミングスタイルを強力にサポートする
  • あまり使わない、望ましくないプログラミングスタイルは不可能では無いけれども使いにくくする

finalizerは故意に使いにくくしたそうだものね。

この魔法が、あるいはRuby最大の弱点かもしれないと私は思うのだけれど。いや、悪しき習慣を引きずっている人たちにとって使いづらいというのはどうでもいい。でも、今は「ある習慣を持っているサブセット」が大きいからいいけど、どうも私はこのサブセットの文化を形作っているのは「ALGOLの子供達」と特にCとPerlである気がしてならない。

Rubyが咀嚼して取り込んだ程度のLispのエッセンスは多分、ずっと生き残るだろう。でも、Cはどうだろう。Perlは。CもPerlも廃れたとき、果たして「サブセット」はRubyistを生み出しつづける程度に大きくありつづけるだろうか。ちょっと分からない。

Railsマジック

話が逸れた。Matzの講演に戻ると、Rubyの話題を盛り上げた要因としてRailsの存在は大きい。RailstDiaryに続く「Rubyist待望のキラーアプリケーション」であった。

  • Railsは急速に普及した。2004年公開。2005年普及。
  • 高い生産性
  • 高い話題性。作者DHHの高いマーケティング能力。「売り方上手」

ヒゲ

「成功する言語設計者にはヒゲがある」のだそうだ。

対して、

  • COBOL

    Grace Hopper

  • CLU

    Babara Liskov

Matzもずっとヒゲが無かったけれども、2004年から生やし始めた。その直後からPythonのGuidooも生やし始めた。このヒゲがRailsが現れRubyが話題になった一因かもしれないとのこと。

愛されている言語

Love/Hate ratioというものがある。 某調査機関G を通じて、"I love XXX"と"I hate XXX"を各々調べ、件数比を取るというものだ。それによればRubyは非常に愛された言語であるといえるそうだ。嫌う人よりも好きな人が多い。

更にRubyは非常にHotな人達からも愛されている。

  • Dave Thomas, Andy Hunt

    「達人プログラマ」シリーズ著者。2002年1月1日に初めてMatzにメールを送ってきて、その後ものすごい勢いで"Programing Ruby"を書き上げ8月に出版してしまった。

  • Martin Fowler

    PofEAAとかの偉い人。自分のページはRubyによる自作のWiki/Blogシステムで書いている。

  • DHH

    Railsを作った

  • Brad Cox

    Objective C作者

  • Alan Kay

    Smalltalk作者。「Smalltalkは死んだ言語だ。Squeakはツールが欲しかったから作っただけ」「Rubyは好きだ」 とまで言う 。どうも、Alan Kayが作りたかったのはPragmaticなSmalltalk76で、メッセージング指向の純粋主義に傾いたSmalltalk80はちょっと違うものらしい。

06100030.jpg

RubyはMatzの言語への愛、ユーザーへの愛に満たされていて、それで使い易いということだそうだ。「愛されたければ、まず愛しなさい」

普通の言語

Rubyは「普通の人」むけ言語だ。ALGOL系の文法だし「普通のプログラマ」にわかりやすい。

対して、Lispなんかはやっぱり頭の良い人向け言語だ。(最近のRails勉強会@東京まわりでは青木さんの 「ふつう」シリーズ に因んでこの種の頭のいい人を「ふつうの人」と呼ぶ)

最近はHaskellブームだったりして関数型言語の台頭というか復権というかが目覚しいけれども、「あと10年ぐらいするとこの潮流の中からHaskellのアイディアを継承した『普通の言語』が出てくるかもしれない」とMatzは言う。

質疑応答

FAQ

まずMatzからFAQが提示された。

  • Ruby2.0関係

    これはあとのセッションで話す

  • なぜ名前をひらがなで書くのか

    良くある名前なので、ひらがなで書いたほうがidentifyできると思った。でもgoogleで検索すると1/3ぐらいはギタリストの人の情報がひっかかるので完全にはidentifyできていない。また、漢字で書くととても角ばった字面になるけれども、ひらがなにすることで曲線的になって良いとも。

  • なぜ「Matzにっき」は一週間更新が遅れるのか

    毎日メモを取っておいて暇が出来たらまとめて更新するスタイルであるためというのが1つ。もう1つは、セキュリティ上、所在をリアルタイムでは明らかにしたくないから。特に子供の所在はリアルタイムでは明らかにしないよう家族から言われている。

  • 普段は何をしているのか

    NaClで業務としてRubyを開発している。

  • NaClに入るには

    社長の井上さんへ聞いてください

リリースエンジニアリング

moonwolfさんより。「1.8.5のリリースはどうなっているのか」「ruby-devのリリースのスレッドが止まっているけれども」

「8月を目標とする」「1.8.6はいつもどおりのクリスマスリリースで2006-12-23だろうか」と。

他の言語との比較

私yuguiより。

「かつてwww.ruby-lang.orgにあった『 他の言語との比較 』は非常に面白かったのだが、あれはいつからあったのか。また、今封印を破って再び書くとしたら足したい言語は何か」

「96年にwww.ruby-lang.orgを開設した頃からあった」「みんな想像以上にシャレが通じないので消した」「特に足したい言語はない」

ASCII本

えとさんより。「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ライセンスに基づいて組み込めば特に問題は無いのでないか」

COPYING, GPL

卜部さんより。「現在の開発trunkでは COPYING はGPL2 onlyとなっているが、 COPYING.ja は以前のままだ。どちらが本当なのか」

Matz 「COPYINGが正しい。.jaは更新し忘れた」「GPL3が実際に出るまでは様子見として、当面GPL2 onlyとする」

コンパイル

青木さん「今朝のコミットではコンパイルできないのだが」「この質問は中田さんに言わされた」

Matz 「自分の所ではできたんだけど」

akrさん「minirubyまではコンパイルできる」

Matz 「昼までには直ってるだろう」

このあたり、ライブでruby-devを見てるような印象で非常に楽しかった。

別の言語

後藤(謙)さん。「別の言語を作るとしたらどんな風にしたいか」

Matz 「参照等価性と遅延評価にはあこがれる。Rubyにはないものだから」

標語

Perlの"TMTOWTDI"のような標語はないのか」

  • Enjoy Programing
  • 名前重要

動機

「どうして言語を作りたかったのか」

ソフトウェア技術者のある一定の割合は深く深く技術に潜っていく。そしてそれは大きく3つの道へと分かれていく。

  • OS
  • Hardware
  • 言語

自分は「言語」タイプだった。高校生の頃いろいろな言語を触って、「BASICは違う」「PASCALは違う」となり、15歳で「自分で作ろう」と思った。その後おもちゃのような言語はいくつか作ったが、決意から15年を経て初めて作った本格的な言語がRubyだった、とのこと。

好きな文法

Zev Blutさんから「Rubyで好きな文法は。メソッドは」

Matz

  • 好きな文法はブロック
  • APIは良く知らないので分からない
  • Rubyはいろいろな言語から拝借したアイディアの固まりだけれども、ブロックは比較的独自性が高い
  • それから、変数名プレフィックスによるスコープの表現。これは生まれたばかりの長女を抱きかかえているときに思い付いて、長女を脇においてパソコンに向かったので思い出深い
  • Rubyジェンガのようにいろいろな要素を絶妙なバランスで積み上げて作ってある。

とのこと。私はライトニングトークスで ブロックをテーマに話す 予定だったので非常にうれしかった。

「反対にミスしたと思う所は」

Matz

  • yield。ブロック引数がないのを判別できない。あとでブロック引数を入れた時に相性が悪かった。
  • Perlから持ってきた特殊変数の98%は後悔している。

こだわり

高木浩さんから。「『 メニューのループについて 』のスレッドのように議論が炎上しがちなのはなぜか」

Matz 「『ひとつのことをやるのにやりかたはたくさんある』けれども、そのやりかたの中で『どれが一番ましなんだろう』というのを追求する人達が集まっている」「あのスレッドは Ruby Quiz と同じノリだと思う」

Lisp

RubyLispを参照しているけれども、Lispも勉強すべきだろうか」

Matz

  • 「普通の人」はLispは必要ない
  • 普通のやつらの上を行 」きたいならやるべき
  • 現実問題、Lispは「普通の人」には扱いきれない。習得コストが見合うと思うならやってもいい

モテ

Shibuya.pmの人から「Rubyをやったらモテるか」

Matz 「奥さんにpearlとrubyとどちらが欲しいか聞いてみるといい」「自分が聞いてみたところ、pearlと言われた。分かっててそう答えるから嫌だ」

ここで、誰か忘れたけれども補足として、「Matzには奥さんと4人の子供がいる」「DHHは彼女を連れて来日中」とのコメントがあった。

後進へ

うえのさんから「自分の言語を作りたい人へのコメントを」

Matz 「自分の言語を愛して欲しい」「愛だろ愛」

ブラウザ対応

宮川さんより「webでJavaScriptが必要なのが嫌なのだが、Rubyかブラウザに進出する予定は?」

Matz

  • Alan Kayも、どうしてJavaScriptが流行ってHypertalkが消えたのかわからないと言っている
  • でもこれは自分にはどうしようもない

ブラウザを作ってる側に言ってほしいとのこと。

言語仕様策定プロセス

akrさんから「名前が悪いから」「良い名前を思い付かないから」という理由で新しい機能を拒否されることが多いが、拒否の基準は?

Matz

  • 野性の勘
  • でも(akrさんのように)あきらめずに言いつづけると説得されがち

Least Surprising Principle

柳田さん「最近『驚き最小の原則』という言葉をあまり使わないのはなぜか」

Matz

  • 2001年〜2002年前半にかけて使っていた。当初は言語設計のポリシーをよく表していると思った。
  • でも拡大解釈する人が増えてきた。さまざまなバックグラウンドを持つ人全てを驚かさないのは不可能だ。そこで本来の「Rubyの統一的な世界観に照らして変な挙動をしない」というニュアンスを強調して「 Matzの驚き最小の原則 」と呼んだこともあった。
  • でも面倒になって、そもそも使わないようになった。

See Also:

仕事にしてる率

最後に、Matzから会場へ質問があった「Rubyで仕事してる人はどれぐらいいる?」

会場の1/3ほどから手が挙がった。