2004-06-21

近況

紫陽花を眺めに北鎌倉へ. 会社に忘れ置いたデジカメを嘆く. その足で登った鎌倉の裏山は木々のざわめきと鳥のさえずりで私の心を癒し, 紫外線で私の肌を傷つけた. ハイキングの際は日焼け止めを忘れずに.

Web Application の思惑

前回の続き. Web Application には何が必要なのか. あるいは何ができるようになると主張しているのか. WHATWG(Opera,Mozilla), Microsoft, Macromedia, 各々の主張を見てみる.

WHATWG

まず WHATSWG. Web Application Markup Language 1.0 の "1 Introduction" によれば, これは "used by users on an occasional basis" な Application を作るための仕様であり, "use on a daily basis" の Application を記述するためのものではないと主張している. 前者の例は オンライン買物システムやサーチエンジン, 電話帳など. Office や お絵書きソフト は後者になる. これはヒントになりそうだ. つまり, 現在ある web application を強化していくのが WHATWG の意図だということ. Web Forms 2.0 に熱心なところを見ると, UI に力点を置いているのがうかがえる.

例として挙げられているのはどれも公開サービスの類だという点から, 今みなさんの見ている Web をもう少しよくしましょうというスタンスを感じた.

Microsoft Longhorn

さて, Microsoft はどうだろう. Longhorn は OS なので基本的に何でもやりたい. とはいえ, どんな方向に売り出していくかはうかがい知ることができる. デモのビデオを見てみよう. 映像の華やかさはさておいて, どれも企業や教育機関のような特定組織に向けたソフトウェアである点に着目したい. これは検索エンジンのような不特定多数に向けたサービスに重点を置いている WHATWG との違いの一つだ. Longhorn のアプリケーションは OS ごと売りこむ必要があるため, 最初はどうしても組織に閉じたサービスが中心になる. また彼らは Web を全面に出さずインフラとして位置付けており, (Indigo はそのフレームワーク.) これも他と異なる.

直感的には, 昔 VisualBasic と Access を使ってやっていたことを Web や ActiveX(の後継である .NET) と繋げてモダンに焼き直そうとしている印象をうけた.

Macromedia Flex

最後は Macromedia. Rich Internet Application を提唱し, Web にフォーカスしている. Flex も Rich Internet Application を支援する技術の一つと位置付ける. 機能ではなく user experience の強化に重点を置いているのが Macromedia の特徴だ. デモ も HTML Web Application を同じ機能でリッチな UI を持つ Flash Application に置き換える例を示している.

要するに派手でかっこいい UI を作りたいという主張.

スクリプトとネイティブコード

こうして見ると, Microsoft は他とだいぶ路線が違う. 先を行っていると言うこともできるし, 議論の外側にいると言ってもいい. 一方, 今ある Web の UI を強化しようとする Macormedia の主張は WHATWG に近い.

WHATWG と Macromedia の技術的な差異は, 私の考えでは二つある. 一つはコンパイルモデルとソースコードモデルの差. Flash Player の SWF はオーサリングツール(Flash ファミリ)の出力した実行形式だ. 一方の HTML は中間表現であると同時に実行形式でもある. そのため HTML では, 中間表現だけを拡張して実行形式の互換性を保つというのが難しい. かわりに文書は "View Source Principle" に従い, セマンティクスを保っている.

もう一つの違いはレンダリングモデル. HTML は CSS のレンダリングモデルに従う. これは文書とスタイルから半自動的に表示のレイアウトを決定するモデルで抽象度が高い. かわりに矩形内に文字やオブジェクトをフローする機能しか持たないという制約がある. SWF は低レベルな図形描画コマンド列だ. GDI のようなものだと思えばいい. 汎用的な機能で何でも描画できる. ただし CSS のような自動レイアウト機能はない.

この違いは言ってみればスクリプト言語とネイティブコードの違いだ. HTML はスクリプト. View Source Principle に従い, コードを見て簡単にハックできる. やりたいことは大体できるが, 細かいところまで制御しようとすると苦労するし, できないこともある. SWF はコンパイルされたネイティブコード. 何でもできるがやや面倒. 実装テクニックの多くは公開されない. WHATWG の主張はスクリプトエンジンをバージョンアップしましょうという話で, Macromedia の Flex は新言語のコンパイラだ.

この比喩からどちらか一方が優れていると議論するのは難しい. 実際はっきりした優劣はないように思える. そしてこの比喩に従うなら, Web Application の望ましい進化とはこの "スクリプト" と "ネイティブコード" をより強力に連携させるためのものにならないだろうか. ホスト言語の HTML と Flash などのプラグインをつなぐ SWIGCOM の不在が問題の本質で, UI 機能の不足はその症状に過ぎない. そんな風に考えてみる.

Longhorn は XAML というスクリプトと .NET のコードをシームレスに繋ぐ仕組みを用意している. Web の混沌と多様性がこの統一された帝国から生き残るためには, HTML のように標準化された glue 層の上で様々なコンポーネントが柔軟に繋がりあうゆるやかな規範が必要だ. それがどんなものかを想像するのは面白いかもしれない.

(またつづくかも.)