第2回:Rubyを使ったエンタープライズ・インテグレーション (3/4)

Toward Integration/システム統合への道
Toward Integration/システム統合への道

第2回:Rubyを使ったエンタープライズ・インテグレーション
著者:IONA Technologies  Steve Vinoski
訳者:日本アイオナテクノロジーズ  江川 潔   2006/10/18
前のページ  1  2  3   4  次のページ
ネットワークとミドルウェア

   エンタープライズアプリケーションは、ネットワークを介して互いに通信を行います。単純なソケットベースの通信を使う場合ではソケットをシンプルに利用できるのでRubyやその他のスクリプト言語が優れています。その他のエンタープライズアプリケーションは、CorbaやJava 2 Enterprise Edition、メインフレーム、あるいは様々なメッセージングの方式を利用しています。

   この本では最初に単純なソケットの例をあげて、HTTPベースのRubyアプリケーションを簡単に作ることができることを示しています。RubyのHTTPクライアントがシンプルに作れると期待されているかもしれませんが、むしろHTTPサーバが容易に開発できることを示しています。

   Ruby WEBrickフレームワークは、ビジネスロジック以外のHTTPサーバとしての複雑な動作をカバーします。WEBrickのアプリケーションモデルは、受信したHTTPリクエストによってフレームワーク上に実装された特定のメソッドを呼び出すところがJavaのサーブレットモデルとよく似ています。

   例えばHTTP GETリクエストに応答する場合、WEBrickフレームワークはこのリクエストを処理するために作成されたRubyサーブレット上のdo_GETオペレーションを呼び出します。またWEBrickは、ファイルの処理(File-Handlerサーブレット)やCGIスクリプトの実行(CGIHandlerサーブレット)などの様々なサーブレットを提供しています。

   WEBrickのような機能では、XML-RPCやSOAPのようなHTTPベースのプロセス間通信をRubyアプリケーションが非常に簡単に処理できるようになります。もしXML-RPCアプリケーションと通信しなければならなかったり、システムにXML-RPCのサポート機能を追加するときは、XML-RPCの完全な実装を備えているxmlrpc4rモジュールを使うと簡単に実現できます。同様にRubyはSOAP 1.1を実装したsoap4rライブラリをサポートしています。

   WSDLベースのサービスとのインテグレーションでは、soap4rが提供するWSDLDriverFactoryクラスがWSDLファイルを参照し、WSDLが定義しているサービスに対する実行時のクライアントプロキシとスタブを生成します。またsoap4rが、WSDL文章で定義されたサービスをベースとしてRubyのコードを生成する「wsdl2ruby」と呼ばれる個別のツールを提供します。

   同じように、WSDLからJavaやC++のコードを生成するツールを提供しているWebサービスシステムは数多くあります。そのような同様のツールをよく知っている開発者にとって、wsdl2rubyの機能は、エンタープライズアプリケーションをRubyで開発するためのよい導入ポイントとなります。

   この本で記述されているすべての事柄をお薦めしたいと思っているのですが、ただCorbaの記述はいくつか問題があります。1991年からCorbaに関わり続けてきたこともあり、私は平均的な分散アプリケーションの開発関係者より多少知識があると思っています。特にCorbaの仕様については、数年に渡ってかなりの貢献をしてきました。

   この本では、Schmidt氏はCorbaのような仕様は大変複雑であり、「SunやBorland、IBMのような大きな企業だけがCorbaを実装する力のあり、そのような企業でさえも時々正しく利用することができない」と記述されています。しかし私の所属するアイオナテクノロジーズは、1993年から一貫してCorba市場のリーダであり、もっとも拡大したときでも500名弱の従業員で構成されていました。このことから、明らかにCorbaの実装が大きな企業に限られていることにはなりません。

   さらにこの本は、次のようにCorbaについて記述しています。

   「結果的に、現状では混乱しています。ほんの少しのプログラミング言語にしか対応しておらず、ベンダーの個別の拡張のために多くのシステムが相互運用できていません。このような古い"標準"は、すっかり、XML-RPCのような、新しくて新鮮な後継者に置き換わっています」

   この文章の中の3つの指摘はすべてが間違っています。まずCorbaの実装は、C、C++、Java、Smalltalk、Lisp、Ada、Cobol、PL/I、PhthonやPerlといった様々なプログラミング言語の環境でサポートされています。次に異なるCobraの実装の間の相互運用性は、実際にはScmidt氏が問題視しているよりも非常に良好です、最後に私は個人的にもXML-RPCに置き換えられたCorbaのプロジェクトを知りません。

   このようなテクノロジの性能やユーティリティ機能は、実効的に比較することができない程に異なっているのです。現在でもCorbaは多くのテレコムと金融アプリケーションで稼動しています。さらに高い応答性能と拡張性で、これらのアプリケーションをカバーしていて、すぐに置き換えられることはありません。

   Corbaの歴史や記述の誤りにも関わらず、この本ではRubyとCorbaのインテグレーションへの理にかなったアプローチを紹介しています。Rubyで完全なオブジェクトリクエストブローカ(ORB)を開発しようとするのではなく、Ruby Javaブリッジ(RJB)によってCorbaのJavaクライアントとRubyをインテグレーションすることを薦めています。

   RJBによってRubyアプリケーションはJavaのクラスをインポートし、Java Native Interface(JNI)を介して透過的に呼び出すことができます。これによりクライアントは簡単にCorbaサーバのアプリケーションを呼び出すことが可能です(この本では、この他のアプローチとして、Java virtual machine(JVM)上でのRubyの実装であるJRubyを利用するとCorbaクライアントにRubyを組み込むことを紹介しています)。

   またSchmidt氏は、CorbaクライアントがWEBrickサーバとなり、効率的にCorbaアプリケーションへアクセスするHTTPのルートを提供する方法も示しています。

前のページ  1  2  3   4  次のページ

Translated from the original English version and reprinted with permission, from "Enterprise Integration with Ruby" IEEE Internet Computing July/August 2006 issue of the "Toward Integration" column, by Steve Vinoski, vol. 10, no. 4, 2006, pp. 91-93.(c) 2006 IEEE.
IONA Technologies,Plc. Steve Vinoski
著者プロフィール
IONA Technologies,Plc.   Steve Vinoski
IONA Technologiesの主管エンジニア。
17年以上にわたりミドルウェアの仕事に従事し、Object Management Group(OMG)やWorld Wide Web Consortium(W3C)においてミドルウェアの標準化に貢献している。IEEE Internet Computing Magazine の"Toward Integration"コラムを執筆しているほか、IEEE Internet Computing MagazineとInternational Journal of Web Service Researchの編集委員を勤めている。
日本アイオナテクノロジーズ株式会社  江川 潔
訳者プロフィール
日本アイオナテクノロジーズ株式会社
テクニカルセールスマネージャ  江川 潔

株式会社富士通SSLでNTT仕様のオペレーティング・システムの開発に従事したのち、日本ディジタルイクイップメント株式会社でNTT向けシステムの開発、その後、ソフトウェアとハードウェアのプリセールス活動を展開した。DECの合併を経て、現職のミドルウェア製品のマーケティング、アライアンス、プリセールスなどに従事。


INDEX
第2回:Rubyを使ったエンタープライズ・インテグレーション
  ダイナミックなスクリプト言語
  XML
ネットワークとミドルウェア
  REST vs. SOAP
Toward Integration/システム統合への道
第1回 The Social Side of Services/サービスの社会的な側面
第2回 Rubyを使ったエンタープライズ・インテグレーション
第3回 Rubyの拡張によるアプローチの違い

人気記事トップ10

人気記事ランキングをもっと見る