2005年01月27日
川俣晶の縁側ソフトウェア技術雑記 total 4692 count

これは正気の試みか、未来への希望か、パイプとフィルタを極めて大胆に拡張する檜山正幸さんのChimaira!?

Written By: 川俣 晶連絡先

 これとか、これのあたりで檜山正幸さんの書いたものについて紹介した関係上、これも紹介しておく価値があるでしょう。

 実は、檜山正幸さんから、以下のサイトを作ったというメールが来ました。

 概要は、このサイト中の主要な話題を見ると分かります。まず「このサイトの主要な話題はXMLである」と書き出し、最後に「このサイトはChimairaアーキテクチャのサイトである」と書いた上で、「Chimairaアーキテクチャは、XML技術の一部に対する再構成の試みであり、構文とソフトウェアに統合的な枠組みを与えるものである」とくくられます。

 つまり、このサイトは、何かの便利なソフトをみんなで開発しましょう、というような綺麗事の矮小だが分かりやすいプロジェクトではなく、「技術そのものの再構成」という抽象的な分かりにくいものを目指していることになります。

 しかし、「宗教と堕落した駄目なオブジェクト指向」(全てのオブジェクト指向ではない)などによって根本的に理論面で土台が腐りかけている現状のソフトウェア開発の現場から見れば、「技術そのものの再構成」は当然期待されることです。少なくとも、コンセプトの良さと比例しない、痛烈なまでのXMLプログラミングにやりにくさを改善する方策は、切実な必要性を持ってニーズのある問題です。それは便利なツールを誰かが作れば解決する問題ではありません。というか、そのような試みで、成功した事例を知りません。

告白 §

 正直、このサイトの内容を私自身は全く受け止め切れていません。

 その主要な理由は、それを読み取るための基礎的素養を欠いていることと、提示された概念の飛び抜けたオリジナリティにあると思います。

 だから、私自身、このサイトに書かれたことが何であるかを、部分的なカケラしか把握できておらず、それが正しいかどうか、紹介する価値があるかも分からない状況です。

でも紹介してしまうのは §

 でも紹介してしまうのは、パイプとフィルターの拡張としてChimairaを構想しているためです。たとえば、以下の文書がそれをよく示しています。

 私も、パイプとフィルターは非常に優れたものだと思っています。

 極論すれば、何らかの理由でオブジェクト指向プログラミングを捨て去るべき日はあり得ると思いますが、パイプとフィルターを捨てる日が来るという状況は、ちょっと思い描けません。

 そのことを少しは匂わせることを、2001/07/26に、xml-usersメーリングリストに書いたことを思い出しました。

 ここには、Relaxerの作者である浅海さんと全く意見がすれ違っているという状況が記録されています。

 この当時は良く分かっていませんでしたが、何がどうなっているのか今なら容易に推測できます。完璧なるオブジェクト指向の人である浅海さんからすれば、全てのシステムはオブジェクトというモデルに還元されて理解される必要があります。パイプとフィルターの基礎となる一元化された入出力という概念とは直接噛み合いません。OSの提供する構造は、利用者から隠蔽されるべき内部構造に過ぎないと認識されることが、必須の要件として要請されます。従って、それを長所と考える思考パターンそのものが、成立する余地がありません。しかし、私はOSが提供する生の構造そのものを良好に使ってきた経験上、それがまさか「必須の要件として隠蔽されるべきもの」であるとは思いもよらないことでした。

なぜRelaxerでは駄目なのか §

 浅海さんの名前が出てきたついでに、なぜRelaxerでは駄目なのかという話を付け加えておきます。

 Relaxerは、XMLプログラミングがやりにくいという問題を解決するための処方箋の1つということになります。その点では実用性が確かにあります。疑う余地はありません。

 もちろん、JavaをターゲットにしたRelaxerを、Javaプログラマではない私が使うことができない、という事情はあるにせよ、似たようなものを作って利用するという選択はあり得ます。実は、公開していませんが、RELAXと.NET FrameworkのオブジェクトをバインディングするRelaxerに似たソフトの試作品は作ったことがあります。それを発展させるという方向性は、確かにありました。しかし、それは途中で放棄しました。この路線に解はない、ということに気付いたからです。

 またまた念のために付け加えるならば、オブジェクトやRDBとXML文書をバインディングするツールとして、Relaxerは優秀です。実用性も高いと思います。

 私か感じる問題点は、別のデータモデルにバインディングしなければ使えない、というコンセプトそのものにあります。XML文書は、XML文書のデータモデルのままで扱いたいのに、どうしてそれができないのか。

 つまり、別のデータモデルにバインディングするということは、不必要に複雑度が上がり、かつ自由度が下がります。複雑度が上がることは、プログラムの生産性を下げます。自由度が下がることは、必要な処理を記述できかったり、まわりくどい記述を要求される可能性を意味します。高い生産性を維持しつつ、思い通りにXML文書を扱うプログラミングを行うためには、XMLのデータモデルそのものを扱うプログラミングのためのモデルが必要です。

 もしかしたら、Chimairaはそれをもたらしてくれるかもしれない、という根拠のない期待が、これを書かせているのかもしれません。

という結論で終わると綺麗なのだが §

 という結論で終わると綺麗なのですが、現実問題として、このようなコンセプトの有効性には、大きな疑問符が付きます。

 それは、なぜRelaxerには人気があるのかという理由にもつながります。

 Relaxerは、オブジェクト指向のことを知っているJavaプログラマに対して、オブジェクト指向の知識によってXML文書を扱う手段を提供します。それによって、プログラマはXMLに関する深い知識も、新しいモデルや言語も学ぶ必要に迫られません。それによって、上の文章で書いたこととは全く逆の結論が導き出されます。つまり、オブジェクトにバインディングした方が生産性は高くなるのです。

 もちろん、それは現在の特定の領域の状況の話であって、未来も同じであるかは分かりません。しかし、今現在の賢い選択にはなり得ない、というよりも、そもそも実現された実装もない状況では使いようがないのがChimairaです。

 Chimairaと付き合うには、おそらく伊達と酔狂が必要ですが、伊達と酔狂に付いていくことの愉しさは、田中芳樹の銀河英雄伝説でヤン・ウェンリー一派が見せてくれた通りです。

余談 §

 いかん、短い紹介文のつもりが、長くて熱い文章になってしまった。大失敗!

 貧乏なんだから、もっとお金を稼げる仕事をしないといかんだろう >自分

 伊達と酔狂は楽しいけれど貧乏神と仲良くなれるか!? (泣

2005年1月28日16時30分頃追記 §

 Chimaira.orgの更新情報などを掲載するブログを、檜山さんが開設しています。