XMLの事

最近すんごい仕事が多くて今日も一度呑みに行ってからまた会社に戻って仕事しててなんつーか凄い頭悪いっていうか絶対長い時間働いても能率落ちるだけだし、って思うんだけどやっぱり周りが帰らない時に自分だけ帰るのは難しい。
この間まで比較的暇だったのになんでいきなり忙しくなったかっていうと、話は一年程前まで遡る。その頃僕はCの仕事に早くも飽き飽きして、僕RoboCode得意だしJavaがやりたい、やらせてくださいとか騒いでたんだが全然無視されててその頃クライアント側を.NET環境で作り直すって話が出てきたもんだから、そっちに移らせてもらおうと思ってC#の勉強をしてた。そんで本家WikiWikiよりも低機能なWikiWikiクローンをC#で書いて悦に入ったりしてたんだが、結局僕はサーバ側に残る事になった。クライアント側の仕事はその後大変な状態に陥ったので、僕は密かにサーバ側に残ったのは実に大正解であったと思っていたんだが、先月末に「ちょっと来い」「なんでしょうか」「君、去年.NETの勉強をしていたよね?」「いえ、全くしていません」「そうか、じゃあサーバ側も落ち着いたから今日からクライアント側の手伝いをしてくれたまえ」ということでクライアント側の手伝いをやらされる事になったのでした。
僕はC#の勉強をしていたといってもVS.NETを購入していたわけではなく、コマンドラインコンパイラしかつかった事が無かったので、GUIは無理だから、XML周りをやらせようってことになったらしい。っていうか、言語C#じゃなくて、VB.NETだし。一応、Webサービス?というものを利用しているらしく通信をXMLでHTTPでやってるんで(それがWebサービスの必要条件を満たしているのか良く分からないのだが)、兎に角大量、多様なXMLファイルを扱わなきゃいけないので有る。ソースは1から書くのではなく後輩が書いたものを真似しながらやれば良い、という事であったのだがその後輩の書いたソースが凄くやばい。見た目も汚いし、どう考えても一瞬で終わるはずの処理が初回起動時で10数秒、呼び出しを重ねるごとに処理にかかる時間が増えていく。
そんで昨日はその信じられないくらい遅い処理の原因を探るべく色々試してたんだが、どうもとあるメソッドを数百回呼び出すとどんどん処理が遅くなるらしいって事がわかって、それはマイクロソフトの不具合?なのか呼び出し方がよくないのかわからんのだが、違う方法で処理して直した。でもその改修も実は無駄で、.NETのツールにXSDファイルからClassを生成するツールがあり、そいつを使えば簡単にシリアライズとデシリアライズXMLファイルを読み書きできるって事がわかってそいつを使うために必死に調査したんだがなんか生成されたクラスを使うと、コンパイルは出来るのに実行時に変なDLLが見つからないとか実行エラーになって落ちるしそんなDLL、Googleで検索しても一個も引っかかんないし勿論HDの中にも無いし全く意味わかんねーっつーかこれどういうことよ?って思って原因を調査したらどうもDLL云々は全くの出鱈目で要するにXSDファイルの不具合が原因でして、ほんと最悪だった。チョベリバでした。XSD書いた奴は駄目な奴。