|
はじめようRuby Webアプリケーションの開発手段としてRuby on Railsが爆発的に広まっています。Twitter.comのような秒間4,000メッセージを処理する高負荷なサイト構築に使われていることや、企業のシステム開発の標準プラットフォームとして採用が発表されるなど、利用範囲が拡大し、Rubyについての記事を目にする機会が増えてきました。 またRuby技術者認定試験もはじまりました。これからいっそうRubyは企業における採用が増えていくことでしょう。さらに利用が広がるプログラミング言語Rubyを、この連載ではじめてみてはどうですか? 手軽なオブジェクト指向スクリプト言語 Rubyは1993年から開発がスタートし、フリーソフトウェアとしてソースコードが公開されたのは1995年です。奇しくもJavaが一般に公開されたことやPHPの開発がスタートしたのも同じ年ですから、これらは同世代の言語と言えるかもしれません。Ruby on Railsによって、はじめてRubyを知った読者は驚くかもしれませんが、RubyはJavaと同じくらい歴史のある、そして若い言語なのです。 Rubyを開発したのは「まつもとゆきひろ氏」です。氏が当初、目指したのはPerlのように手軽に扱えながら、本格的なオブジェクト指向プログラミングができる言語だと語っています。 Rubyは、より歴史のある言語のLispやSmalltalkが持っている優れた特性を受け継ぎつつ、JavaやC#と同様の広く普及しているクラスベースのオブジェクト指向プログラミングをサポートしたプログラミング言語です。すでにJavaやC#に取り組んでいる方には入門しやすい言語ではないでしょうか。 動作するプラットフォーム RubyはLinux、Windows、Solarisといった代表的なOSで動作します。ほかにも様々なプラットフォームに移植されているため、Rubyで書いたプログラムは汎用性が高く、多くの環境で動かすことができます。 RubyはOS特有の機能やプラットフォームに依存したC言語のライブラリも簡単に呼び出すこともできるため、このような柔軟性を利用してシステム間やコンポーネント間のインターフェースの違いを埋めるグルー言語(注1)として活用することがよくあります。 そういったプログラムはプラットフォームに依存することになります。この点が実行環境に仮想マシンを用意して、言語とプラットフォームとの依存を切り離しているJavaとは異なります。
※注1:
糊付け言語ともいわれ、コンポーネント同士を結びつけることを主眼とした言語の総称をいう。
Rubyの特徴 Rubyは次のような特徴を持っています。
表1:Rubyの特徴 では、これらの特徴について、それぞれ簡単に紹介していきましょう。 すべてがオブジェクト オブジェクト指向プログラミング言語のRubyでは、扱うデータ型をすべてオブジェクトとして扱えます。 当たり前のことのようですが、C#やJavaといった言語ではオブジェクトではないデータ型も存在し、それぞれの違いを意識したプログラミングをしなければなりません。しかしRubyではそういった心配がなく、どんなデータも統一されたオブジェクトとして同じようにプログラムできるのです。実際にどのデータ型も単一の「Object」クラスを継承しています。 動的型付け Rubyは動的型付けの言語です。データを格納する変数にデータ型の指定や宣言が不要で、どんなデータ型でも格納することができます。VBAのVariant型の変数のようなものといえばわかりやすいでしょう。ちなみにJavaやC#では宣言したデータ型でないと格納することや実行時に変更することができません。 型を合わせるための努力が不要になるため、JavaでいうInterfaceが不要になり、簡潔にプログラムすることができます。 インタープリタ Rubyはインタープリタ型の言語です。プログラムのソースコードを逐次解釈して実行します。JavaやC#のようにコンパイル作業が不要で、プログラムを書いてすぐに実行して確認することができます。 補足ですが最新の開発版であるRuby 1.9では「YARV」と呼ばれるRuby仮想マシンを搭載し、中間言語にコンパイルしてから実行する仕組みになる予定です。中間言語へのコンパイルは実行時に行われる(ランタイムコンパイラ)ため、将来もインタープリタとしての使い勝手のよさは変わらないでしょう。
Ruby 1.9.1を試す!
先取り!Ruby 1.9.1 |
||||||||||
|
1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||

