このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

ブラウザでミニマムXML (1):全般的なこと、注意事項など

やっと第1回めー(苦笑)。さっ、はじめましょう。

僕はこれから、XMLについて語りたいと思います。ですが、このシリーズの題名には、「XML」以外に「ブラウザ」と「ミニマム」という単語が入っていることに注目してください。

XMLに関する解説や論考は、既に山のようにあるわけで、このシリーズに特徴があるとすれば、それは、残る2つのキーワード「ブラウザ」、「ミニマム」という観点でしょう。

内容:

  1. XMLから見て、「ブラウザ」とは何なのか
  2. 「ブラウザ」も捨てたものではない
  3. micro*との関係
  4. Ajaxとの関係
  5. 注意事項、ないしは本音
  6. 今回のまとめ

XMLから見て、「ブラウザ」とは何なのか

このシリーズでは、「今すぐ」と「誰でも」に“こだわる”つもりです。このような態度を僕が常にとってきたかというと、全然そうでないのだけど、こと今回は、「今すぐ、誰でもできるXMLプログラミング」ってスローガンなのです。そして、このスローガンに従えば、環境の選択肢は最早<もはや>なく、必然的にブラウザに決まっちゃいます。

もちろんブラウザは、XML処理のプラットフォームではありません。HTMLのレンダリングがブラウザの主たる仕事です。そして、HTMLというのは、古いふるーいSGML規格をベースとしているわけで、現在のブラウザはSGMLベースHTML仕様(レガシーHTML)に深く毒されているのです。

ですから、ブラウザはまっとうなXML処理環境ではないし、満足できる機能性も備えていません。これは事実なのですから、認めざるをえませんよ。がしかし、これがただちに全否定や絶望に結びつくわけではありません。

●「ブラウザ」も捨てたものではない

ブラウザがロードしたHTML文書は、JavaScriptプログラムから見える空間内に、オブジェクト構造(オブジェクトグラフ;「プログラマのためのJavaScript」の第3回を参照)を作ります。この構造の一部(つまりオブジェクトグラフの特定のサブグラフ)はツリーを成し、W3C DOMの文書ツリーとみなせます。そして、ほぼW3C DOM APIを使って操作できます。

「ほぼ」という表現をしたのは、ブラウザの文書ツリーは、レガシーHTML上の技術であるDynamic HTMLにいまだに(やっぱり)深く毒されているからです。まーしかし、“小さな、しかし実用性を失わない程度”(つまり、ミニマム)のサブセットを選べば、DOMプログラミングはできると言っていいでしょう(これは良いニュース)。

もうひとつの朗報は、メジャーなブラウザの最近のバージョンでは、XMLHttpリクエスタが使えることです。XMLHttpリクエスタは、要するに“JavaScriptから使えるHTTPクライアント機能”と理解してよいでしょう。頭に「XML」が付いているのは、XMLパーザーが内蔵されているからだけど、別に転送対象がXMLデータに限定されるわけではありません。

XMLHttpリクエスタの(たぶん一番)大きな意義は、JavaScriptに(制限はあるものの)入出力機能を与えたことです。さらに、XMLパーザーが付いているのだから、XML入出力が使えるってことです。うれしいじゃないですか。

●micro*との関係

XMLHttpリクエスタにより取り寄せたXMLデータは、レガシーHTMLに比べて、ずっと扱いやすいDOMツリーを形成します。よって、比較的まっとうなXMLプログラミングの対象となります。

じゃ、この方向で話を進めるのか? 違います。そうじゃありません。僕が対象にしたいのは、ブラウザ自身がHTTPでGETしてきた(レガシーかもしれない)HTMLのほうなのです。だって、きれいなDOMツリーの普通の扱い方なら教科書に書いてあるでしょ。

HTMLの文書ツリーは、汚くてけっこうヤンナッチャウんだけど、それでもこれを対象としたいのは、マイクロ文書(microdocuments)の扱いを紹介したいからです。マイクロ文書は、HTML(できればXHTMLが望ましい)文書に埋め込み(embedding)、または刷り込み(imprinting)された情報担体(information bearing object)です -- ちょと難しげだった? 気にしなくていいけど、必要なら「micro* (2):microdocuments」と、そこからリンクされているエントリ群を読んでください。

いくつかの理由から僕は、microformatshCard, hReviewに代表されるような“刷り込まれたマイクロ文書”(imprinted microdocuments)に特に焦点を当てたいと思います。現状のHTTP+HTML+ブラウザというインフラ上で、構造的(あるいは半構造的)データをやり取りするために、“刷り込まれたマイクロ文書”は有望な技術だと思うのです。そして、比較的お手軽なXML応用としても楽しく、面白い。

以上のことを、「マイクロアプリケーション」って言葉を使っていえば、「今後、マイクロアプリケーションの基礎を実例と共に解説する予定」ってことです -- マイクロアプリケーションについては、「micro* (3):microapplications」 micro* (4):microapplicationsを支える技術に説明があります。

Ajaxとの関係

僕がJavaScriptに興味を持ちはじめたきっかけは世間のAjaxブームです。にもかかわらず、「Ajax」って言葉はあまり使ってません(日記内検索をしたら分かります)。「Ajax万歳」とは全然思ってないし、むしろ、「ホントに“こんなこと”していていいのかな?」という疑問を払拭できないのです。

ですから、「ブラウザでミニマムXML」がAjaxとどのような関係があるかについて、いまは何も語らないことにします。しかし、次の点は注意しておきます: 今回の主題のひとつである“刷り込まれたマイクロ文書”は、けっこう伝統的な技法であり、今後も長期に渡り使えるものです。JavaScriptAjaxが一過性のブームであったとして、その終焉がこの技法を無効化するわけではありません。

ついでに、Ajaxへのコメントをひとつ付け加えておけば、Ajaxの'X'がXMLに由来するとしても、Ajax応用にXMLが必須というわけではありません。実のところ、AjaxXMLのつながりは意外と希薄なのでは、と思っています。多くの場合、XMLより、JSONYAMLCSVなどのほうが便利です。特に、JavaScriptとの相性ならJSONがベストでしょう。昨今、JSONYAMLが台頭してきたのは、XMLにとっても良いことだと思います。なぜなら、XMLが適切に相対化されるためには、適切なXML概念が必要ですから。

●注意事項、ないしは本音

「今すぐ、誰でもできるXMLプログラミング」とか、「ブラウザとテキストエディタさえあればはじめられる」とかは、実を言えば惹句<じゃっく>であり、実情は多少違います(って、それを言っちゃオシマイかな)。

「誰でも」は「あらゆる人」ではなくて、実際は興味と意欲がある人ってことになるでしょう。また、ブラウザとテキストエディタだけでは辛い! 対話的処理系やバッチ型の構文チェッカーを併用します(それらについては折に触れて述べます)。

●今回のまとめ

  1. ブラウザは、良好なXML処理環境とは言いがたい。
  2. しかし、ミニマムなDOMプログラミングはできる。
  3. XMLHttpで取得したXMLデータは扱いやすい。
  4. だが、シリーズの話題は、HTML文書に含まれるマイクロ文書の扱い方である。
  5. 「ブラウザでミニマムXML」とAjaxの関係は、現状では明確でない。