お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

XMLとアフォーダンス

2005/09/15 11:51
  • このエントリーをはてなブックマークに追加

ここ2週間ほど、新しいビジネス構想に対するアイデアが止めどなく湧いてきて、社内ブログには一日に3エントリ5000〜10000文字(!)という驚異的なペースで書き込んでいて、やっぱりハイコンテキストな空間では思っていることを自由に書けて楽だなぁ。。。と思っていたのですが、ようやくここにも書きたくなる大きなテーマが一つ見つかったので書いてみようと思います。

それは、プログラムとデータの関係についてです。(コンピュータサイエンスに興味のない人ごめんなさい。)

プログラムとデータの関係は、一見明瞭なように思えるのですが、実は固定的ではありません。

たとえば、あるプログラムのファイルをコピーするという操作を行うときには、そのコピー対象たるプログラムファイルは「コピーする」という文脈においてはデータに他なりません。

たとえば、あるソースコードをコンパイルして得られた結果のオブジェクトコードは、それを実行するバーチャルマシン、あるいはそのバーチャルマシンを実行するCPUにとってみれば、さらにコンパイルする必要のあるソースコードに過ぎません。

つまり、あるビット列がプログラムであるかデータであるかは、それを解釈する側のコンテキスト依存だということです。

では絶対的なデータや絶対的なプログラムという境界は存在しうるのか?というと、それは永遠に決定不能(つまり存在しない)であることがゲーデルやチューリングらによって早くも70年前に証明されてしまいました。

このように、本来は文脈依存の仮想的な区分に過ぎないプログラムとデータの関係に、はじめて固定的な分離を規定したのは、「ハードウェア」と「ソフトウェア」という対立する二項概念を提唱したフォン・ノイマンです。無限後退していくプログラムとデータの関係に、「目に見えるモノ」「目に見えないモノ」というほぼ絶対的と思われる分水嶺で強力な楔を打ち込んだのです。

今の我々にとって、ハードウェアとソフトウェアという概念が、ある種の絶対的な境界であると信じ込まされているのは、フォン・ノイマンの偉業であり、罪悪でもあります。つくづく彼は天才コピーライターです。

プログラム自体を書き換えるプログラム、オブジェクト指向でいうリフレクション、文字列を受け取ってそれをダイナミックにプログラムとして実行できるevalのようなものは、自分自身を破壊したり挙動の不確実性(たとえばセキュリティホール)を導入したりプログラムの見通しを悪くするものとして、強力だが(であるがゆえに)危険なものとして、つまり諸刃の剣として受け止められ、ソフトウェア工学によって常に禁じ手とされてきました。

ソフトウェア工学に限らず、いわゆるコンピュータサイエンスの発展は、このように後退を続けるプログラムとデータの関係をどんどん上層へと追いやり、変化する部分と変化しない部分を峻別していくことと同義でした。

プロセッサの世界では命令キャッシュ/データキャッシュを分離するハーバードアーキテクチャが主流になり、モダンなオペレーティングシステムではCPUのメモリ保護機構を使ってプロセス保護(外部からのプログラムの書き換えを禁止すること)し、システム全体の暴走を防止するのが当たり前になりました。そしてプロセス相互で共有するメモリ(データ)空間と共有しないメモリ(プログラム)空間を分け、そのプロセスの中ではスレッドが共有するメモリと共有しないメモリを分け、、、というように、無限にバーチャルマシンの上にバーチャルマシンを積み上げ、いかにプログラムとデータを分けて安定性を確保するかということに腐心してきたのでした。

もっとも残念なのは、それを当たり前だと考えるようになったコンピュータサイエンティストが増えてきたことです。コアウォーズで遊ぶことなんてとっくにセピア色の今昔物語です。

ではなぜこの洞察がむずかしいかというと、デカルト以降フッサールに極まり現在に至る近代哲学の系譜の基本命題「主観と客観」「自と他」を乗り越える難しさに密接な関係があるからだ。。。と突き放した言い方をすると読者が気分を害するでしょうから別のいい方をすると、2次元の世界の住人が3次元の世界を想像することの難しさに似ています。(うーん、あまり変わらないか)

さて、今という時代においてプログラムとデータの間で揺れ動く境界のフロンティアはどこにあるかというと、それは「XML」だ、ということについては直感的に(あるいは消去法的に導かれる必然性によって)「YES」シグナルが強く明滅しているのを感じ取っていたですが、そのことに言及したPICSY Blogの「XMLの文体と新しい社会契約論:(5)チューリングとXMLの関係について」に書かれた鈴木健氏の主張には、大筋では大変感銘をうけたものの、以下のパラグラフについてはなんとなく腑に落ちないものを感じていたのでした。

XML以前のプログラムとデータの越境性と、XML以後の越境性の違いは、XMLはそれを上書きするマシンを選ぶことができる点にある。つまり、XMLは型づけされているのである。メモリ空間上であれば任意のアドレスのビットをプログラムから適当にいじることができるが、XML空間上では(パーサーを経由して処理する限り)それは許されていない。XMLは自分自身について知っているデータであるといわれる所以である。

XMLは自分自身について知っているデータ「ではない」というのが、いわゆるアンチセマンティックWebな立場を貫いている私の変わらぬ結論です。パーサーという機械がその境界を知っているというような楽観的な考えは、鈴木健氏らしからぬ誤謬です。

