TOP>>OBAQ>>OBAQシェル 概略ツアー<OBAQ>構成定義アプリケーションサーバリファレンスサイトマップ

OBAQシェル


OBAQシェルとは何か?

OBAQシェルとは「オブジェクト指向に基づく汎用の構成定義ファイルパーサ」です。

例えば、Apacheの構成定義ファイル(httpd.conf)を見てみましょう。

# サーバ全体に対する指定
ServerType standalone
ServerRoot /etc/httpd
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid

# ディレクトリに対する指定
<Directory /home/httpd/icons>
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# VirtualHostに対する指定
<VirtualHost ip.address.of.host.some_domain.com>
    ServerAdmin webmaster@host.some_domain.com
    DocumentRoot /www/docs/host.some_domain.com
    ServerName host.some_domain.com
    ErrorLog logs/host.some_domain.com-error_log
    CustomLog logs/host.some_domain.com-access_log common

   <Directory /home/httpd/icons>
     ....
   </Directory>
</VirtualHost>

一般にapacheのように複雑なソフトでは、このように構成定義ファイルも複雑になります。 OBAQシェルは、このような複雑な構造を持つ構成定義ファイルを読んで、 プログラムの初期設定を行なう処理を記述するためのフレームワークです。

OBAQシェルでは「構成定義=モデルオブジェクトの生成」という考え方で、 次のようなプログラミングモデルを想定しています。

  • 稼働するシステム内の個別の機能(DirectoryやVirtualHost)はひとつのクラスとして表現されている
  • ユーザはそれらの個別の機能を組み合わせて、自分の要求するシステムを組み立て、その結果を構成定義ファイルとして記述する
  • プログラムは、起動時に構成定義ファイルを読みこみ、相互に関連する一連のオブジェクトを生成する
  • プログラムのメインルーチンは、そのオブジェクトに対して最も基本的な指示をする
  • 後は、オブジェクト自身が自律的に他のオブジェクトと協力しながら処理を進める

つまりOBAQシェルは、外界(処理対象)の「モノ」に対応する(シミュレーションする)オブジェクトの生成を行なうライブラリです。 これを利用することで、以下のようなメリットがあります。

  • 拡張性、柔軟性の高いプログラムを簡単に記述できる
  • プログラムの機能を追加しても、構成定義パーサを変更する必要がない
  • ユーザがプラグインによるカスタマイズを簡単に行うことができる

もし、上記のhttpd.confをOBAQで記述するとしたら、以下のようになります。

# サーバ全体に対する指定
Server
 type=standalone
 root=/etc/httpd
 lockfile=/var/lock/httpd.lock
 pidFile=/var/run/httpd.pid

  # ディレクトリに対する指定
  Directory /home/httpd/icons
    .set_ptions Indexes MultiViews
    allowOverride=false
    .set_order allow,deny
    .allow from all

  # VirtualHostに対する指定
  VirtualHost ip.address.of.host.some_domain.com
    admin=webmaster@host.some_domain.com
    root=/www/docs/host.some_domain.com
    serverName=host.some_domain.com
    errorLog=logs/host.some_domain.com-error_log
    customLog=logs/host.some_domain.com-access_log common

   Directory /home/httpd/icons
     ....

このテキストファイルをOBAQファイルに渡すだけで、 ServerとかDirctoryとかVirtualHostというオブジェクトが生成され、 それぞれ必要な属性が設定され、各オブジェクト間の関係が設定されます。

もちろん、Server, Directory, VirtualHost というクラスとそれが実際に動作するためのメソッドは記述する必要がありますが、 上記の構成ファイルからオブジェクトモデルを生成する処理はOBAQシェルが行ないます。

これによって、プログラマーは実際に処理に専念でき、ユーザは個別のフォーマットを学習する必要がなくなります。 また、両者にとって最も少い負担で機能を拡張することができます。


ページトップへ