Entry

文書駆動型のシステムをちょっと考える

2007年04月04日

昨年からボチボチ考えていることで,もう誰かやってくれってな感じになっているんですけれど,文書ドリブンなシステムってのを考えています。「文書ドリブン」なんて名前を付けるほどのことでもないし,「システム」とかいう程大層なもんでもないんですが。

どういうモノかというと,「システム自身が扱っている文書(データ)によってシステムが動く」みたいな仕組みのことです。

通常,システムには設定ファイルみたいなモノがあって,挙動を制御しますよね。んでもって,こうした設定ファイルや設定に必要なデータについてのデータのことを「メタデータ」というのでした。今考えているのは,このメタデータとシステムが扱うデータの垣根を取っ払ってみたらどうなるんだろう,ということなんです。つまり,システム自身が設定ファイルを書き換えてそれに従って動いたり,設定ファイルを通常のデータのように目的として扱ったりすることもできる……云々,という話です

おそらく,システム自身ガ自分の設定ファイルを書き換えるってな話は,結構あちこちで考えられていることなんだと思います。ですから,もうちょっと進んで,ネットワークの要素が加わえてみたいと思っています。

例えば,こんな設定ファイルを用意したとします。

<?xml version="1.0" encoding="utf-8"?>
<xsltProc styleSheet="foo.xsl" stream="http://example.com/foo.cgi">
  <xmlDoc uri="bar.xml"/>
  <xsltProc styleSheet="http://example.com/baz.xsl">
    <xmlDoc uri="foo.xml"/>
    <xmlDoc uri="THIS.xml"/>
    <xmlDoc uri="http://qune.cside.com/BAR.xml"/>
  </xsltProc>
</xsltProc>

この文書を処理する仕組みは大きく分けて,2つだけしかありません。1つは「この文書をメタデータとして読む仕組み」で,もう1つは「この文書について決まった処理を施す仕組み」です。ちょっと抽象的なので,もう少し具体的に言うと,前者は「この文書を設定ファイルとして読むためのパーサ」で,後者は「XSLTで変換する仕組み」です。パーサはいつも決まったことしかやらないし,XSLT の処理も設定ファイルによって引数が変わることを除けば,同じ処理を繰り返します。

で,この設定ファイルはどうやって読むのかというと,まず,xsltProc という要素は,「XSLT 変換処理をしなさい」という命令を与える設定です。スタイルシートの URI は属性で与えて,処理する対象の文書はその子要素になります。xsltProc がネストする場合は,子要素の変換結果が親要素の変換対象になります。また,xsltProc には,一応 stream という属性を付けています。これは,変換した結果をどこに投げるのか(標準出力とか特定の URL に POST で投げるとか)といった設定項目なんですけれど,これはまだ考え中……。

次に,その子要素になっている xmlDoc という要素は,単に「XML の文書ですよ」という意味しかありません。URI は属性で示します。別に XML である必要はないんですけれど,話を簡単にするために XML 限定ということにしておきます。

で,文書駆動型のシステムというのは,この文書自体が,別のプロセスから作られる可能性があるということです。XML は動的に生成できますから,設定ファイルも動的に作れるんですね。設定ファイルを動的に生成して,システム自体の挙動を変えられるようにしよう,というわけです(もちろんプロセスは別プロセスになるけれど)。

今考えているのは,例えばこの文書が THIS.xml という名前(URI)だったときの話です。この場合,XSLT の内容にもよるけれど,再帰的に自分を設定し続けることになってしまいますよね(※プロセスは別々)。これは多分危ない。ただ,これって一見危ないように見えるんですけれど,何かしら面白そうなことができそうな感じはするんですよね……。

また,このシステム自体は,CGI でもなんでもいいんですけれど,特定の URI で参照できることにしてみます。そうすると,uri 属性に自分のシステムの URI を加えれば,これまた再帰的になります。

ここら辺をボチボチ考えつつ,さっきプロトタイプを作ってみたんですけれど,あたしが眠いのでこの話はまた後日。でも,システムの核(エンジン)は小さいけれど,なんとなく大きな世界を扱える感じがしませんか?あ,しませんか,そうですか。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN