Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

XMLは鉄である。

今日の勉強会の中さんのセッションを聞いて思い出したことがあるので、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 には結局、メタ言語としての使い道しかないのだ。

投稿日時 : 2007年6月3日 2:38

Feedback

# re: XMLは鉄である。 2007/06/03 11:18 melt

自分はメタ言語を扱おうとするとメタメタになります(><;)

# re: XMLは鉄である。 2007/06/04 10:40 trapemiya

素直に良い文章だと思いました。メタファの良いところが出ていると思います。難しいことを平易に説明することはなかなかできることじゃないですからね。

# re: XMLは鉄である。 2007/06/04 11:23 シャノン

> XML が eXtended(拡張可能)である所以

eXtended じゃなくて eXtensible ですね。
「そのまま転載」なので、敢えて直さずにおきます。

ちなみに、

> 特定のデータを記述することに特化した言語

っていうのが、横文字で言えば DSL ってやつです。

> 自分はメタ言語を扱おうとするとメタメタになります

…頑張れ。

> 素直に良い文章だと思いました。

ありがとうございます。
「概念的な鉄」なんて、理屈っぽくてわかりにくくないかなぁ、と我ながら思うのですが、励みになります。

# XMLの真価 2007/07/04 2:39 .COM -どっとこむ-

XMLの真価

# XMLの真価 2007/07/04 2:43 .COM -どっとこむ-

XMLの真価

# re: XMLは鉄である。 2008/11/01 5:53 sync

通りがかりですが、すごく納得な記事でした。

# re: XMLは鉄である。 2011/05/27 4:52 SQL

分かり易過ぎwww

卒論作成でHTML5を扱うんですが、XMLも理解しておく必要があったので非常に助かりました。
ありがとうございます。

タイトル
名前
Url
コメント