HTTPサーバーとWeb開発

70. XML Toolkit

OS V5R4M0 には PTF として、そして Ver6.1 には、「IBM XML Toolkit」が
無償で IBM から提供されている。
XML Toolkit を使う目的は XMLパーサーである。
XMLパーサーとは XMLのタグを切り出すプログラムであり、XMLパーサーを使って DOM と呼ばれる、
XMLのツリー構造モデルを作成することである。
一般に XML を適用業務で扱うためには DOM という構造化記憶のプログラムを作成する必要がある。
米国誌にも XML から RPGによって DOM を自作したり、XML Toolkit の使用方法を解説する記事も
少なくはない。
現在のところ IBM XML Toolkit を導入することができるのは OS Ver6.1 だけである。
そこで早速 IBM XML Toolkit を取り寄せて弊社の OS Ver6.1 に導入してみた。
導入ガイドは全く付属されておらず CDの表面には、

     US GOVERMENT USERS RESTRICTED RIGHT USE

という表記があるのは気になったところであるが数時間かかって、ようやく導入して
IFS に書かれた文書マニュアルとサービス・プログラム(*SRVPGM) を見て驚いた。
XMLパーサーのAPI はライブラリー QXMLLIB の QXML4C560QXSL4C1100 等の
サービス・プログラムであるがなんともこれらの *SRVPGM がバカでかい。
いずれもサイズが 15MB から 21MB である!
ただの *SRVPGM が 21MB !?
ALASKA のベース・メイン・モジュールである URLMOD5 と比べてみよう。

サービス・プログラムライブラリーサイズ
QXML4C560QXMLLIB21704704
URLMOD5ASNET.COM720896

いかに XML Toolkit のサービス・プログラムが巨大であるかおわかりであろう。
URLMOD5 の約 30倍以上 のサイズである。
中身を見ればさらに驚く。ある EXPORT されているプロシージャーの名前のひとつは

     __ct__Q2_11xercesc_2_617AbstractDOMParserFCPQ2_11xercesc_2_612XMLValid
    atorCPQ2_11xercesc_2_613MemoryManagerCPQ2_11xercesc_2_614XMLGrammarPoo
    l     

これは何とプロシージャーの名前である !
米国誌にも XML Toolkit のプロシージャー名は長すぎる、との記事があったが
これほどのものとは思わなかった。
サービス・プログラムが巨大であるため DSPSRVPGM を実行しても、
なかなか結果の表示も戻ってこない。
米国誌には XML Toolkit の使用を推薦する記事が何度も掲載されているが
このような巨大なサービス・プログラムとなっている理由が IFS の文書を見て判明した。
XML Toolkit は Apacheプロジェクトの XML Toolkit をそのまま
System i に PORTING したに過ぎないからである。
Apacheプロジェクトは今となっては見るべき技術力は少なくなっており
アマチュア、素人の寄せ集めであり、実用的なパフォーマンスや再利用に関しての考慮が
ほとんどないと言わざるを得ない。
Apacheプロジェクトの開発者は実用面やパフォーマンスなど興味がなく
動きさえすれば何でもいい、と考えているのであろう。
そんな結果でいいのであれば誰でもできる。
たかが XMLパーサーに対してこれほど巨大なオブジェクトを作成したのでは
現実ではパフォーマンスどころか、ほとんどの System i上では遅くて使い物にならないだろう。
DOM に必要な XMLパーサーを自作したとしても XML Toolkit の 50分の一くらいのサイズで
十分できあがるはずである。
当初は XML Toolkit をバンドルしようと計画したが、これでは使い物にならないし
そうすると XML Toolkit をバンドルしている製品が既にあったとしても
まず動かないだろうと推測してしまう。

【 参考 】

弊社で構造化記憶のできる XMLパーサーの基本的なものを作成したところ
わずか C/400 約150ステップでツリー構造としてXML構造を解析できるプログラムを
数時間で作成してテストもすることができた。
この小さなプログラムでもあらゆる構造のXMLに対しても基本的な XMLパーサーの機能を
持っている。
構造化記憶の処理は新しい技術ではないのである。