ブラウザとC/Sクライアントの違い
今ではブラウザベースアプリケーションばかりが誇張され、以前のVBのようなクライアント/サーバモデルクライアント(以下C/Sクライアント)が軽視されている。その理由は、
- サーバモデルなのでメンテナンスが容易である
- HTMLという軽量で標準的な言語を利用すればよいので導入が簡単である
という2点が上げられる。3年ほど前から盛んに言われていることだろうから詳細は省く。
ところがHTMLにしてしまうことで失ったものだがある。それは特定のユーザビリティが欠如している点だ。つまり業務アプリケーションとしての使い勝手だ。代表的なのは、改行によるテキストボックスの移動だ。C/Sクライアントでは、定番であった機能だがブラウザではタブを使わなくてはいけない。他にもリアルタイムの入力データバリデーション(妥当性)チェック、モーダルのポップアップウィンドウなど、様々だ。
しかし、一方で得たものがある。それはユーザービリティに対する高い理解だ。ブラウザではユーザビリティが低いがために、逆にそれを高めるということに真剣にならざるを得ない。しかも、HTMLであれば、簡単にクリエーターが参加することができる。インターネットの世界は、色と驚きに満ちている。それは、灰色だけだったC/Sクライアントとは違うものだ。
リッチインターネットアプリケーションの登場
リッチインターネットアプリケーションは、上記のようなブラウザベースのユーザビリティの欠如を補い、その上でサーバモデルの利点を殺さないという方式だ。例えば、Flash、Javaアプレット、VB.Netなどが進められている。しかし、どれもいまいち導入が進まない。それは、HTMLという言語でもたらされていた
- 軽量で標準的な言語を利用すればよいので導入が簡単
- デザイナが参加しやすい
という点を解決していない点だ。
Flashの場合、デザイナが参加しているがシステムとつながりにくく、Javaアプレットではその逆だ。
マークアップ言語の高級化という方向性
そこで、次に登場するのがマークアップ言語の高級化だろう。HTMLは、そもそもはデザインをすることよりも、文章の表現を変えるだけのものだ。そのため、HTMLに入力データのバリデーションという考え方はない。であれば、そういったものを前提としてマークアップ言語を考えてしまえばよい。技術的には、XMLで記述されたマークアップ言語によってユーザーインターフェースを表示する、汎用的なクライアントアプリケーションを作ればよい。
しかし、このアイデア自体は、そんなに目新しくないだろう。僕は、2000年頃にDelphiとWebとの融合を考えたときには思いついてた。たぶん、かなりのエンジニアがこのアイデアに気づいてたはずだが、HTMLベースの急速な発展により、その考えは実現されることはななっか。では、この考え方に基づいていそうな技術を紹介しよう。
Macromedia Flex
まずは、MacromediaのFlexがあげられる。Flexは、コードネーム上ではRoyaleと呼ばれていたが、β版が公開されており、来春のリリースが予定されている。Flexでは、MXML(Macromedia Flex Markup Language)というXMLが定義され、それをFlashが解釈することで柔軟にユーザーインターフェースを構築できる。An Overview of MXML, the Macromedia Flex Markup Language で、簡単な例を見ることができる。
You use MXML, much like HTML, to declaratively lay out the user interface of your application. As an XML-based markup language, MXML has a more structured and less ambiguous syntax than HTML. MXML also includes a much richer set of tags than HTML. For example, DataGrid, Tree, TabNavigator, Accordion, and Menu are all part of the standard set of tags. You can also extend the MXML tags and create your own components. But the most significant difference is that MXML-defined user interfaces are rendered by Flash Player, providing the users with a much more engaging experience than traditional HTML-based, page-centric web applications.
MXMLをHTMLのように使うことができるが、より便利なコンポーネントがたくさん含まれており、拡張も可能。
Markup languages are inadequate, however, to provide the programmatic logic to respond to the user interactions with your application. In Flex, you do this by coding event handlers using the ActionScript programming language. ActionScript is based on the ECMA-262 standard, and is a strongly typed object-oriented language that will feel immediately familiar to those of you coding in languages like Java or C#.
また、ActionScriptという言語を用いることで、いろいろな機能を足すことができると。
まだ僕もβ版を触ってはいないので、えらそうなことは言えないのだが、方向性は良いと思う。Flashは、そもそもがアニメーションツールであったが、ベクター要素によるユーザーインターフェースの描画エンジンとして、いろいろな使われ方が模索されている。
Microsoft Avalon
しかし、僕がもっとも大きなインパクトがあると考えているのは、Maicrosoftの次期Windows、コードネームLonghornに搭載されるAvalonだ。Longhornの魅せるプレゼンテーション技術「Avalon」で、最近のデモが見られる。Avalonでは、XAML("Avalon" markup, or "Longhorn" markup language)が定義されている。また、AvalonはFlashと同じくベクター要素で画面を書き出している。MSDNの資料で"Longhorn" Markup Language (code-named "XAML") Overview をみると、XAMLのサンプルを見ることができる。
そして、Flexとの最大の違いは、AvalonがOSに組み込まれ、OSそのものの描画にも利用されている点だ。Longhornを搭載していれば間違いなく動作するし、フルスクリーンで(Windowsバーなしで)アプリケーションが提供できるはずだ。また、Microsoftには、Macromediaと違い、C/Sクライアントでの豊富な経験がある。この点も、業務アプリケーションに限って言えば有利だ。しかし、リリースは、2006年とも2007年とも言われており、まだまだ不透明だ。
今後の課題は標準化
FlexのMXMLにしても、AvalonのXAMLにしても、標準化されているようなものではない。このままでは、多くのユーザー・開発者・デザイナーをひきつけることはできないだろう。しかし、方向性としては間違いない。
正直、いまは端境期だ。これから業務システムでWebアプリケーションを構築する場合、数年後の状況を予想すると、ユーザーインターフェース技術の選定には、大いに悩まされることだろう。とりあえずは、インターフェースとロジックをきれいに切り離せるように考えおくぐらいしか手はない。
新たな開発スタイルが確立されるのは、いつのことだろうか。
