2003-11-19

Microsoft の 発表した Longhorn が XML を中心としたアーキテクチャだったため, ここ一箇月の xml-dev は非常な盛り上がりだった. 批判の中心は "またしても奴らが re-invent wheel した!" という点. tbray の ongoing は彼らのノリをおおよそ代弁している.

しかし Microsoft の車輪屋稼業は最近始まったものではない, むしろその歴史は再発明と買収の歴史だと言ってもよいくらいのものだ. それを責めた所で彼らの態度や日経コンピュータを愛読する権力者たちの意見がそう変わるとも思えない. 自明すぎて不毛なバッシングに体力や時間を使うより, Longhorn の出来を楽しむ方が生産的というものだろう. といっても beta release の Longhorn SDK を導入する sacrificable な計算機は無いので, 記事を眺めて満足することにする. セキュリティやファイルシステムなど基盤部分はまた今度にして, 目玉となるグラフィクス/GUI を見てみよう.

1. Avalon / XAML

Avalon は GUI とグラフィクスエンジンの総称, XAML はその記述に使うマークアップ言語を言う. Gecko と XUL だと思えばよい.

GUI まわりはよくできている. 何のかんの言っても Microsoft はデスクトップ・アプリケーションの会社なので, その技術は確かなものであるはずだ. xml-dev では XUL の再発明だとか, CSS の再発明だという批判があるが, XUL はまともに文書化されていないし, CSS はプログラマブルにあれこれするには宣言的すぎる. 批判されるにはあたらない.

XUL の Style はおおよそインライン指定のスタイルシートだと思えばよい. CSS と違って XML 形式になっている. あとはよくある GUI マークアップだ. アプリーション の GUI 全体が一つの木になっていて, コード断片はその部分木に対する操作を行うというモデルらしい. これはちょっと面白いかもしれない.

2. Windows Vector Graphics

名前のとおり SVG の Microsoft 版. あまりに SVG そのまんまで芸がない. 私は SVG を W3C 史上に名を残すダサ仕様だと思っているので, それを丸コピーしてしまった Microsoft にかなりがっかり. 再発明はいいが, 少しは工夫してほしい.

機能も文法もダサすぎて泣ける. まず文法. Adobe 生まれ, 古の path 文法 (例: M 100,200 C 100,25 400,350 400,175 H 280) を採用していており, しかもそれがXML の属性値なのである. マークアップ言語なのに独自の文法を採用する点がまずナンセンスで, しかもそれを属性値にもってくるとは...属性値は単一データ型で, atomic な "値" になるようなものを置くのがセオリーであるし, この例はそのセオリーを見事にダメな形で破っている.

機能の面は, ラスタイメージとの連携をまったく考えていないように見える設計の素朴さが悲しい. たとえば blur や noise のような効果を後処理で加えたい, あるいは素材として用意されたビットマップに直接レンダリングしたい, という場合にどうするかをあまり考慮していなように見える. もう一つはレイヤ機構の不在だ. SVG では要素のグループ化をレイヤの代わりに使う. が, レイヤというには自由度が高すぎて不便なのだ.

これらの問題は, 全てをベクターグラフィクスの世界で完結させようというアイデアの限界をあらわしている. ベクター表現は結局ピクセルに変換されるわけで, そのレンダリング結果に対する何らかのアクセス手段を用意するのは, 実用の点から極めて順当な割切りであるはずだ. 割切り上手の Microsoft がそう判断してくれなかったのは悲しい. GUI 部分とのギャップを見ると, この部分は手抜きとしか思えない. あるいはノウハウがまったく無いのか.

3. Animation

Avalon ではアニメーションもマークアップで記述できる. これは SVG でも採用されている SMIL のアイデアを踏襲していると思われる. (文法も似ている.)

上の WVG とアニメーションによって, Microsoft は一応 macromdia Flash を駆逐する下地を手にいれたことになる.

しかしそこでの問題は, いかにコンテンツを作成するかだ. 通常の GUI なら既存のフロー(デザイナが絵を書き, プログラマがそれを再現する)で済むが, アニメーションするベクターグラフィクスでその方法を使うのは厳しい. (そこらへんのソフトウェアハウスにゲーム会社をやれというようなものだろう.) デザイナが XML を (HTML のように) テキストエディタで書くのも無茶だ. したがってオーサリングツールが必要になるのだが, Micorosft 製品には該当するものが見当たらない. Visio はあんまりだしな. 次バージョンの VisualStudio や Office ではそんなものが出てくるのだろうか. 気になるところ.