はじめに
今日のインターネットは、Ajaxや他のテクノロジのおかげで、デスクトップアプリケーション並の多機能アプリケーションを実行できるプラットフォームになりつつあります。それにともない開発者の間では、下層のクライアント/サーバ通信の部分を透過的に処理し、複雑なソフトウェアの開発を支援するエレガントなアーキテクチャ基盤を備えた、総合的なオブジェクト指向フレームワークを求める声が高まっています。
本稿で紹介するGuiseは、透過的なAjaxサポートを備えた完全なオブジェクト指向のインターネットアプリケーションフレームワークです。Guiseが提供する洗練されたアーキテクチャでは、SwingやMFCなどのフレームワークに似た、単純で直接的なJavaプログラミングが可能です。
新しいインターネットアプリケーション
まず1980年代に、SmalltalkやC++などのオブジェクト指向のプログラミング言語が登場しました。これらは、その当時に出現し始めた最初のGUIをサポートしていました。
1990年代になると、多くのツールベンダが複雑なオブジェクト指向のフレームワークを作成しました。開発者はより簡単にGUIアプリケーションを作成できるようになり、下層の非オブジェクト指向のGUI用APIを使用しないで済むようになりました。BorlandのTurbo C++には、テキストモードだけでGUI風のインターフェイスを作成できる複雑なオブジェクトセットが含まれていました。Borlandはその後、Windows用の完全なオブジェクト指向フレームワークであるObject Windows Library(OWL)をリリースしましたが、MicrosoftのMicrosoft Foundation Classes(MFC)という類似の競合フレームワークの普及に伴い、OWLは最終的に消えてしまいました。
Javaがインターネット関連の言語として人気を集めるようになると、SunはSwingという複合的なオブジェクト指向GUIフレームワークをリリースしました。その一方で、Microsoftは、Windows Formsというまた別のフレームワークをリリースしました。これは.NETプラットフォーム上で主にMicrosoftの新しいC#言語で使用されるフレームワークであり、その設計は、BorlandのDelphiおよびその洗練されたVisual Component Library(VCL)フレームワークの設計者の手によります。
21世紀が幕を開けると、新しいプラットフォームの選択肢として、主にHTML(HyperText Markup Language)によって実現されるインターネットが加わりました。インターネットの概念は画期的でしたが、急速に普及した理由はHTMLの簡単さ、つまり誰でも単純なテキストエディタでWebページを作成してリンクできるという点にありました。しかしHTMLの簡単さと、各ブラウザの標準実装レベルのばらつき、さらにブラウザ間の相互運用性の低さがあいまって、当時の複雑なWeb機能はどれも、10年前に一般的だった標準GUIからはほど遠い状況でした。言うまでもなく、当時存在していた多数のGUIフレームワークは、静的なテキストページに対しては現実的に意味がありませんでした。
Web上で動的な対話を実現しようという試みは、まずテンプレートを通じて行われ、次にスクリプトを通じて行われました。SunのJavaServer Pages(JSP)およびMicrosoftのActive Server Pages(ASP)では、HTMLページ内にシンボルを挿入し、そのページをサーバがコンテンツに変換していました。Sunは、「サーブレット」という概念を導入しました。これはWeb上に配置される小さなプログラムで、何もない状態からHTMLページ全体を生成する働きをします。JSP処理エンジンそのものが、JSPテンプレートを解析および操作する目的で設計されたサーブレットでした。しかし、このような試みも(サーブレットといくつかのJSPをMVCモデルで動作させるパターンを含む)、依然として、過去の多機能なGUIフレームワークより劣っていました。
しかし、Javaを使ったHTMLプログラミングは進化を続けました。まずStrutsオープンソースフレームワーク、さらに続いてSunのJavaServer Faces(JSF)が、よりコンポーネントベースのユーザーインターフェイスアーキテクチャの作成を試みました。ですが、これらのコンポーネントも本質的には、サーブレットとJSPのテンプレート/スクリプトフレームワークの延長にすぎませんでした。
コンポーネント間のリアルタイムのやり取りには、複雑な設定と、JSFの「バッキングBean」のような特別なgo-between
クラスが必要でした。ここ数年で、さまざまな技術を組み合わせたAjaxという手法により、Webをリアルタイムの対話型アプリケーションのプラットフォームとして利用し、デスクトップで見られるような多機能のユーザーインターフェイスをWeb上で提供できることがはっきりしてきました。
インターネットアプリケーションでは、デスクトップアプリケーションとして実装するよりも大規模で複雑な機能を実現でき、分散処理やマルチユーザーにも対応できます。総合的なオブジェクト指向のインターネットアプリケーションフレームワークが必要であることは、もはや明白です。本稿で紹介するGuiseフレームワークこそ、このニーズを満たすものです。
Guiseフレームワークの概要
Guiseは、Ajaxによる透過的なWebレンダリングをサポートするインターネットアプリケーションフレームワークです。「Guise」という名前は「Graphical User Interface, Simple and Elegant」の頭辞語だとされていますが、もともとの開発の動機であった「JavaServer Facesに代わるもの」という意味も込められていると思います。GuiseはAjaxツールキットを大きく超えるものであり、信頼性、安全性、および機能性に優れたインターネットアプリケーションを実現するという目的のために一から構築された完全なフレームワークです。
Guiseの作成に当たっては、SwingとJSFに加えて、他のGUIフレームワークのホストが大いに参考にされました。その結果、GuiseはプレーンなJavaで動作する強力なフレームワークとなっています。Guiseは次のような特徴により、インターネットアプリケーションを開発するためのユニークで強力な基盤と考えられています。
- フレームワーク
- アプリケーション
- Ajax
- 単純
- 洗練
- 標準
Guiseの働きを見てみるには、米カリフォルニアのBlueCross社のBeneFits Insurance for Small Businessというサイトを参照するのが最も簡単です。このサイトは、完全にGuiseで動作しています。カリフォルニアの郵便番号94111などを使って「Quick Quote」(即時見積もり)の機能を試し、フライオーバー、迅速な検証、ポップアップカレンダー、さらに保険料をリアルタイムで更新するスライダの機能を確認してみてください。トップページのいくつかのFlashコンポーネントにも、Flash埋め込み用の既存のGuiseコンポーネントが使われています。
Guiseはhttp://www.guiseframework.com/で入手できます。一般的なGuiseライセンスはまだ公表されておらず、ライセンスはケースバイケースで決定されますが、Guiseのすべての機能を備えた開発バージョンは無料で提供されます。Guise Webプラットフォームは標準のJ2EEサーブレットに基づいており、Java 5.0以降が必要です。