誰が知っていたかというと?
多数の日本人プログラマーは、かなり前から知っていました。シアトルで開催されたRubyConf 2002に出席した者は誰も、ある陳列テーブルの光景を決して忘れないでしょう。そこには当時日本で発売中のRubyに関する本が1部ずつ、売り物としてではなく、啓蒙のために置いてあったのです。これが2002年のことであったと覚えておいてください。本は全部で23種類ありました。ですから、確信がないのであれば申し上げましょう。Rails以前にRubyが無名であった、なんてことはありません!
Railsが出る前、Rubyは日本国外でさえも未知の存在ではありませんでした。Dave ThomasとAndy Huntによる『Programming Ruby』(プログラミングRuby)(Addison-Wesley、2000年)の初版が出版され、英語圏(母国語、非母国語に関係なく)ではRubyへの関心が初めて急激に高まりました。DaveとAndyは、この本が出版されるもっと前からRubyについて耳にしていたはずです。
私は地元のBordersという書店のコンピュータコーナーから会計カウンターに歩いていく間に、Rubyの虜になりました。それ以来、後ろを振り返ることはありません。Rubyを「母国」言語として6年以上使用してきましたが、満足しています。私はRuby「出身」と言えると思います。
(比較的)昔のこと
それはステキな感覚で、どこか苦労して手に入れた勝利のようです。今思うと、昔のことのように感じられる頃(つまり、数年前のこと)、「Ruby出身」という発想は、大部分の人にしてみれば、まるっきり圏外の考えのようでした。面白いのは、人々のRubyに対する反応が熱狂的だったとしても、Rubyが一種の新米言語や仮採用の言語(スタイルや文化、理論的根拠を捜索中の言語)として扱われたことです。以下のような質問やコメントを多数見かけたものです(架空の例ですが、決してパロディーではありません)。
あるいは、次のような質問です。Rubyを始めたばかりなのですが、とても素晴らしいと思います。でも、2、3確信を持てないことがあります。C出身の私には、0(ゼロ)が真というのは驚きでした。CやPerlのプログラマーにとっては、0(ゼロ)は偽の方がやりやすくないでしょうか。
はたまた、次のような助言です。C++出身の自分には、静的型付けが非常に役に立つと思います。Rubyに追加する予定はないのでしょうか。
恐らく私は、あちこちで「出身」を多用して、歪んだ印象を与えてしまっているのではないかと思います。けれども主旨は常に同じでした。つまり、Rubyは重要視されていなかったので、あらゆることを他言語の観点から表現しなければならなかったのです。CのプログラマーとPerlのプログラマーはいましたが、Rubyのプログラマーは存在しませんでした(あるいは、Rubyプログラマーがいたとしても、Rubyの特徴一式そのものよりも、CやPerlのプログラマーの方が重要だったのです)。動的型付けが残るか、なくなるかは、Ruby以外の言語を使っていた人々がそれに関してどのように感じていたかにかかっていたのです。また、Rubyの文体の型を尊重する必要はありませんでした ? 実際、Rubyは真の言語ではなかったので、型は持てなかったのです ? ですから単に別の言語から規則を持ってきたのです。Rubyでは変数名にアンダースコアやキャメルケースが使えるので、これまでの言語で使ってきたどんなものでも使えばよいのですよ。
言語流のホームシック
こういったことが長い間続きました(いまだに続いていますが、以前ほどひどくはなく、とんだ見当違いであったと気づく人も増えています。ですから、少なくともこれまでの大体の経緯をお話ししましょう)。奇妙な感じでした。功罪という意味でも、そうした扱いを受ける側にいたという意味でも奇妙でした。なぜなら、Rubyのプログラマーとしての自分は、相手にされない透明人間のように感じられたからです。
××言語「出身」という概念は、こうした質問や提案の多数において、そのより所になっていると私は思います。Aという人物がN年間、言語Xを使ったという事実があるだけで、どういうわけかRubyには言語Xを模倣する義務があるということになったのです。Rubyを軽視するという(大体は無意識と思われましたが、広範囲に及んだ)風潮はさておき ? そして、こうした変更のリクエストをすべて聞き入れていたら、結果として生じるであろう機能のゴチャ混ぜ状態もともかくとして ? 自分の「出身元」の言語を重要視することは、無意味なのです。
次のシナリオを考えてみてください。
あなたはC「出身」です。そうすると、0(ゼロ)を偽とみなすことが「直感的」と考え、Rubyで0は偽で然るべきと考えます。しかし、嫌々ながら0が偽でないことを受け入れ、Rubyでプログラミングを始めます。
数年後、あなたはRubyにとても満足するようになっており、別の言語、たぶんPerlかなにか、を試してみることにします。今回、Perlを使い始めたあなたは、Ruby「出身」です。ですから、0は真が当たり前、と思っています。そうすると、Perlは間違っていることになるわけです。
言い換えると、あなたは常に、一言語分、ズレていることになるのです。そして、その時々で、正しい設計になり得る言語はひとつだけ、ということになってしまうのです!常に前の言語を恋しく思うホームシック状態で、言語の旅を楽しむことなど、決してないのです。
そんなことでよいのでしょうか。
Ruby出身!
念のために言っておきますが、Rubyは他の言語から孤立して存在しているとか、これまで存在してきたと言っているのではありません。それどころか、Rubyは多数の言語から特徴を借用しており、受け継いだものが明らかに分かります。Rubyを作成した、まつもと「Matz」ゆきひろは極めて知識豊かで、言語の設計過程でその知識を利用することに信じられないほど長けているのです。ですから、Rubyの様々な部分が他言語の部分とどのように関係しているかという話で、Rubyの世界は常に活気にあふれているのです。
それでも、Rubyは決して特徴の寄せ集めではありません。Rubyにはスタイルと設計における独自性があります。Matzは設計と機能の決定には細心の注意を払います。こうしたことをMatzがどのように考えているのかをMatzの言葉で論ずるのを聞けば、「C++プログラマーにとってより使い慣れたものにすること」など、全く的外れである、とますます理解が進むでしょう。
Rubyは変化すべきでないと提案するつもりもありません。実際、Rubyはまだ開発途上にあります。Matzは常に、Rubyの変更に関する提案を奨励し、歓迎してきました。機能の追加と変更に関するトピックで、メーリングリストが独占されることもしばしばです。ですから、誰もが、Rubyの変化を望まないとか、期待しないといったことではないのです。それよりも、変更の出所や、変更を望む提案の出所が問題なのです。0を偽にすればRubyが良くなると思う人が存在し、その良くなるという理由が、「RubyをRubyでない言語のように思わせること」以外であるのなら、ぜひ、その理由を聞こうではありませんか。
Ruby出身であることが許されていい時期になったはずです。Rubyが受けた待遇を他の言語にもしてやろうと言っているわけではありません。Rubyプログラマーが慣れ親しんだ気分になれるように、言語に変更を加えてくれませんか、などとメーリングリスト宛てに要求を送ることは決してありませんから、私を信じてください(そういう気が起こるかもしれません…が、実際に要求を送りつけることはしません)。つまりそれは、プログラミング言語の世界において、Rubyに第一級市民としての完全な権利を与えることであり、Rubyという名称の横に暗黙のアステリスクがつくのは、もうたくさんという意味です。
ですから、もしRubyを始めることになったら、しばらくは続けてみてください。十分続けたら、ご自由にRuby出身になってください。後悔はしませんよ!
著者について
David A. Black氏は長い間、RubyとRailsのプログラマーをしており、著作もあり、指導もしています。Rubyの世界で2000年から活動しているBlack氏は『Ruby for Rails: Ruby Techniques for Rails Developers』(RailsのためのRuby:Rails開発者のためのRubyテクニック)(Manning Publications、2006年)とPDFショートカットの『Rails Routing Roundup』(Railsルーティングの総括)(Addison-Wesley、近刊、2007年)の著者です。
Black氏はRuby Power and Light, LLC(http://www.rubypal.com)というRubyとRailsのコンサルティング会社のオーナー兼取締役で、毎年のRubyConfやRailsConfイベントの母体組織であるRuby Central, Inc. (http://www.rubycentral.org)の共同取締役も務めています。Ruby Centralにおける職務の一環として、RubyとRailsのコンファレンスを共同組織してきましたが、その中には2001年以降に開催されたRubyConfやRailsConf、RailsConf Europeが含まれており、Ruby Central Regional Conference Grant ProgramならびにRuby CentralのGoogle Summer of Codeへの参加では運営管理を担当してきました。
Black氏はRubyの標準scanfライブラリの作成主任で、Ruby Change Requestオフィシャルサイトの創設者兼管理人です。
原文はこちらです:http://www.infoq.com/articles/coming-from-ruby
(このArticleは2007年5月14日に原文が掲載されました)