RubyKaigi 2013 レポート

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

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

Ruby のつくりかた

このような言語設計や言語実装,プログラミングの経験をふまえてRubyを作りはじめたため,Rubyには様々な言語の要素が含まれています。LISPからはS式以外,Smalltalkからは充実したクラスライブラリやmethod_missing,Perlからは文字列操作や正規表現,配列操作,Cからは演算子やUNIX文化を取り込み,

Ruby = Lisp + Smalltalk + Perl + C

と評していました。

開発の初期は次のように「必要なものを作るために必要なもの」が芋づる式に増えていき,'Hello World'を出力するのに半年かかるような状態で大変だったようです。

  • 'Hello World'という文字列を作るためには,String クラスが必要である。
  • String クラスの継承元が必要なので,Object クラスが必要である。
  • そもそも,クラスという概念を扱うために,実装が必要である。

  • やっとStringオブジェクトが完成したのでprintしよう。
  • printはメソッド呼び出しなので,メソッド呼び出しを作らなければならない。

  • メソッド呼び出しが完成したので画面に表示しよう。
  • 画面に表示するためにはIOを考えなければならない。

  • うまく動くようになったのだが,しばらく動作させているとプログラムが終了してしまう。メモリを解放していないせいなのでGCが必要だ。
  • プログラムにリンクするだけで動作するGCがあるようだ。
  • 実際にリンクさせてみるとうまく動作しないため,結局自分で実装しなければならない。

1993年に作りはじめたRubyは,このような苦労を経て,1994年12月に限られた人へ配布,1995年の12月に0.95版が公開されました。

自分用言語を作ろう

自分で言語設計をしてみよう

まつもとさんが言語設計を皆さんに推している理由は,言語を作るという行為が,その言語に必要なものを取捨選択するという練習になり,プログラマに必要な能力が養われるためだそうです。

画像

APIやインターフェース,これらも広い意味での言語であるため,言語設計を練習しておくと,良いAPIやインターフェースの設計が上手になってきます。

まつもとさんは,もっと沢山の言語を,もっと沢山の人に作ってみてもらいたいと述べていました。

開発の秘訣

まつもとさんは新しいものを作るときの開発の秘訣として次の項目を挙げました。

  • 全く新しいものを追求しない
  • ひとつずつ進歩する
  • 組合せる
  • よく知っている(or 好きな)ものを使う
  • 自分が使いたいものを作る
  • 作品を愛する
  • 長く続ける

自分に必要なものを,自分の手に馴染んだ道具で,焦らずじっくりと作っていくという自給自足がコツのようですね。 長い間多くの人に親しまれているRubyのようなプロダクトを生み出した人の秘訣なのでぜひ参考にしましょう。

情熱を絶やさない

次のような言葉を受けると,情熱が冷えてしまうことがあります。

  • 「もう沢山の言語があるのに,まだ言語が要るのか?」
  • 「どうせ広まらない」
  • 「時間の無駄」

こういった言葉をかけるのは他の人だけではなく,自身の心が自身にそう訴えることもあります。実は,まつもとさんも諦めそうになったことがあるそうです。

ところで,釣りが好きな人に

  • 「どうせ釣れない」
  • 「釣ってもおいしく食べられない」

という言葉をかけるとどうなるでしょうか。そこで釣りをやめてしまうでしょうか。そうではなく

  • 「釣れなくてもいいんだ」
  • 「釣ろうとすることが楽しいんだ」

という答えが返ってくるかもしれませんね。釣った結果の魚を楽しむのではなく,釣りという行為自体を楽しんでいるので,結果にフォーカスした言葉では釣り人の情熱を冷ますことはできないのです。

同じように,まつもとさんは次のような考え方で情熱を維持したそうです。

  • 「使われないのがどうした?」
  • 「私は言語が好きだ」

作った言語を使う時の嬉しさではなく,言語を作る時の楽しさにに重きを置いたこの言葉は,私達がプログラミングをするときに,結果もさることながら,プログラミング自体を楽しむのに似ていますね。

他人の意見に左右されたり,評価を心配するのではなく,自身の本能に従って情熱を絶えず燃やし続け,雑多なアィディアをどんどん実装しようと述べていました。

画像

著者プロフィール

にく

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

twitter:https://twitter.com/niku_name

blog:http://niku.name/