Location : Home > Softwares > R Title : RServerManager |
![]() |
RServerManager
A Short Introduction
R (D)COM サーバは Microsoft Excel のような標準的なアプリケーションや強力な計算エンジン及びグラフィック・テキスト出力のレンダラとして R を使うために COM クライアント(例:Visual Basic, Perl)として様々な言語で書かれたカスタムアプリケーション用の機構を提供する。
R サーバパッケージの現在の実装では、クライアントアプリケーションにおいて使用されているそれぞれの R インタープリタを別々のアドレス空間にいれ、クライアントインスタンスにおいてさえインタープリタの複数のインスタンス用の異なるコードとデータセグメントを利用することを許している。
他方、クライアントアプリケーションに R の機能を明示するために COM/DCOM を利用するとネットワーク上の同じマシン上でも異なるマシン上であっても、複数のクライアントアプリケーション間で R インタープリタのインスタンスを共有することができる。インタープリタインスタンスを共有することはデータ・コードセグメントも共有することも意味する。
COM を使っての実装は、同時には1つのサーバの機能しか使わないようにインタープリタへのアクセスの同期に注意が必要である。
これらの単一インタプリタの共有という COM/DCOM の特徴を使うにはクライアントアプリケーション及びこれらの協力においてインテリジェンスの水準を要求する。1つのクライアントはインタープリタインスタンスを生成し、全てのクライアントがアある種のデータ変換を行ってこのオブジェクトにアクセスを行う必要がある。
このインタープリタの共有と管理を行うのが R Server Manager である。
サーバマネージャを使う
サーバマネージャの核は COM オブジェクト RServerManager.ServerPool
である。各クライアントアプリケーションはある共有インタープリタへのアクセスを確保するためにこの CoClass のインスタンスを用いなければならない。オブジェクトは R インタープリタを示す COM オブジェクトの共有コレクションへのインタフェースを提供する。
異なるマシン間のクライアントアプリケーションでサーバマネージャを共有するためには RServerManager.ServerPool
オブジェクトが全てのサーバインスタンスを管理するネットワーク上の単一マシンで稼動しなければならない。全てのサーバオブジェクトが1つの中央サーバマシンで管理されるため R インタープリタは同一マシンでインスタンス化されていなければならない。サーバマネージャは共有 R サーバを管理し、それへのアクセスを確保する機構を提供するだけである。
RServerManager
が稼動している限り R サーバを管理できる。スタットアップ時に実行するスクリプトに用いるか、サンプル "InitServers" を用いるかである。RServerManager
を用いた最近のプログラムが終了すれサーバマネージャは停止し、リポジトリ内の全ての R インスタンスも解放される。R プロセスの1つへの参照でも生きている限りプロセスは保持される。
サンプルアプリケーション InitServers
では新しい R サーっ場はサーバマネージャに対話的に追加できる。削除はできない。そのリストは既存の R サーバ(括弧にはいって)と、そのアクセス可能なサーバの数をキー付きで表示される。
共有利用
サーバマネージャからの要素を取得し("Item" 要素を取得するだけであることに注意)、共有利用に用いる。
共有利用とは同一の要素に対し誰もがアクセスできることを意味する。
例えばアプリケーション1がキー "R" でサーバを取得していても、アプリケーション2から同一のサーバにアクセスすることができる。これにより共有のデータスペースを利用できる。
詳しくは SharedUse
サンプルを見よ。
排他的利用
サーバマネージャから1つの R サーバを取得し、このサーバの排他的使用を要請する(これが原始的な操作である)。他のアプリケーションからの要請があってもサーバへのアクセスは不可である。
使用後にロックを解放することを忘れないように注意すること。アプリケーション終了時に自動的に解放されるわけではない。
ExclusiveUse
サンプルを見よ。
共有利用は排他的利用で妨害することができる。例えば共有利用を要請するアプリケーションは排他的アプリケーションからのロックを尊重しない。同一の COM サーバに対してアクセス方法を混同して利用しないこと。
サーバグループ
同一の名称で複数のサーバを追加することができる。これはサーバマネージャにグループを生成することで可能になる。特定の名前のサーバを排他的に要請すれば同一の名称を共有するグループからただ1つだけのサーバ(最初のもの)のみを返す。
これはサーバプール用のよい機構である。
RServerManagerAdmin
RServerManagerAdmin は所与の R プロセスの集合を起動し、このサーバのプールを他のプログラムから利用可能にするプログラムである。
RServerManagerAdmin がコマンドライン引数なしに起動すると、それが置かれているフォルダ内でファイル StartServers.cfg を検索し、ファイル内の各行に対し R プロセスを起動する。プロセスは同等で同一のプロセス名が複数のプロセスで利用されると起動する。実行ファイルに対しショートカットを作り、このショートカット内でコマンドラインを修正するとサーバの異なる構成に対するコマンドを実行することができる。Windows のショートカットはこのようにして構成され、実行時には最小化される。この場合、RServerManagerAdmin はシステムトレイのアイコンとして現れるだけである。
![]() |
Updated : 2008/05/26 |