Rubyクイックスタート

文:Steve Hayes(Builder AU) 翻訳校正:村上雅章・野崎裕子
2007-12-13 08:00:00
  • このエントリーをはてなブックマークに追加

 Rubyとはどんなプログラミング言語なのだろうか?そして、何が便利なのだろうか?本記事では、Rubyというプログラミング言語の歴史や特徴に触れるとともに、Rubyについてもっと知りたくなるようなことを紹介している。

 世の中にはプログラミング言語があふれているが、それらの大半は世に埋もれてしまう運命にある。言語が「興味深い」としか言ってもらえないような大部屋俳優の域を脱し、「人気者」として赤絨毯の上に立つセレブになる原動力が何であるのかを確実に判っている人など誰もいない。しかし、そういったことが起こるのを目の当たりにした場合には、その言語ついてもっと詳しく調査し、自らにとって有益であるかどうかを見極めるべき時がきたということになるはずだ。そして、Rubyはこのような大躍進を果たした言語の1つなのだ。

 Rubyはしばしば「スクリプティング言語」として特徴付けられる。しかし、「スクリプティング言語」を「おもちゃ」として捉えている人も多いようだ。そのため、Rubyのスクリプティング言語という特徴がその評価を不当に落としてしまっている。Rubyは徹底したオブジェクト指向に基づいた動的なプログラミング言語である。Rubyはまつもとゆきひろ("Matz")氏によって1995年にリリースされた言語であり、ある2つの重要な出来事によって脚光を浴びるまでの長い間、日本以外ではその存在がほとんど知られていなかった。その出来事の1つは、Andy Hunt氏とDave Thomas氏(the Pragmatic Programmers)の執筆した『Programming Ruby』が、英語で書かれた初のRuby参考書として2000年に出版されたことである。そしてもう1つの出来事は、ウェブアプリケーション開発フレームワークである「Ruby on Rails」がDavid Heinemeier Hansson氏によって2004年にリリースされたことだ。Ruby on Railsは、ウェブアプリケーション開発を迅速かつ容易に行うためにRubyのリフレクションやその他の動的な属性を用いており、あっという間にRubyの「キラーアプリ」となった。当然のことながら、便利なウェブアプリケーション開発フレームワークは他にも存在しているが、Railsのように爆発的に広まったものは他にない。

 では、Rubyの特徴にはどういったものがあるのだろうか?まず、Rubyにおいてはすべてのものがオブジェクトである。これには、他の言語ではプリミティブ型として扱われている整数や浮動小数点数も含まれている。Rubyは、どのクラスも拡張可能であるという意味でオープンであり、既存の振る舞いの大半はオーバーライドすることができる。また、Rubyはインタープリタであるため、コンパイルを行う必要がない。そのため、コードの変更を気軽に行い、その結果をすぐに確認することができる。しかしこれはまた、Rubyで記述したアプリケーションの実行速度が、他の言語によって記述、コンパイルしたアプリケーションのそれよりも遅いというということも意味している。現在、Rubyの代替実行環境、すなわち新しいRubyインタープリタの開発や、Java VMや.NETのCLRといった既存の環境でRubyを動作させるというアプローチの実現に向けて、さまざまな試みが行われている。

 Rubyは動的な型付けを特徴としている。これはRubyコミュニティにおいてダックタイピング(あひるの型付け)として知られている。つまり、「あひるのように歩き、あひるのように泳ぎ、あひるのように鳴く鳥がいれば、その鳥をあひると呼ぶ」ということである。Rubyオブジェクトをあるコンテキスト内で(例えばメソッドの引数として)機能させるには、そのコンテキスト内で実際に起動されるメソッドを実装するだけでよい。そしてこういったメソッドは、何らかの抽象型として定義されるメソッド一式「すべて」である必要はない。これは大変柔軟性のある仕様だが、型付けに起因するエラーが実行時にしか判定されないということを意味している。Ruby開発者はこういったエラーを見つけるために、コンパイラに頼るのではなく、ユニットテストを念入りに行うのが一般的である。なお、Rubyには2001年から、ユニットテスト用フレームワークが含まれるようになっている。

 Rubyはテキストベースの言語である。すべてのソースコードはテキストファイルとして保存されるため、われわれが愛用しているどのようなUNIXコマンドラインツール(または他のOSにおける適切なツール)を用いても検索や操作を行うことができる。また、テキストベースということは、Rubyのソースコードをあなたが使用しているバージョン管理システムにスムーズに統合できるということも意味している。

 Rubyは簡潔な言語であり、多くの場合、同じ結果を出す方法がいくつも存在している。このため、開発者はある特定のコンテキストにおいて最も表現力の高いシンタックスを選択できるようになる。これはミニマリストのインタフェースではなく、人間的なインタフェースだと言える。Rubyでは予約語の数が比較的少ない。他の言語ではキーワードとなっている動作の多くが、Rubyでは何らかのオブジェクトのメソッドとして実装されている。これは、1つの動作に対して複数の実装が存在するということも含め、Rubyに柔軟性をもたらしている特徴の1つである。とは言うものの、これはRubyがクセのない言語であるということを意味しているわけではない--Rubyには確かにクセがある。そして、さまざまな選択肢が存在するということは、Rubyのイディオムをすべて学習するには少し時間がかかるということを意味している。

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]