Rubyの実装とサンプル・コード
Rubyプログラムを解釈する言語処理系としては,私の作ったインタプリタが最も一般的です(別掲記事「Ruby誕生の秘密」を参照)*19。このインタプリタの特徴は3つあります。
○C言語による拡張が容易
○ダイナミック・ローディング
○ポータブル
インタプリタ形式なので,記述したプログラムを即座に実行できます。処理性能上の問題に突き当たった場合や,既存のライブラリへのインタフェースが必要な場合は,C言語で記述したライブラリを使って問題を解決できます。
ライブラリをDLLにしておき,実行時に動的にロードすること(ダイナミック・ローディング)もできます。
このインタプリタは,Linuxをはじめとする各種UNIX系OSや米Digital Equipment社のVMS,BeOS,Mac OS X,Windows上で動作します(ポータブル)。NECのSX-3や米Cray社のスーパーコンピュータ上で動作したという報告もあります。
私のインタプリタは,Rubyの唯一の実装ではありません。別の実装として,Javaで記述されたJRuby(http:// jruby.sourceforge.net/)があります。Javaのライブラリとの相互運用性などを重視した実装になっています。
Rubyで記述したプログラム
Rubyの雰囲気をつかんでもらうため,いくつかのサンプル・プログラムを紹介します。文法などについてはほとんど紹介していませんが,だいたいの働きはつかめるのではないでしょうか。
図5は,Rubyに標準で付属するネットワーク・サーバー・ツールキットWebrickを利用して実装したHTTPサーバーです。短いコードでフル機能のHTTPサーバーが実装できています。
|
図5●Rubyで記述したHTTPサーバー 標準のネットワーク・サーバー・ツールキットであるWebrickを用いた。 |
図6は,RubyのTk*20インタフェースを使った簡単なGUIアプリケーションです。アプリケーションを実行すると写真1のようなウインドウを表示します。上の「hello」ボタンを押すと標準出力に"hello"という文字列を出力し,下の「quit」というボタンを押すと終了するというものです。
|
図6●Rubyで記述したGUIアプリケーション Tkインタフェースを利用した。 |
写真1●図6の出力結果 ダイアログ用ウインドウが表示されている。 |
図7は,竹内関数*21と呼ばれる関数呼出しのベンチマークに用いられる関数のコードです。Rubyではdefという予約語を使って関数(メソッド)を定義すること,特にオブジェクト指向っぽい外見ではないコーディングが可能であることがはっきり分かるでしょう。
|
図7●竹内関数のコード 関数定義の例を示した。 |
いまやRubyで記述されたプログラムはそれこそ星の数ほどあるのですが,その中でも印象的なものをいくつか紹介しておきましょう。
○tDiary
tDiary(http://www.tdiary.org/)は,ただ
ただしさんが開発したWeb日記システムです。tDiaryはテーマ機能とブラグイン機能に優れているため,広く使われています。
○QuickML
QuickML(http://www.quickml.com/)は誰でも好きなアドレスのメーリング・リストを作って使うためのシステムです。非常にお手軽で,無料のメーリング・リスト・サービスです。
○Alexandria
Alexandria(http://alexandria.rubyforge.org/)はGNOMEを使ったGUIベースの蔵書管理システムです。
蔵書管理といえば,「本棚.org」(http://pitecan.com/Bookshelf/)もRubyで書かれています。
○RPGツクールXP
RPGツクールXPは,エンターブレイン(http://www.enterbrain.co.jp/)が発売するロール・プレイング・ゲーム・ツールキットです。RPGツクールXPは,内部にRubyを組み込んでいるため,RubyによってRPGをプログラムできます。
自分でコードを書かれる方は,RubyのWebサイトが役立ちます。Rubyについて書かれた書籍も数多くあります*22。
|