今日の勉強会の中さんのセッションを聞いて思い出したことがあるので、mixiに昔書いた日記をそのまま転載。
XMLで何ができるのかということを考えたことがある。
答えはいくつか出た。「何もできない」「何でもできる」「メタ言語としての使い道しかない」どれも正しいのではないかと思う。
身近なものに置き換えてみよう。例えば「鉄」だ。鉄で何ができるのか? 何でもできる。
鉄は自動車のボディを作ることもできるし、ジュースの缶を作ることもできるし、窓の枠を作ることもできる。鉄を使って、何でもとは言わないけれども、非常に多岐に渡るものを作ることができる。
もちろんだが、「できる」ことと「適している」ことは違う。
鉄で本を作ることだって、やろうと思えばできるが、出来上がった本はきっとすごく扱いにくいだろう。
しかし、これには問題がある。
我々は、「鉄そのもの」を使わない。
我々が触れるのは、「自動車のボディに加工された鉄」であったり「ジュースの缶に加工された鉄」であったりする。常に「何かに加工された鉄」なのだ。
では、「どんな加工もされていない鉄」というのは存在するのか。
例えば、自動車のボディの元になる鉄板でさえ、「鉄板という形に加工された鉄」である。鉄塊、鉄棒、鉄粉…原始的な形に見えても、あらゆる鉄は、何らかの加工された形で存在している。
では、鉄鉱石はどうか。鉱山から掘り出したばかりの鉄鉱石ならば、どんな加工もされていないと言えよう。が、鉄鉱石を使って鉄と同じこと、つまり、様々な物を作り出すことができるかと言うと、できない。鉄鉱石は、精製して鉄を作り出す以外に使い道が無い。
鉄鉱石は、鉄とイコールではないからだ。
一切加工されていない鉄というのは、「鉄分」とでも言うべき、形を持たない鉄、概念的な存在なのだ。そして、我々はそんなものを直接的に扱うことはできない。
よって、「鉄そのものを使うことができないから、鉄を使って何かをすることはできない。様々に加工された鉄を使って何かすることはできる」と言える。
また、別の言い方をすれば、鉄そのものの直接的な使い道とは、「我々が使える何らかの形に加工すること」だけであると言えるだろう。
もう少し砕けた言い方をすれば、鉄には「何かの材料になる」ことしかできないということだ。車のボディの材料やジュースの缶の材料になるのはもちろんとして、それらの材料である鉄板の材料にもなる。
まったく同じことが、XML についても言える。
XML には様々な応用規格がある。XHTML、SOAP、SVG、MathML などだ。これらは全て、何らかの形に加工された XML であると言える。
XML は、汎用的なデータ記述言語である。
しかし、ただ闇雲にデータを記述すればいいというものではない。記述したデータを後で使えなければ価値が無いのだから、記述に何らかの意味を持たせなければならない。
すなわち、ある特定の記述がどういう意味を持っているのかという規則を定める必要がある。
XML の応用規格というのは、この規則の集合である。
例えば、XHTML の h1 という要素は、第一レベルの見出しを表すといった具合に、記述に意味を対応させているわけだ。XHTML という規格は、この対応がたくさん集まってできている。
XML が eXtended(拡張可能)である所以は、この対応セットを自分で作ることができるというところにある。
意味を定めた XML は、もはや XML そのものではない。それは、仰々しい名前がついていなくとも、広く世間に知られていなくとも、XHTML や SOAP と同じ、XML 応用規格のひとつなのだ。
記述の意味を定めるということは、ある特定のデータを記述することに特化した言語を作り出すということだ。XHTML は Web ページを記述することに特化した言語だし、SOAP は Web サービスと通信するためのデータを記述するために特化した言語だ。
同じように、XML を使って社員のデータを記述したとすれば、その記述法は、社員データを記述することに特化した言語であると言える。EmployeeML などという、それっぽい名前をつけて呼んでもいいだろう。
まとめに入ろう。
XML を有効に使うためには、意味を定めなければならない。
意味を定めるということは、XML 応用規格の一つである、特定のデータを記述することに特化した言語を作るということである。
そうして言語を作ったら、実際にデータを記述するのに使われるのは、その新しく作った言語である。XML ではない。
鉄も同じだ。
鉄を有効に使うためには、何らかの形に加工しなければならない。そうして加工された鉄は、鉄板だったり鉄棒だったり鉄粉だったりするが、もはや、鉄そのものではない。
鉄には「加工すること」しか使い道が無い。同じように XML にも「意味を定めること」しか使い道が無い。
加工されたり、意味を定められたりしたそれらは、そうされる前の原型とは、既に別のものだ。
XML を使って、どんなデータでも記述することができる。だから XML には「何でもできる」。
データを記述するためには、XML を応用して特化言語を作らなければならない。実際に何かをするのは特化言語であって XML ではないから、XML には「何もできない」。
なお、このような「言語を作るための言語」を「メタ言語」という。「メタ」とは、「より上位の」とか、そんな意味だ。
だから、XML には結局、メタ言語としての使い道しかないのだ。