CodeZine(コードジン)

特集ページ一覧

インターネットアプリケーションの新しいフレームワーク「Guise」

HTML、JavaScript実装なしでAjaxを実現するJavaフレームワーク

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/04/26 08:00

Guiseは、Ajaxによる透過的なWebレンダリングをサポートするインターネットアプリケーションフレームワークです。JSFよりも良い機能性・使い勝手を目指したこのフレームワークは、単純で洗練されたJavaプログラムによるAjax-Webアプリケーションを実現します。

目次

はじめに

 今日のインターネットは、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は次のような特徴により、インターネットアプリケーションを開発するためのユニークで強力な基盤と考えられています。

  • フレームワーク
  • Guiseは、単なるツールキットやライブラリではなく、真のフレームワークであり、アプリケーション構造全体を導くコンテキストを提供します。
  • アプリケーション
  • Guiseは、本当の意味でのインターネットアプリケーション、つまり単なる連続するWebページではなく、デスクトップアプリケーションと同様の方法でユーザーとやり取りするインターネットアプリケーションを作成します。
  • Ajax
  • Guiseで作成されたアプリケーションは、デスクトッププログラムと同様に動作する多機能なユーザーインターフェイスを備えていますが、その機能をプログラマが明示的に実装する必要はありません。Guiseアプリケーションを作成する開発者は、HTMLやJavaScriptを1行たりとも記述する必要はありません。Guiseは、IE 6、IE7、Firefox 1.x、Firefox 2.x、Safari 1.3.xなど、一般的な多くのブラウザをサポートしています。
  • 単純
  • Guiseアプリケーションは、標準の単純なJava構造を使用します。特別なマーシャリングクラスや「バッキングBean」を作成する必要はありません。通常どおりにGuiseクラス(または独自のカスタムクラス)のインスタンスを作成し、標準のイベントリスナを登録してイベントを待機します。
  • 洗練
  • Guiseフレームワークは、その構造を一から見直し、Java Swing、OWL、MFCなどのフレームワークの長所を取り入れ、さらに改善することで、洗練された一貫性のあるオブジェクト指向のプラットフォームを実現しています。Guiseクラスは、ジェネリックや「タイプセーフなenum」など、最新のJava言語機能を使用します。Guiseは、実際のレンダリング言語(ブラウザのXHTMLなど)を抽象化したものであり、アプリケーションのコードをほとんど(あるいはまったく)変更することなく、別のレンダリングプラットフォーム(Java Swingなど)を後から追加できます。
  • 標準
  • Guiseは、標準準拠であることを目指しています。生成されたマークアップはXHTML準拠です。構成ファイルは、XML形式でシリアル化されるRDFを使用します。Guiseは国際化に完全に対応しており、ローカライズされたアプリケーションコンテンツを簡単に提供できる機能が用意されています。

 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以降が必要です。

重要
 JDK 1.5.0_11の時点では、Sun Javaコンパイラのバグが原因でGuiseと連携できません。最新のEclipse 3.2.xコンパイラを使用してアプリケーションをコンパイルする必要があります。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • Garret Wilson(Garret Wilson)

    自身が設立したGlobalMentor, Inc.でインターネット標準に関するコンサルティングを行う。Guiseの主要アーキテクトでもある。

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5