The Island of Ruby
(島国としてのRuby)
- スピーカー
- Dave Thomas - Dave is a principal in The Pragmatic Programmers, LLC ( http://pragmaticprogrammer.com )
- プロフィール
- Dave Thomas is a writer, trainer, and primarily a programmer. He's the author of 7 books, including The Pragmatic Programmer (with his partner Andy Hunt), Programming Ruby, and Agile Web Development with Rails. He first started using Ruby in 1998. He's the author of RDoc, and contributed most of the documentation for the built-in Ruby classes and libraries.
After all this time, Ruby still makes him happy. - 講演時間
- 17:10〜18:10
- 講演資料
- the_island_of_ruby_j.pdf (和訳付き, 8.24 MB)
(裸足で壇上を歩きまわるDave。)
今日ここに来たのはRubyの良さを伝えるためじゃなくって、 自分の人生をとても良くしてくれたRubyに感謝を言うためです。
ありがとう。
これまでのRubyとのつきあい
1999年にRuby 1.4を使いはじめた。これは人生を変えるような体験だった。
普段は、ある言語を試したら1時間やそこらで飽きるのだけれど、Rubyでは 違っていた。昼休みに触りはじめ、そのまま次の日も、他の仕事をせずにいじっていた。 Rubyと恋に落ちたのだ。
Rubyの指輪とケッコン?妻も心配していたよ。 でも、ツールと恋に落ちてもいいよね?Timもそうだしね。 しかし、1972年に初めて仕事のプログラムを書いて以来、 こんなことは初めてだった。
ソフトウェアへの愛
しかし本当にソフトウェアを愛してしまっていいのか? いいだけではなくて必要だ。 なぜならソフトウェアは人類が扱うもののなかではもっとも難しいものだから。
ひとは自分を支えてくれる環境のなかで仕事をするべき。 そうでないと良い仕事はできない。
子育てとプログラミング
みんな自分の子どもを愛している。困難なこともイライラすることもあるけど。 子どもたちは、いつでも自分の思うようなことをしてくれるわけじゃないけど、 それでも彼らがうまくやっていって欲しいと思っている。
これはいろいろな面でプログラミングに似ている。 もちろん子どもたちの方が大事だけれど。 プログラムは、いつでも自分の思うようなことをしてくれるわけじゃない (ため息)。
いくらプログラミングを愛していたとしても、困難なこともイライラすることもある。 これも似ている。
ところで、みなさんが仕事で何をするのか、ちゃんと気をつけないといけない。
もしあなたが使っているツールを愛しているなら、 ツールもあなたのことを愛してくれるよね。 それは成果として現われる。 逆にツールを嫌っているとしたらいろいろな問題が起きる。 仕事を適当に済ませてしまうとか、かっとなって間違えるとか。 そこにはもう情熱は無く、 やっていることは、片づけなくちゃいけないただの仕事になってしまう。 一日8時間も9時間も、毎日こんなことをやってはいられない。人生の無駄だ。
そう、だからあなたはあなたのやっていることを愛さないといけない。 良い仕事をするには使っているツールのことを愛さないといけない。
I LOVE RUBY.
あんまり愛してるから本だって書いちゃったんだ。
なぜRubyを愛しているのか
なぜRubyを愛しているのか - それは難しい質問だ。 なぜ奥さんを愛しているのか簡単には答えられないよね。
表現力
ひとつ言えることは、表現力が豊かだからだろう。 何かを言うのに、いろいろできる。
for i in 0..9 puts i end
10.times do |i| puts i end
(0..9).each do |i| puts i end
puts (0..9).to_a
いつでもちょっとした秘密や驚きで新たな気分になれるものなんだ。 この発表を用意しているときに下記のようなやりかたも思いついた。
puts *0..9
これも動くんだよ!こんな発見が私をhappyにしてくれる。
わびさび
PythonとRuby。 2001年にアメリカでRubyのチュートリアルを開いた時は大盛況だった。 Rubyって何だろう?と。
やはり比較の対象になるのはPythonだった。 Pythonは「そうじゃなくて、こうやるんだよ」と教えてくれる。
世の中にはPythonが好きな人も居るし、Rubyが好きな人も居る。でもなぜか 両方好きな人はあまり多くない。なぜだろう。
世の中には犬が好きな人も居るし、猫が好きな人も居る。これは好みの問題だ。
PythonとRubyについても同じ。 彼らをかわいがった時に、 Rubyが我々に与えてくれるものと、 Pythonが我々に与えてくれるものとは違う。
Pythonは「型」を重んじる。誰が書いてもプログラムは同じように見える。 Rubyは「侘寂 (わびさび)」。世界は自然で、変化する。 固定されていない。これがRubyのすごいところなんだ。
Rubyはいくつものパラダイムを許容する言語だ。 オブジェクト指向的にだけではなくて、 手続き的にも書けるし、 プロトタイプベースのようにも書ける。 試してみると面白いよ。 関数型のようにだって書ける。 副作用が無いわけじゃないけれど。 こういうことができるといろいろと良いことがある。
生産性
Rubyを愛する理由は他にもある。
自分をかっこよく見せてくれる。生産性を高めてくれるんだ。
そこにはどういう理屈があるか。 ある研究によれば、生産性はそれぞれのプログラマでそれぞれ違う。 でも、あるプログラマに着目すれば、そのプログラマが時間あたりに書けるコードの 行数は、プログラミング言語によらず決まっている、 たとえば一年に50,000行なのだそうだ。 行数が決まっていたら、どの言語で一番多くのことを達成できる? そう、Rubyだよね。
読み易さ (Transparency)
僕は、みんなが自分の書いたコードを弄んでくれるのが好きなんだ。 誰かが僕の作ったアプリケーションを使ってくれるのは良い。
Rubyのコードは簡単に読める。 読んでいる人は、そこで何が起きるのかが分かる。 大部分のプログラマは、大半の時間をプログラムを読むことに費す。 自分の書いたものにしろ、他人の書いたものにしろ。
考えるままに書けること
Rubyは、僕が考えるのと同じように、考える。 自分の考えをコードに翻訳しなくていいのは楽なことだ。
Niceな両親
Rubyにはniceな両親が居る。MatzとRubyのコミュニティのことだ。 メーリングリストではみんなが協力的だ。 プログラムをする人にとっては、みんなが家族のようなものだ。 意地悪な人たちには頼りたくないよね。
そういうわけで。
私は私の子どもたちとRubyを愛してるんだよ。(スキップするDave)
Rubyの成長
子どもたちと同じように、Rubyも成長している。
私の長男はティーンエイジャーだ。今13歳。 彼は変わりつつある。若者になりつつある。
Rubyもティーンエイジャーだ。おもしろいことに14歳。 大事にだいじにされている小さな子どもから、 世界の中で自立した、いち個人に変化しつつある。
Rubyはどのように変化しつつあるだろうか?
- 技術的に - 小さな変化だが
- バーチャルマシン
- キーワード付きパラメータの導入
- 社会的に - 大きな変化。Rubyは他のひとたちとデートを始めた。親としては、なんというか、おっかないことだ。
- IronRuby
- JRuby
- Rubinius
- Gadens Point
親としてできることは何だろう? 子どもたちの価値をちゃんと認めてあげること、 子どもたちが、正しいことと間違えていることや、良いことと悪いことの判断を できるように手助けしてあげることだ。 もし訊かれたら、アドバイスをあげるのもいい。
Rubyの価値は何だろう。Matzが言うには、
- Be nice to developers - 開発者に対してniceであること
- Be clear and readable - 明快で読みやすいこと - なにしろ僕らはほとんどの時間コードを読んでるんだ
- Be flexible and agile - 柔軟性があって、agileなこと - 例えば、RailsアプリのコードはRubyのコードとは違う。Rubyにはこういうことが得意だ。
- Be open - オープンであること
- 誰でもRubyを利用できる - rubygemsなど
- 意思決定などのプロセスが見えること - メーリングリスト
Ruby is dating
もう登場人物は一人じゃない。 Rubyは他の人たちとデートをしている。 他の人たちと会ってるんだ。 我々も他の人たちのことを考えなくちゃいけない。
成長しても価値を失なってはいけない。
- Be nice to developers - 開発者に対してniceであること
- 互換性を失なわない
- ドキュメントが整備されている
- OSやライブラリといった環境と結合しやすい
- ツールと結合しやすい
- Visual studios
- Emacs
- ちゃんと動く!
- 今現在はRailsがベンチマークになっている。でもRailsだけがRubyプログラムじゃないよね
- 「動く」の意味にも注意すること
- Be clear and readable - 明快で読みやすいこと
- ライブラリで済ませられるなら言語を拡張しちゃいけない
- J++の二の舞は避けたいよね
- ライブラリで済ませられるなら言語を拡張しちゃいけない
- Be flexible and agile - 柔軟性があって、agileなこと
- Rubyは背広を着ない。サラリーマンじゃない - 「Coporate language」じゃないし、しちゃいけない。
でも、これは「ドキュメント化されている」という要求と矛盾する。 いまのところ、すべては仕様書なしでまわっている。
この矛盾への答えはまだわからない。
それでも、仕様書を作る、というのは心配だ。 それは政治的な取り組みになるかもしれない。 Rubyには政治は欲しくない。
- Be open - オープンであること
- コードがオープンであること
- JRuby はすばらしい仕事をした。JRubyはオープンソースなんだ。
- プロセスがオープンであること
- 意思決定プロセスは双方向に。実装をする人たちは「give and take」で
- コードがオープンであること
人々、コミュニティが全てなんだ。
私たちの子どもが他の人たちと対話をはじめた。 両親も、アドバイスをあげている。訊かれた時にはね。
Rubyに迫りくるかもしれない危機
Rubyはもう本格的な言語になった。
変化は確実にやってくる! Apple、Mircosoft、Sun、そしてThoughtworksから。
どんな変化が起きるだろうか
- コミュニティへの被害 - 我々にはまだその余裕はない。
- ベンダの分裂 - これはたぶん起きないだろうけど可能性はある。RubyはRubyじゃなくちゃいけない。どこかの会社ものもではない。
- 意見の衝突
- Rubyの将来について話し合うのは良いことだ、たとえばUnicodeのサポートについて。
- 気をつけなくちゃいけないのは、ビジネスのために必要なことに取り組む人々も居るということ。彼らを混乱させてはいけない。
- 爆発的な成長
- 日本で産まれて世界に広がったRubyは、2006年にRailsによって今度はエンタープライズ分野に広がっていった。上を見てみよう。何が見える?(上を見あげるDave)…まだ何も見えない。
沢山の人々がこのコミュニティにやってくる。
彼らを迎え入れて、我々のやりかたを見せてあげるんだ。「Ruby道」を。 我々は被害を受けないように気をつけて、 彼らから学ぶ必要がある。 もう島国はなくなった。Rubyはもう孤立した島じゃないんだ。
新しい人々を歓迎する準備をしよう。
なぜ?道義的な責任があるからだ。 我々はRubyで何万人もの人々をhappyにしてきた。 今度はもっと多くの人々をhappyにすることができるんだ。
このような機会を与えてくれて、私は日本のRubyのコミュニティに感謝します。 (講演者向けの前夜祭から講演の直前まで、Dave自身が撮った写真が次々現れる。会議への参加者の姿もMatzの姿もRuby会議スタッフの姿も、そして疲れて寝てしまったスタッフの姿も。)
我々はみんな親戚なのです。Matzにも感謝します。
とても、とても刺激的な二日間でした。 その中で私はとても歓迎されていると感じました。
どうもありがとうございました。
(スタンディング・オベーション)
質疑応答
- Q
- 古くからRubyを使っている人のなかにはRailsに複雑な思いを抱いている人も多い。Daveは?
- A
- よい質問ですね。正直に言うと、コミュニティから受ける感じが合わないので、3週間前まではRailsから離れようとしていた。これは個人の資質の問題ではなく、Railsの成長の速度が速く、niceにしている時間がないからだろう。Really busy。でも、3週間前にRails Confで「we want rails to be nice」と言って、二日後にはもう変化していた。180度変化した。Railsコミュニティにもう一度チャンスをあげてほしい。
- Q
- これからエンタープライズにむかって広がっていく。コミュニティベースで進んでいた開発が、がさっとエンタープライズに進む例をおもいつけないが、なにか参考にするべきケースはあるか?
- A
- Javaはその例のひとつだろう。良い点もたくさんあるし、悪い点もすこしある。確かなのは、個人や会社はスケールすることはできないだろうということ。みんなで成長を助けていくしかない。何がおこるかはわからないが、オプションをいつもオープンにしながら。Rubyコミュニティはアジャイルなのでたぶんうまくいくだろう。
- Q
- 非互換性は進化なのか避けるべきなのか?
- A
- Rubyは変化していくべき。まだ変化は足りないと思う。たとえばlist comprehensionがほしい。いろいろなことを試すのは若いころには良いことだが、だんだん責任が出てくる。いまのうちにいろいろ試しておかないといけない。
- Q
- Rubyのコミュニティが変化しないといけない。Linuxの10年前にコミュニティ(尊敬と挑戦)に似ているのではないか。今あるコミュニティの受容性を見ると変化に充分対応できるように思える
- A
- Yes。しかし、MatzとLinusは同じか?彼は別のやりかたをするだろうから、Linuxと同じやりかたをしようとするのはまずい。We want to be Ruby。
- Q
- Rubyの良さはagileであることとあったが、エンタープライズはagileではない。どちらが変化していくのか?
- A
- よい質問です。日本でどうなっているのかはわからないのでアメリカの例を。アメリカでは企業レベルではまだagileは主流ではないが、エンジニアたちはヒミツでagileになりつつある。かしこい企業は実験チームを作っている。RubyやRailsについても同じこと。小さいチームで試しはじめている。一度にすべてを変化させることはできない。日本でもインドでも開発者のいるところでは同じだろう。ユーザーがこれが良いやりかただとわかっているなら企業にそう知らせるべきだ。最終的には企業が変わると思う。
- Q
- Rubyを愛してくれてありがとう。Rubyに嫌われるか心配になったことは?
- A
- Gosh…。もしそんなことが起きたら(混乱するDave)、…プログラミング言語だし…。いまでは95%の仕事をRubyでやっているけど、100%じゃない。新しい言語が出たら試す。新しい考えかたを試すのは大事なことだ。そしてRubyに帰ってきてもいいし帰ってこなくてもいい。…でもRubyに嫌われることは ぜったい ないよ。
(ロガー、翻訳: zunda)
ロビーの掲示板より
License
This Japanese version of a log of the presentation `The Island of Ruby' by Dave Thomas on June 10th, 2007 in RubyKaigi2007 held in Tokyo, Japan and the photographs by Koji Shimada and zunda are published under a Creative Commons Attribution 2.1 Japan License.
Keyword(s):
References:[RubyKaigi2007速報ログ]