RADを使え

何でパースが遅いのかという問題。
唐突ですが、プログラムの話ね。XML形式のテキストファイルの構造解析をするライブラリがある。今はVC++を使っているのでMSのXML Parserを使っているのですね。そのバージョンがちょっと古い(バージョン3)のもあるけど、やっぱり書き方の問題だろうなと。ネストした構造を解析するのは再帰を使うしか無いんだけど、この書き方ってセンスが出るのよね。どこまで関数にまとめて、どういう単位でループさせるか。
最終的にParserを呼び出すわけだけど、これがDLLなので、あらかじめIFのプロトタイプ宣言を定義しておく必要があり、当然その引数の型や順番もDLL実装にあわせて書かねばならない。この型が違ったり順番が違ったりするとバグだし、呼び出し先のAPIの使い方がそもそも想定と違ってもバグだし、バージョンが違うとそのIFや動作が違ってることもあったりする。とにかくいろいろ気を使わないといけないのですよ。
そう、これがC++、VC++というもの。そういう前提知識がないと、様々な原因で不具合を埋め込むことになる。品質はプログラマのスキルに激しく依存する。まあそれはVC++に限らないのだけど、そういうバグの入り込む余地をツールで減らすことはできるのですよ。それがRADというやつ。Rapid Application Development。「迅速なアプリ開発」という意味だけど、特に注釈なしでRADという場合、そういう開発ができる環境、ないし開発ツールを指すことが多い。一般的に知られているのは Visual Basic(VB)とか Delphi とかですね。最近だと .NET Framework を導入した Visual Studio(言語は C# とか VB.NET)など。
例えばDelphiなら、VCLというコンポーネント群に最初からXMLパーサのラッパがあるのよね。.NETなら、XMLReader というクラスがある。そういう部品にXMLファイルをまるっと食わせれば、あとはその欲しい要素名を指定するだけで値が取り出せる。
ちなみに、私はクライアント側をつくってるですが、サーバ側は C# らしいのよね。なので、おそらく .NET の XMLReader が使われてる。それと比較されて、私のパース処理が遅いといわれており、そりゃこっちは自作みたいなもんだからね。天下のMS様がつくられた処理に比べたらいろいろイケてない書き方にもなっておりましょうよ。ごめんなさいね。でも、VC++で書けっていってきたのはうちのボスですから。こっちも C# 使ってりゃ同じような品質になったと思うんですよ。
そう、それがRADの強さ。なるべくプログラマのスキルの介在機会を減らす効果。これは安定した品質にも寄与するわけですよ。
そもそも、何でXMLなのか。速度重視なら、そんな重い形式使わなくても、もっと単純でフラットなテキストデータで通信したら良かったんじゃないの。

タイトルとURLをコピーしました