著作一覧 |
先週から久々にXML使いまくるJavaのプログラムをメンテしてたんだが、やっぱりえらく使いやすい。
SAX使ってちょろちょろ読み込んで(javaxのインターフェイスシリーズだから、ストリームを用意するところだけがちょっと面倒だとは思うが)、あとはContentHandlerをとっかえひっかえするだけでオブジェクトモデルが生成できるんだから、こんな便利なもんはないと思うんだけどなぁ。で、だいたい、そういうオブジェクトはそのままストラテジとして使えるから、読み終わるころには、評価器が完成しているわけだし。(ここでは、XMLで記述されたパラメータということなので、実行時に処理すべきデータに対して、パラメータを適用するのにストラテジパターンが適用できるということ)
というところからさらに考えてみると、XMLを嫌う人ってどういう人なんだろうか?
・書く人
XML単に書くだけでもバリデータとか使えるし、構文エディター使えば楽だとは思うが、メモ帳とかで書くんだろうか? だと単なるリソースバンドルよりは閉じタグの分だけ記述量が多くてうんざりというのはわからないでもない。
記述量の問題は別問題で、それはそういうスキーマが悪いだけだろう。
・読み込む人
DOMしか使わないとか? XPath使うからとか?
正規表現で引っかける(時々そういうのも書くけど)とか、SAX使うとかするとえらく楽なんだが、違うんだろうか。
どう考えても、自分でスキーマもきらなければ、パーシングもしない人がXMLを嫌っているとしか思えないんだよな。
ちゃんとスキーマをきれば、テキストエディターで編集可能な形式で永続化されたオブジェクトを作れるし、SAXを使えば構造的な読み込みができる=構文木を作るのがえらく簡単。
もちろん、JavaScriptのシステムならJSONが良いとか、.NETならCodeDOMで処理できるテキストが良い(ってことは、プログラムのソースってことだが)とか、RubyならオレDSLのほうが、とかいうような比較の問題として、XMLはタコと言っているのなら理解できなくもない。でも、どっちにしたって、ホモなプログラミング言語環境だけを考えている時点で、XMLを選択しているのが間違いなわけだし(JSONは十分にヘテロで通用すると思うけど)。YAMLは、javaxにインターフェイスが入ってJakartaがパーサ実装を提供したら使うかも、程度。積極的にXMLから乗り換えるほど素晴らしいとは思わない。Rubyでなら話は別だが。
というわけで、もっと大きな疑問として、Javaで、Java6(Java5とは言わない)でシステム作っていて、かつXMLがいやなら、上から、JSON(Rynoが標準だから)またはGroovyまたはJRubyなDSLを使うというのは、まあ確かにXMLより良い選択肢だと思うわけだが、本当に、そういう利用方法しているんだろうか? というのもある。
#もちろん、実際には実行時に可変な部分がまったくないのに、なぜかパラメータ化されていて、かつそれがXMLだとしたら、こもんたれぶーたれぶーなのもわかるけど、本当にそんなのあるんだろうか? 専用ですむところに汎用を適用してるだけじゃないかとか。専用で済むというか、専用化する=規定通りにものごとを動かす=CoCということで、それはなんというか、当たり前のことではあったのだ。オレ専でいくか、アレ専(ありものを使う場合)でいくかの違いだよね。
#XML使いまくる車輪を後生大事に使ってるだけなのかも。だったら、車輪を自分で作ればいいじゃん。お菓子がなきゃパンを食えば良いのに、その肝心なところで天動説な人たちはいるからな。
ああ、元ネタのITProのやつを読んだら、なんとなくわかった。今や、SAXが機械語、DOMがCになっていて、しかしみなさん、高級言語しか知らないと、そういう話なのか。どうでも良いことだな(それは間違いだから。パーサ書いたことがないんだろう)。というか、WS-Securityは(ある意味予想通りに)あまり使われていないんだろうか。
面白い。
消えるべきときに消えそこなったら逆に生き残り続けられる。という教訓ってことではなさそうだ。
むしろ、作り手のバージョンアップの魔の手からうまく離れられた例として考えると興味深い。
追記:あらためて読むと、
この頃になると、そもそもに対戦相手が居なかった。
しびれるなぁ。
ジェズイットを見習え |
まさかこの話題に反応があるとは(^^;
正直なところスト3(ストリートファイターって名前はまあ知ってる)がどうだかはまったくわかんないけど、奇妙なほど愛にあふれた文章で、すごくおもしろかったです。<br>正直なところ、すごい文章力だと感服しました。
なんか、正直が2個も並ぶと不正直みたいだな。