Ruby 1.8.x には分散オブジェクトシステムを実現するためのライブラリ「dRuby」が標準添付されており、ごく普通の Ruby オブジェクトをプロセス/ネットワークを越えてシームレスにやりとりできることをご存じでしょうか?
本書では、dRuby について、最新の情報をまとめること、そして dRuby とその周辺のライブラリを理解し応用するためのチュートリアルとなることを目的として、その仕組みからアプリケーションの作成方法までを、dRuby の作者自身が解説しています。
本書は読者に分散オブジェクトシステムについての知識を要求しません。 分散アプリケーションの設計方法や実装方法、そしてはまりやすい点までもを豊富な図とサンプルでわかりやすく解説しています。 他方、DCOM や CORBA といった他の分散処理システムに慣れた読者にとっても、dRuby の設計思想を知り、Lightweight-Language 特有の「手軽さ」を味わえる構成となっています。特に Web アプリケーションへの分散処理システムの応用は刮目に値するでしょう。
「Ruby や dRuby でアプリケーションを書きたい」、「分散システムやマルチスレッドプログラミングに好奇心をかきたてられる」、「J2EE などちょっと大掛かりなシステムに疑問を感じている」、「クライアント/サーバ型のネットワークプログラミングや CGI/JSP/ASP/Servlet などウェブプログラミングに興味がある」、どれかにあてはまる人に本書はおすすめめの一冊です。
関といいます。
もう覚えている人も少ないと思いますが、dRuby という分散オブジェクトシステムを作りました。 Ruby の普通のオブジェクトをマシン/ネットワークを越えて交換したり、メソッド呼び出したりできる小さな仕様のライブラリです。 気軽でかっこいい Ruby のような使い心地に近付くことを意識しました。 ですから、Java RMI や CORBA や DCOM、Sun RPC を学んだ方には、ぜひその手触りの違いにがっかりして欲しいと思っています。
先日、その dRuby を用いたプログラミングの本を出版させてもらいました。 二度目の出版の機会を与えてくれたオーム社の森田さんに感謝しています。 ルビーをくわえたツバメの表紙がステキな本です。 表紙のカバーを取り外したときの色使いもなかなかのものです。 もし手に入れたら、一度カバーを外してみることをおすすめします。
この本では、irb を 使った対話的な実験をたくさん用意しました。 対話的に別プロセスのオブジェクトを操作しながら、dRuby の不思議な感覚に触れてることができると思います。
ruby-1.8.x に添付される最新の dRuby に関して解説しているほか、dRuby の周辺にある ERB、Div や Rinda、Ring といった有名無名のライブラリも紹介しています。
この中で ERB は唯一、広く知られているように思います。 文書の中に Ruby スクリプトを埋め込み評価するライブラリの一つです。
Div は Web GUI のためのフレームワークの一つで、セッション管理を行う Tofu とページ生成、リクエストのハンドリングを行う Div::Div で構成されます。 RDBMS に関する機能を、わざと入れていない辺りが Rails と大きく違います。
Rinda はプロセス間協調糊言語 Linda の Ruby による実装です。 タプルスペースと呼ばれる、複数のプロセスが協調するためのしかけを提供します。 Rinda と dRuby を利用して、コンフィギュレーションなしで名前サービスや依存するサービスとの同期を行うのが Ring です。www.druby.org の CMS は Ring を利用して作られています。
そうそう。
この本のタイトルは「dRuby による分散・Web プログラミング」です。 実は本書、dRuby を使用して分散プログラミングを解説する本なのです。 「分散プログラミングはこういうものなのだっ!」と声高に言えないシャイな私は、dRuby やその周辺の解説をする振りをして、行間にそれを書くことにしました。 どんな時に、どんな風にプロセスを分割するのか、複製をいかにもたせるのか、 スレッドにすべきか、どうやって協調するのか、いろいろなことを考えるきっかけになると、とてもうれしいです。
Ruby が私の OOP 観を再構築してくれたように、dRuby が誰かのプログラミングの幅を拡げることを願っています。なんてね♪
Rubyist Magazine では、一周年記念企画として本書のプレゼントを行っています。詳しくは 【一周年記念企画】 プレゼント をご覧ください。