XMLはどこに?
-- 穴を掘る男 --

檜山正幸 (HIYAMA Masayuki)
Tue Mar 08 2005:start
Tue Mar 08 2005:draft
Fri Mar 11 2005:prefinal

目次

1. はじめに

ここ1月以上も「書かねば、書かねば」と思っていた記事、それがコレです。 「XMLはどこに?」というタイトルには、二重の意味が込められています。1つ 目は、「いったい、キマイラ・サイトのどこにXML関連記事があるのか?」と いう意味。2つ目は、「(檜山にとっての)XMLの真実は、どこに隠れているの だろう?」という意味です。

この2つの疑問に答えるために、この記事を書くわけですが、それは、キマイ ラ・サイトとXMLの関係、あるいは、檜山とXMLの関係を説明することになるで しょう。全面的に例え話なので、その例えが何を指しているのか分かりにくい かもしれません。が、それはしょうがないのです。僕も、例えが何を指してい るのかをチャント捉えてないのですから。

2. XML関連記事はあるのか

まず最初に、「いったい、キマイラ・サイトのどこにXML関連記事があるのか?」 に答えましょう。「キマイラ・サイトにあるすべての記事がXML関連だ」とい うのが、ひとつのあり得る答です。が、「今のところ、XML関連記事はない」 という答え方もできます。なぜなら、現時点(この記事を書いている時点)で は、トップページ(http://www.chimaira.org/)の「XML」という項目をクリッ クしても、「まだ何もありません。」と出るだけですから。(この記事を載せ れば、「まだ何もありません。」は消えますけど。)

いまのところ、誰が見ても「XMLについて書かれている」と思えるような記事 がないのは事実です。ですが、「主要な話題」という 記事に書いたこと(下)もまたホントのことです。

少数の例外を除いて、このサイトに含まれる文書(「記事」と呼ぶ)はすべ て関連しているのである。そして、全体としてある特定の目的に向かって書き 進められる予定である。その特定の目的とは、XML技術の一部を再構成するこ とである。

すべての記事がXMLに関連すると言いながら、トップページ目次に「XML」と いう分類項目を設けたのは、この分類のもとに、誰が見ても「XMLについて書 かれている」と思えるような記事をまとめようと思ってのことです。が、その ような記事を書く余裕が今のところないのです。別な言い方をすると、XMLプ ロパーな話を書く準備ができてないのです。

かつて僕が書いたXML関連記事(もちろん、誰が見てもそう思える)を多少手 直ししたり、最近の話題を付け加えて公開すれば、それなりに受ける(読む人 もいる)かな?とも思うのですが、なかなか、そういう気分になれませんね (*注1)。余裕がない理由は、いま僕は、スコップやツルハシを振り上げて、穴 を掘っているような状態だからです。「穴を掘る」は比喩的表現ですが、どう してそんな気分がするかを次節以降で説明します。

注1

かつて雑誌に書いた、XMLのパターンとアンチパターンに関する記事は別サイ トで公開されています。

3. 穴を掘り始めるまで

最初にちょっとした注意を。XML仕様がW3C勧告になったのは1998年です。で すから、それ以前、例えば1995年の時点で「XMLがどうのこうの」というのは 意味がありません。が、いちいち「かつてはSGML、後にXML」のような書き方 をするのはあまりに煩雑なので、XMLという言葉で、かつてのSGMLやマークアッ プ技術一般をも代表させることにします。

僕は、XML(上の段落で注意した用法)に対して、ずっと期待や希望を持って いるし、一方では、かなりの不満も抱いています。「愛憎相半ばする」と いうか、「引き裂かれた感情」というか、ちょっと複雑な気分ですね。

XMLの嫌な点、どうにもならない欠点が色々と見えているのですが、それは夾 雑物であって、そのゴミ/汚れを取り除いてあげたら、なんか美しい姿が立ち 現れるのではないか、といった幻想じみたことを考えたりします。安っぽいド ラマのセリフなら、「ほんとのおまえはもっと美しいんだ、これがおまえの 真実の姿であるはずはない」といったところでしょうか。

「真実の姿」(の存在)には、なんら客観的な根拠はなく、たんなる僕の思 い込みかもしれません。この思い込み、主観的な(あるいは幻想的な)“真実” を、とりあえずは「XMLの真実」と表記することにしましょう。この表記は、 単なる記号だと思ってください。「真実」が真実である保証はないですから。

幻想であれなんであれ、思い込んでしまえば、いずれそれは行動に現れます。 僕はいつからか(時期はもう特定できません)、XMLの真実を探そうとしていま した。仮に、XMLの真実を、地下に埋められた宝に例えるなら、最初はあち こちと地表を歩き回って、宝が埋められている場所にあたりをつける作業をし たのです。

「ここらへんじゃなかろうか」と思える場所がありました。僕は、そこを掘 ることに決めました。

FIG: ここらへんじゃなかろうか

/* where-1 */

4. 穴は広くなった

それから今まで僕は穴を掘り続けました。でも、まだ「XMLの真実」を掘り当 ててません。気が付けば、随分と“広く”穴を掘ってしまいました。井戸のよ うに、垂直に狭く深い穴を掘ることは僕にはできなかったので、結局、スリ鉢 状のくぼみができてしまったのです。

FIG: 広い穴ができた

/* where-2 */

宝を掘り当ててはいないものの、やっぱり宝はこの下にあるという確信は高 まっています。そこで僕は、「この穴(むしろくぼみ)に入ったら、『XMLの 真実』がかいま見えるかもしれないよ」という看板を立てもいいかな、と思っ たのです。その看板がキマイラ・サイトってわけです。もちろん、スコップや ツルハシを捨てるわけではなく、僕は穴を掘り続けますけどね。看板を見て来 た物見高い見物人は大歓迎だし、穴に入って来る人がいればさらに喜ばしいこ とです。

穴はスリ鉢状なので、穴を周辺から覗く人は、中心部から離れた位置に立つ ことになります。ハシゴのように、垂直最短距離で中心部/最深部に至る手段 はありません。すこし離れた場所からスリ鉢の斜面を降りてきてください。現在のキ マイラ・サイトは、この斜面のごく一部しか提供できてません。斜面が始める 場所は、「これって、XML?」と疑問を感じる位置かもしれません。

FIG: スリ鉢状のくぼみ

/* where-3 */

ところで、斜面の途中に、誰かが別な向きの穴を掘り始めるのも僕は歓迎し ます。僕が掘ったスリ鉢に入った人が、別な目的や別な感性に基づいて、当初 僕が掘ろうとしていた場所とは別な場所に、彼/彼女にとっての宝の存在を感 知するかもしれません。

FIG: 誰かが別な穴を掘る

/* where-4 */

5. 山にトンネルを掘る

もうひとつ例え話をします。また、穴を掘る話です。が、今度は縦穴ではな くて横穴です。

「主要な話題」に、次のように書きました。

構文的な議論とソフトウェア的な議論がうまく噛み合ってない感じもする。 この「構文とソフトウェアの乖離」が、実は現実的な諸問題の淵源となってい るのではないだろうか。

そこで、構文の議論とソフトウェアの議論を密着させて、かつ並行的に展開 したい。そのためには、構文とソフトウェアを統一するような枠組みが必要で ある。

これはつまり、構文の世界とソフトウェアの世界に通路を作る、ということ です。現状では、構文の世界とソフトウェアの世界は、壁で隔てられているよ うに感じます。あるいは、高い山で隔てられた2つの地域みたいだ、とも言え ます。

だから、「構文の議論とソフトウェアの議論を密着させて、かつ並行的に展 開する」とは、2つの世界を隔てている山にトンネルをうがつことに例えられ るでしょう。そうです、また穴掘り作業です。

6. 2つの世界はつながるか

縦穴であれ、横穴であれ、細くてまっすぐな穴を掘り抜くことは僕にはでき ません。どの方向にどこまで掘ればいいか、確実な予測はできないので、広め に掘っていくしかないのです。

横穴=トンネルの場合は、山の両側から掘って、真ん中で2つの穴が貫通する ように狙っています。ですが、ほんとにチャント穴がつながるかどうかは、やっ てみないと分かりません。

あり得る結末は3つ考えられます。1つ目。チャント穴がつながってトンネル ができあがる。これはハッピーエンドといえます。2つ目は、両側から掘り進 んだ穴が、結局はつながらなかったという結末。これは失敗です。が、まった く無駄だとも言えないでしょう。誰かがまた別な方向で穴を掘ればつながる可 能性は残されていますから。そして3番目。穴を掘っている最中に、山が崩れ てしまう -- そうなると作業中の僕は生き埋めになります。でも、山がなくな れば、トンネルよりもっと自由に2つの世界を行き来できるので、実はこれが もっとも望ましい結末かもしれません。

FIG: 3つの結末

/* where-5 */

いずれの結末をむかえるにしろ、僕の作業としては、構文の側から穴を掘り、 ソフトウェアの側から穴を掘り、それを代わりばんこに繰り返すことになりま す。

7. 穴を掘ること

そんなに、縦や横に穴を掘ってなにが楽しいかって? 穴を掘るだけならうれ しくないでしょう。でも、宝が見つかったり、トンネルが掘り抜けたときのこ とを想像するのは十分に楽しいですね。だから、穴を掘るのです。