RubyKaigi 2013 レポート

まつもとゆきひろさん,Rubyに影響を与えた言語とRuby開発初期を語る。 ~ RubyKaigi 2013 基調講演 1日目

この記事を読むのに必要な時間:およそ 3 分

2013年5月30日~6月1日の3日間,お台場にある東京国際交流館にてRubyKaigi 2013が開催されています。毎日1つある基調講演をそれぞれレポートします。

画像

1日目の基調講演では,RubyのパパであるMatzこと,まつもとゆきひろさんが「Rubyのつくりかた」と題して話をしました。まつもとさんは今までのRuby会議すべてで基調講演をしており,いわば定番のキーノートと言えるかもしれません。

Ruby 以前

Rubyを作る前,まつもとさんとコンピューターの関わりについて,歴史をおって話しました。

画像

1979 BASIC

まつもとさんが初めてプログラミング言語と触れあったのは1979年のことで,SHARP製のポケットコンピューターを買い,BASIC言語でのプログラミングでした。変数名がアルファベット1文字でしか宣言できず,26個の変数しか使えなかったそうです。今考えると大変そうですが,当時のまつもとさんは「そういうものだ」と疑問に思わず,プログラミングを楽しんでいました.

1980 PASCAL

高校時代の1980年,本屋さんでPASCAL入門に出会いました。BASICでプログラミングしていたときにあたりまえだと思っていたことがあたりまえではなく,「処理に名前をつける」「処理を再帰させる」「データの構造をまとめる」「変数のスコープをローカルにする」など,BASICより便利にプログラミングできることに驚き,感動しました。

ただし,PASCALのコンパイラは当時20万円以上しており,とても高価で買えなかったため,もっぱら本のプログラムを紙に書き写して楽しんでいました。

1982 LISP

1982年にはLISPに触れました。人工知能に使われているとのことだったが,ひととおりやってもどこが人工知能に関係するのかはあまりよくわからなかったそうです。 しかし早いうちにLISPに触れていたのは,その後Rubyに大きく影響を与えることになりました。

1983 OOP

雑誌,アスキーに半ページだけ載っていた記事でオブジェクト指向と出会ったのは1983年のことです。興味をもち色々調べてみようとしたものの,当時鳥取在住の高校生であったまつもとさんには,それ以上に情報を集めるすべが少なく,バックナンバーをまとめた雑誌でSmalltalk72というSmalltalkの情報をみつけたものの,古すぎる情報でプログラムが動かせなかったり,その情報の参考資料として載っていた本を借りて読んだものの,難解で理解できなかったなど,あまり望むような結果にはならなかったようです。

しかし,当時の時点では一見徒労に終わってしまったようなこういった苦労の積み重ねによって,今のRubyがあるのでしょう。

1984 Smalltalk

大学に入り,筑波に住んだ松本さんは1984年にSmalltalkに出会いました。高校のときにあんなに苦労して調べたSmalltalkの情報が簡単に手に入る筑波をとても都会だと感じたと話していました。

1988 C

1988年にC言語に出会い,どちらかというとプログラミング言語を調べるのが好きだったまつもとさんが,初めて腰を据えてプログラムを書くきっかけになりました。

Emacsに出会ったのもこの頃で,Emacsはレガシーとやや冗談めかして言いながらも,今も使い続けているそうです。

1989 CLOS

1989年には CLOS(Common Lisp Object System)というプログラミング言語に触れたまつもとさんでしたが,実際にはCLOSでプログラミングをしたことはないそうです。ただ,アイデアはその後のプログラミングの参考になったと言及していました。

1990 Cmail

Emacs用メールリーダーソフトのChain Mailのソースコードを改良して,作者へパッチを送ったところ「私はもう使っていないので好きにして良いです」と言われたため,まつもとさんがメンテナとして,ソフトを保守していくことにしました。

折しも,悪い意味での「チェーンメール」が流行していた頃だったため,ソフトの名前をCmailへ変更して運用していたそうです。

これがまつもとさんにとって初めてのオープンソースとなりました。1990年のことです。

1991 OOP C

仕事をはじめたまつもとさん,C言語でオブジェクト指向を使いたいと考え,候補にあがったのがC++やObjective-Cでした。しかし1991年当時のC++はまだ多重継承などが実装されていない状態で,まつもとさんが利用したいと考えている条件には合わず,またObjective-Cはコンパイラが入手できず,利用できませんでした。

そこで,まつもとさんは,C言語をオブジェクト指向プログラミングで利用できるようなライブラリを作成していきました。半年程度の納期のうち,はじめの4ヶ月くらいをライブラリ作成にあててしまい,残りの期間で依頼のものをつくったそうです。

ここで作成したライブラリは,その後一部がRubyの中にも取り込まれました。

1993 Ruby

このように様々なプログラミング言語,プログラムに触れたまつもとさんが1993年に作ったのがRubyでした。当初は一人で開発していたため,後に述べるようにモチベーションの維持が大変だったそうです。

プログラミング言語への傾倒

なぜ好きなのか

まつもとさんはプログラミング言語が好きだと言います。なぜでしょうか。

本来であれば,思考を表現するための方法とは,思考が主,表現が従という主従関係になるはずなのですが,表現方法というものが思考におよぼす主従関係の逆転した影響は無視できないようです。表現方法や見方を変えてみると,思考も変わるという不思議な体験が皆さんにも経験としてあるかもしれません。

プログラミング言語もまた,思考の表現手段の一つで「コンピューターにさせたい私の思考」を表現するのがプログラミング言語であるため,先程の例でたとえると,プログラマの思考はプログラミング言語に影響されます。つまり,プログラミング言語の適切な設計は,プログラマの思考をガイドすることにつながります。まつもとさんはそこに面白さを感じているようです。

例として,まつもとさんが中学~高校時代に出あったプログラミング言語BASICとPASCALを挙げました。PASCALにはある再帰という概念がBASICにはなく,そのため,当時BASICしかやっていなかったまつもとさんは当初,再帰というものを理解できなかったそうです。

言語設計

言語を設計するということは,思考を設計するということになります。

Ruby の良くないと思うところに改善をリクエストするのも言語設計の一部ではあるものの,8~9割のリクエストはRubyにとりこまれていないという現実もあるため,まずは自身で言語を作ってみたらどうかと提案されていました。

例えば,次のようなトピック

  • オブジェクト指向
  • 関数型言語
  • 並列型言語
  • ドメイン特化言語

を持つ言語だけではなく,

  • ミニ言語
  • トイ言語

のような,実用に達しないかもしれない小規模な言語でも十分楽しめるし訓練にもなるようです。

言語実装

言語実装も,プログラマにとっては楽しみの宝庫で「言語実装はコンピュータサイエンスの総合芸術」であり,「プログラマとして退屈したことはない」と話します。

実際に実装してみた例として,次のものを挙げていました。

  • 逆逆ポーランド記法:逆ポーランド記法 (1 1 +) => 2 の数値と記号を逆にして (+ 1 2) => 3 とすれば読みやすい。画期的発明だ!と思ったが,逆の逆ポーランド記法なので,実の所ただのポーランド記法のことだった。
  • Classic:Eiffelを参考にクラス指向風のCを作った。Class風CなのでClassicという中二的な名前にしてしまった。黒歴史なので絶対に調べないでもらいたい。

著者プロフィール

にく

北海道出身で沖縄や東京に住んだ後,今は札幌在住のプログラマ。コンサドーレ札幌が好き。Ruby,Emacsが心のメインツール。最近はHaskellを試している。

twitter:https://twitter.com/niku_name

blog:http://niku.name/

コメント

コメントの記入