開発者を幸せにするプログラミング言語Rubyの思想【CEDEC 2011】

CEDEC2011から、まつもとゆきひろ氏がによるプログラミング言語“Ruby”についての講演“Ruby開発が教えてくれたこと”の内容をお届けする。

●言語の選択は生産性にも影響する

DSCF6378_exposure

 2011年9月6日〜8日の3日間、神奈川県のパシフィコ横浜・国際会議センターにて、ゲーム開発者の技術交流などを目的としたCEDEC(コンピュータエンターテインメントデベロッパーズカンファレンス) 2011が開催された。

 最終日に“Ruby開発が教えてくれたこと”と題した発表を行ったのは、ネットワーク応用通信研究所の……いや、こう言ったほうがわかりやすい人が多いかもしれない、プログラミング言語“Ruby”の開発者の、まつもとゆきひろ氏。“ストレスなくプログラミングを楽しむ”ことを目的として開発された、Rubyの思想とは。

 まつもと氏とプログラミング言語との出会いは、中学生のころに遡る。父親が買ってきたポケコンで、BASICでプログラミングするようになったのが始まりだ。しかしながら、当時はちゃんとしたコンピューターは高価な時代で、インターネットもない。まつもと少年は「いつかコンピューターを手に入れよう」と思いながらコンピューター関連の書籍や雑誌を買い、それらを通じて、世の中にはさまざまなプログラミング言語があることを知り、興味を持つようになる。高校生の際のエピソードもおもしろい。プログラミング言語PASCALの入門書を買ってきて、読み通したときに「これでマスターした」と思ったそうなのだが、何とPASCALのプログラムコードは1行も書いてないのである。

 しかし、まつもと氏はやがて、世の中には本当にたくさんのプログラミング言語があって、前の言語を改善した何かを搭載していることに気がつく。そしてその背後にいる「こうすればもっとよくなる」と考えて言語を設計したエンジニアの存在が気になりだす。「もしかしたら、自分で作ってもいいんじゃないか?」そう思ったまつもと氏は、何とノートに自分の考えたプログラミング言語を書きだしたのだという。もちろん、まだコンピューターを持っていないからだ。

 ここでまつもと氏は言語はその人の思考や認識に影響を与えるとする“サピア=ウォーフの仮説”を援用し、「プログラミング言語には、もっと影響がある気がする」と語る。たとえば“再帰”という概念。BASICには再帰がないため、概念的な理解ができなかったが、PASCALの入門書を読んだことで理解できるようになる。学校で帰納法について学んだ際、「PASCALに出てきた!」と思ったそうだ。

DSCF6338_exposure
DSCF6340_exposure

 そしてこれを延長し、「言語の選択は生産性にも影響する」と続ける。Rubyでは速度や機能ではなく“気分”を重視しており、これは「開発は非常に人間的な作業」で、「気分やノリは生産性に影響を及ぼす」からだとまつもと氏。では、気分がいいとはどういうことか? それは思ったようにできること、やりたいことが簡単にできること、我慢しなくて済むこと……。

DSCF6341_exposure
DSCF6343_exposure
DSCF6345_exposure
DSCF6346_exposure
DSCF6347_exposure
DSCF6348_exposure
DSCF6349_exposure

 まつもと氏は、ここで階乗の計算をプログラミング言語でどう書くかを示した。「Rubyでは階乗に不要なものはほとんどなく、(計算に必要な)本質だけを書けばいい」とする一方、JAVAやCでは、“provate static int”と変数の宣言が入ったり、一般ライブラリのstdio.hを読み込む宣言をしているのを「JAVAにはJAVAの都合があるが、余計なものが多い」と述べる。そして「なぜ書かなきゃいけないかというと、そうしないとコンパイラが文句を言うから」だが、人間と機械の都合が逆転していないかと問いかけるのだ。コンピューターが速く仕事をするために人間が努力をするのはどちらが主人なのか? もう21世紀ではないかと。

DSCF6354_exposure
DSCF6355_exposure
DSCF6356_exposure
DSCF6358_exposure
DSCF6359_exposure
DSCF6360_exposure

 まつもと氏は「機械に仕事を押しつけよう」と語る。簡潔な表現で必要なことを記述し、ストレスがない分、生産性を上げようというのだ。一説によるとRubyは100万人ぐらい使っているとされるそうだが、誰もがこうした考えを持っているとは思わないとしつつも、まつもと氏はRubyのヒットにより「意外とおなじようなことを考えている人が多いんだな」と思ったそうだ。そして、そのヒットの理由の一端は、「時代の要請にマッチしたから」ではないかと推測する。いまやコンピューターは十分に高速化し、ゲームや巨大な3DCGレンダリングでもなければ、そうそうフルにその性能を使い切ることはないほどだ。となれば、カリカリチューンに高速化が図れる言語を選択しなくても、用途によっては実行に十分な速度を得られるだろう。

DSCF6380_exposure
DSCF6381_exposure
DSCF6382_exposure

 Rubyを公開した当初は200人ほどからメールが来た程度の反応だったそうだが、年々ユーザー層が分厚くなり、2011年にはRubyアソシエーションが財団法人となり、標準規格が生まれ、認定試験もスタートしている。まつもと氏は「Rubyがあっという間になくなるということはもうなくなった」としつつ、これからも発展し続けていきたいと語った。今後は動作するプラットフォームを増し、組み込み用途を意識した軽量なRuby“RiteVM”なども開発中。年内にクローズドβテストを行い、来年3月にはオープンβへと移行したいとのこと。

DSCF6385_exposure
DSCF6386_exposure
DSCF6387_exposure
DSCF6388_exposure
DSCF6389_exposure
DSCF6390_exposure
DSCF6391_exposure
DSCF6393_exposure
DSCF6394_exposure
DSCF6395_exposure
DSCF6396_exposure
DSCF6397_exposure
DSCF6398_exposure
DSCF6399_exposure