でも、なぜだろう、なぜだろう、すごく近いところをぐるぐる回り続けているような感じがしてならなかったのです。

それをとうとう乗り越えることができたのは、先日のこの発見でした。

XMLデータは自分をどう扱って欲しいかをアフォードしてくる

これは、私にとっては飛び上がって驚くほどの視点の転換でした。

(ここでアフォーダンスについてご存知ない方は、はてなキーワードをどうぞ。正確さとわかりやすさのバランスが取れた記述です)

この考え方自体は、見方によっては、オブジェクト指向において「オブジェクトがメソッドをアフォードしてくる」と言い換えることが可能であるように、新しいものではありません。

また、誤解を招きやすいのでさらに注釈を加えておくと、ここでアフォーダンスというものは、俗説に反して文脈依存であることをふたたび強調しておきます。たとえば「椅子」というオブジェクトはレストランでウェイターに誘導されたシチュエーションでは「座る」というアクションをアフォードしてくるけれども、ふくれっつらの子供にとっては「投げる」とか「壊す」をアフォードしてくるかも知れない、という点ではかなりの程度を主観(より正確には対象と主体の関係性)に依存しています。この点を踏まえて、私は何ら対象自体に客観的な意味論が実在しうると言いたいのではないことを言明しておきます。

しかし、XMLデータは、「オブジェクト」という抽象概念を理解できるプログラマーよりもはるかに大勢の人たちにとって、手に取ってみて理解することのできるリアルなデータなのです。ダウンロードしてテキストエディタやブラウザで眺めてみることのできるデータなのです。

以下のXMLデータを見てください。

<Person>
    <Name>江島 健太郎</Name>
    <Phone>0312345678</Phone>
    <FAX>0387654321</FAX>
    <Email>foo@bar.com</Email>
</Person>

このXMLデータは、「江島 健太郎にメールを出せ」「0387654321にファックスを送れ」などという無数のメッセージをアフォードしてきます。そして、そのメッセージは、オブジェクトシリアライゼーションなんて言葉がわかる技術者だけではなくて、その何百倍/何千倍もいるであろう、データの意味を単にリテラルに読むことができるだけの普通の人たちにも届くのです。この圧倒的なスケール感の広がりこそが、XMLの価値なのです。

次はもっと簡単な例で見てみましょう。

仮に「100, 200, 500」という数字の列を見ても、何をするものかまったくわかりませんが、

<Payment>
  <Price>100</Price>
  <Price>200</Price>
  <Price>500</Price>
</Payment>

のようにタグづけされれば、「合計せよ」「平均せよ」などというメッセージを、プログラマーではない多くの人が受け取ることが可能になるでしょう。

データが単にデータとしてではなく、プログラムとしての様相を帯び始めるというのは、このようなことです。データの入れ物=形式ではなく、データとそれを解釈する人間との間に埋め込まれている「関係性」の質的な変容に注目しなければ、この越境を理解することは不可能でしょう。

そして、その越境を引き起こすトリガーを引いたのは、やはり「人間」という存在でした。それも、いわゆるプログラマーではなくて、もっと桁違いに多い一般人に近い人たちだったということが、その規模の違いゆえ、ルールそのものを書き換えてしまう可能性につながっているのです。

古くて新しい議論です。紙一重でトートロジーに聞こえてしまうかも知れません。XMLを昔から知っている人たちは「なにをいまさら」と言いたくなるかも知れません。しかし、これを「プログラムとデータの越境性」という視点から、アフォーダンスに接続した議論を私は寡聞にして見たことがありませんでした。

XMLがそれ以前のデータのパラタイムと決定的に異なっていたのは、データが桁違いのアフォーダンスを放ち始めるという、そのことにあったのです。

そしていま、私は、「プログラム資産ではなくデータ資産が(プログラムとしての)価値を持ち始める」というアイデアに、ぞくぞくと興奮を覚えています。

なぜなら、私が仕事でやっているグラフィカル・プログラミングという考え方の実現可能性は、この「データがある」という状況に密接に結びついているからです。

さまざまなメッセージをアフォードしてくるデータがうなるほど生まれつつあるという状況があり、このデータに対してほんの一滴のしずくをドラッグ&ドロップして垂らすだけで新しい価値を膨大に生み出せるという、そのレバレッジの大きさに興奮しているのです。

あふれんばかりのメッセージをデータから受け取っていながら、プログラミングの知識がないという制約によって何もできなかった人々に、力を与えることができるからです。

もう6年もXMLを原点として出発した会社でビジネスをやってきていながら、現在の到達点であるグラフィカル・プログラミングという世界観を構築するに至った歴史的な物語性につじつまを合わせることができずに悩んでいたのですが、ようやく解決の糸口が見えてきました。これらを解きほぐすカギは「データと人間のあいだに働く隠れた力学」の発見にあったのです。

つくづくXMLの革新性はヒューマンリーダブル(人間が読めること)であることに尽きる、という認識を深めました。

そして、いよいよWeb2.0について語らなければいけないときが近づいているようです。乞うご期待。

♪ 'N Sync / PoP

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー

個人情報保護方針
利用規約
訂正
広告について
運営会社