2002-01-17 (Thu)

_ XMLエッセイ

XMLは、プログラミングの世界でパラダイムシフトを起こすであろう技術です。そのさわりをちょっと書きます。

そんなにすごいの?とまず疑問に持つかもしれません。なんたって、テキストファイルにタグがついただけなのですから。XMLの構文自体はさほど難しくありません。

XMLのすごさは、その構文にあるのではなく、周辺技術のすごさにあります。XMLだと、様々な周辺技術の恩恵にあずかれるので、すごいのです。

ここをオブジェクト指向的に言えば、XMLは「型(Class)」に例えることが出来ます。個々のXMLドキュメントは、XMLインスタンスです。で、XML APIに対して実装された(APIをimplementした)有益なパッケージが沢山あるのです。だから、XML型に沿って(継承してor implementして)開発していけば、それらのパッケージにインスタンスを食わせることが出来るので、なにかと便利なわけです。

では、どんなパッケージがあるのかというと、個別技術としてはパーサーやXSLがり、アプリケーション単位では、Cocoon2に代表されるようなXMLを前提としたものがあります。

ここで重要なのが、「XMLドキュメント」はテキストファイルに限らないことです。XMLインスタンス(たとえばDOMツリー)なら、オブジェクトでもいいわけです。SAXイベントを起こすアプリケーションでも構いません。ここを見誤ると世界が広がりません。「XMLを起こすもととなるもの」がXMLです。

そこで、何がパラダイムシフトかと言うと、XMLに対する処理を書くのがプログラムの中心になりそうなのです。まるで、Windowsの登場により、Windowsアプリの中心がイベントハンドラの記述になったかのようにです。すなわち、

XML -> 処理 -> XML

というように、XMLに対する処理をコーディングし、XMLを出力するようにします。これをチェーンにして、アプリケーションが成り立つのが未来の姿になります。

処理は、XMLを入力するだけではありません。XMLをパースする途中でも処理を書けます。もっと詳しく書けば、

XML -> 入力パース処理 -> 処理 -> 出力パース処理 -> XML

という感じです。与えられたXMLに対し、originalな処理をプログラマはコーディングし、汎用アプリが処理できるようなXMLを出力します。

このアーキテクチャに沿っているのが、Cocoon2でありXerces2です。パラダイムが変わるには5年10年かかるでしょうが、その曙を見せてくれるのがこの2つです。

[]