全国の『群青色の健一郎』ファンの皆様。こんにちは。
真紅たちは、私が次々に紡ぎだすRubyプログラムのおかげをもって、襲い来る難関を次々と攻略していきつつある。
非常にめでたいことである。この調子で行けば、きっと『暗黒のオーブの法定代理人たる、姿も形も名前もない悪の意識集合体』ゴメラドワルを打倒し、光と暗黒の二つのオーブを景気よく叩き割るという大業を全うすることができるであろう。
さすれば、私と洋子、そして真紅の三人は仲睦まじく暮らしていけるに違いないのだ。
そして、私といえばなんと今、サンフランシスコ国際空港に立っているのである。何故そのようなところに立っているのか。別にアメリカ製スーパースターの到着を待ってパパラッチするつもりでは毛頭なく、日本に帰るのである。成田空港まで12時間程度の空の旅だ。
体力はもう九分九厘回復し、ようやく退院の許しが出たのだ。都合8日間入院していたことになる。破綻してしまった会社の後始末に付き合うよう、近藤から泣いて頼まれたが、情けなさ過ぎて涙も出ず、完全に無視して袂を分かってきたのだ。あのような大うつけにこれ以上付き合っている場合ではない。多額の負債は、己の責任で弁済するがよい。日本と違って、アメリカは失敗者でもチャンスと才覚さえあれば巻き返せる国なのだから。わはは。
チェックインを既に済ませて、後は搭乗時間を待つだけである。パソコンはあるがネットワークに繋ぐ事ができず、真紅たちの様子をウォッチすることも叶わぬから、久々にプログラミング言語Rubyについて思いを馳せてみようと思う。
ということで、今回はRubyの『クラスライブラリ』について考えてみたいと思う。
オブジェクト指向プログラミング言語処理系に必須の要件として、『クラスライブラリ』の存在がある。これがないと、プログラマは何をするにも結局一から全てを実装せねばならなくなり、『なんだ結局手続き型や構造化といった従来型のプログラミング言語と同じじゃんかよ』と、利用者達を絶望のどん底へ突き落としてしまうのである。最悪の場合『こんなんじゃボク、どうしていいかわかんなぁーい』ということになってしまうのである。
『クラスライブラリ』とは、普通にプログラミングするにあたってないと困る機能で、わざわざ利用者に実装させる必要のない機能を、カテゴリ別に分類して提供するものである。以下はRubyに特化するのものではなく、一般的にクラスライブラリとして準備されているものを列挙してみたものだ。
・標準入出力
・ファイルシステムI/O
・数値や文字列などの基本型
・配列
・数学関数
・正規表現
・日付時刻
・スレッド管理
・例外処理
・ウインドウやGUI部品
Rubyは基本的にコンソールベースで動作するインタプリタであるから、GUI機能は標準では存在しない。ただし、TKやGTK等のGUIライブラリを使用できる拡張クラスが存在して、非常に楽しいわけだが、好き好んでWindows向けGUIアプリケーションを無理してRubyで作らなくてもよいのではないかと私は思う。何事にも適材適所というものがあるから。
Rubyにおいては、必要最低限のクラスがインタプリタに組み込まれているが、その他は拡張という位置づけで付録として配布パッケージに同梱されている。
拡張クラスの中には、ソースコード形式即ちテキストで提供されているものもあるし、バイナリで提供されているものもある。勿論、同梱されているクラス以外にも、インターネットの大海原から、どこかの誰かが作成したものをサルベージしてくるという方法もある。
配布パッケージに同梱されている拡張クラスとは、もともとRubyユーザーが自発的に作成したものが広く一般に認知されたため、標準クラスとして採用されたという経緯があり、これをお読みの貴方も、便利で役に立つクラスを作成すれば、配布パッケージに混ぜてもらえる可能性があるのだ。オープンソースのプロダクトというのは、多くの人がよってたかって成長させるところが魅力なのだ。
Rubyの『クラスライブラリ』について考えるといっても、拡張クラスまで含めると、いつまでたっても終わらないのである。なぜなら、既に多種多様なクラスライブラリが同梱されているし、今こうしている間にも新しいクラスが誕生しているかもしれないからだ。
RAAというサイトがある。RAAとは(Ruby Application Archive)の略だ。
このサイトには、全世界のRubyファンが作ったアプリケーションやライブラリがごちゃまーんと集結している。
拡張ライブラリだけをみても、なんと1,000を超えるのだ。『こんなもの、一生使い切れません』と嬉しい悲鳴を上げたくなるほどなのである。
ちなみに、ActiveAcriptRubyをインストールされている場合は、
[ActiveScriptRubyをインストールしたフォルダ]\lib\ruby\1.8
に、拡張ライブラリがどさっと入っているので、ちょいと探求の旅に出られるとよろしかろう。
さらに、ActiveScriptRubyは、ダイナミックHTMLとして動作する場合はブラウザのオブジェクトが使用できる。この件については、大量に出版されているJavaScriptの書籍、またはインターネットに溢れかえっているJavaScriptやダイナミックHTMLの解説サイトがそのまま参考にできるのだ。
例えば下記のサイトなどは、オブジェクト別に解説してあり、オブジェクトの階層も一覧できるので非常に役に立つと思う。
ブラウザのオブジェクトを使いこなすために誕生したJavaScriptと違って、RubyScriptでは、オブジェクトをいきなり参照することができない。
これはどういうことかというと、
JavaScriptでは、
document.title="Ruby・イン・ワンダーランド";
とできるところをRubyScriptでは、
@window.document.title="Ruby・イン・ワンダーランド"
と、しなければならないのだ。RubyScriptではオブジェクトの最上位から記述し、名前を解決しなければならない。そのためには、オブジェクトの階層が上記サイトの階層図が役に立つのである。
さらにさらに、ActiveScriptRubyでは、win32oleという拡張クラスにより、COM(Component Object Model:コンポーネント・オブジェクト・モデル)で、外部にメンバを公開しているプロダクト(代表的なものでは、ExcelやWord)の機能を拝借することができるのである。
貴方が職業プログラマであれば、もしかすると、VisualBasicその他の言語からCOMテクノロジーを利用してExcelに帳票を出力させたという経験があるかもしれないが、Rubyを使ってでも同様なことができるのである。
こうなるとRubyの解説をはるかに超えてしまっているので、ここでは『そんなこともできるんだよー』という解説のみにとどめておこう。
最終更新:2009年03月04日 19:17