コードとXMLのアンニュイな関係。


オレンジニュース経由でインスパイア*1

Strutsの本質的な問題点「複雑さをJavaコードからXMLに切り出しただけで本質的な難しさは解消されていない」


コードがJavaからXMLになってるだけ。ああ、まぁ、そうやね。


っつうかね、フレームワークエンジニアは、
結局極まるとコンパイラ作るしか無くなるんじゃねぇかなぁ…と思う訳で。


どういう事かと言うとですな……。
Javaは汎用言語で、たとえば、Webアプリ作る為だけの言語じゃないから、
ポンっと言語だけ渡されても、ヘタレにはどうして良いか分からんので、
フレームワーク作る人達は(特に昔の僕とか。)、
こんな事を考える訳さ。

  • 書けるコードの範囲を狭めたい。
  • コードの記述を特定のパターンに押込めたい。(静的チェック+動的チェック)
  • パズル的なAPIの組み合わせだけで、アプリを作れる様にしたい。

これって、結局、俺様言語を設計するのとあんまり変わらないのです。


でも、コンパイラ作るのは大変*2だから、
ある意味メタコンパイラ的な動きをするXMLパーサに頼る訳。
DTDなりスキーマなり書くだけで、基本的なチェックはやってくれるし、
カスタムのチェックを入れたければ、
必要な部分だけカスタムチェック追加出来るからねぇ。
SAXマンセーとか言いながら。
コーディングする為の、エディタもXMLエディタ使って下さい、で最低限の所は済んじゃうし。


要は、ヘタレフレームワークエンジニアは、
色々理由を付けてコンパイラ作らずXMLに頼る。と。
その結果、特にJava方面で生まれた問題が、XMLヘルですよ、と。


Javaのコードのある部分をXMLに切り出す事の一番の問題点だと僕が考えているのは、
XMLは単なるデータ構造であり、処理構造を記述するには、ムリがあるって事かな。
いや、何かさ、便利なツールがあってだね、そのパーシスタンスモデルとして、
XMLを使うってのは、全然問題ないと思うよ。
人間様が、全くもってそのXMLを触らないってんならさ。


デモネ、プログラムする為の言語としてXMLを使うってのは、NGなんじゃないかなぁ…とな。
いや、ぶっちゃけifタグとかforタグとか正直勘弁して欲しい。
イッパイあるよね、そういうテクノロジ?そんな感じ。


フレームワークにとって重要な事は、

  • 簡単な事は簡単に。
  • 複雑な事は抽象化。

それが出来てないフレームワークは、少なくとも僕は使いたくねぇなぁ…と思う訳で。


おまけの一言。
Strutsが簡単ってのは、Struts自体の作りであって、アプリを作るのが簡単な訳ではありません。

*1:もう古いか…このネタ

*2:JavaCCなんかはかなり使い易いけどねぇ…