

[2007年7月31日掲載]
[2007年9月10日更新]
クライアントサーバシステム並みの機能性・操作性を持つリッチなクライアントをWebシステムで実現する技術としてAjaxが注目を集めており、企業システムへの適用が浸透し始めています。富士通では、Ajaxフレームワークを搭載した「Interstage Interaction Manager」を提供し、Ajaxを活用してユーザビリティの高いWebシステムの開発生産性・保守性の向上を実現します。このAjaxフレームワークは、クライアントフレームワークと通信フレームワークで構成されています。今回は、これらの特長について紹介します。
近年、クライアントサーバシステムで構築した業務アプリケーションの刷新が各社で進められようとしています。運用の容易性などからWeb化が検討されていますが( 第1回を参照 )、課題となっているのがクライアントサーバシステム並みのリッチなクライアントの実現です。
その解決手段としてAjaxが本命視されていますが、従来の開発ではスクラッチベースで作りこみが多く必要なため、企業の業務システムへの適用は不向き、と考えられてきました。
富士通は、この課題を解決するためにAjaxフレームワークを搭載した「Interstage Interaction Manager」開発しました。長年蓄積してきた高度なフレームワーク技術をベースとした実用的かつ高性能なAjaxフレームワークにより、Ajaxを活用したWebアプリケーションを効率的に開発できるようになります。
Interstage Interaction ManagerのAjaxフレームワークは、クライアントフレームワークと通信フレームワークで構成されています。以下、その特長と機能を個々に解説します。
Webフロントアプリケーション構築基盤:
Interstage Interaction Manager
≪関連記事≫
SOAガバナンスを実現する
富士通のミドルウェア
連載第3回
「フロントから始めるSOA」
[2007年12月21日掲載]

【Interstage Interaction ManagerのAjaxフレームワーク】
Ajaxクライアントフレームワークでは、高い生産性と再利用性でアプリケーション開発を支援するAjax用の多種類の「部品」を用意しています。これらの部品は、これまで富士通が構築した業務システムを精査し、クライアントアプリケーション並みの高いユーザビリティを実現するために必要と考えられる部品です。
部品には、画面に表示される「画面表示部品」と、画面上で利用される機能を提供する「機能部品」があり、これらを組み合わせることで操作性の高い画面を効率的に開発できます。
| 基本部品 | 概要 |
|---|---|
| Text | テキストを表示 |
| TextInput | 単一行のテキストを入力および編集 |
| CheckBox | オンまたはオフの状態を表すチェックボックス |
| RadioButton | ラジオボタン |
| Button | ボタン。子要素としてHTMLの構造を持つことができ、画像ボタンも使用可 |
| TextArea | 単一行または複数行のテキストを入力および編集 |
| Select | 単一選択および複数選択が可能な選択リスト |
| ComboBox | 入力フィールドと選択リストから構成され、項目の選択および選択されている項目の表示を行う |
| DataInput | 日付および時間データの入力と編集 |
| NumberInput | 数値の入力と編集 |
| SelectList | 単一選択が可能な選択リスト。項目の表示内容をテキスト以外のものにカスタマイズすることが可能 |
| CheckList | チェックボックス付きのリスト |
| MaskedTextInput | フォーマットパターンを設定して、穴埋め方式でテキストの入力と編集 |
| MaskedDateInput | 日時のフォーマットパターンを設定して、入力文字を数字だけに制約し、穴埋め方式でテキストの入力と編集 |
| Panel | タイトル部、ボディ部から成り立っているタイトルバー付きコンテナ。子要素にHTML要素を持つことができ、定義された内容はボディ部の内容となる |
| ViewStack | 同じ位置で表示切替えを行う場合に利用する。複数の画面情報(コンテナ)を持つことができ、同じ位置で切替え表示を行う |
| TabPanel | タブにより表示切替えを行う場合に利用する。複数の画面情報(コンテナ)を持つことができ、タブにより切替え表示を行う |
| FragmentContainer | ページ表示後、任意のタイミングで外部から画面情報を読み込み表示するためのコンテナ |
| Window | ブラウザ内で移動(ドラッグ)可能な内部ウィンドウ部品 |
| TableView | 2次元のデータを表形式で表示。昇順、降順のソート可 |
| TableEdit | 2次元のデータを表形式で表示し、編集 |
| Calendar | カレンダーの表示と日付の選択 |
| PopupCalendar | ダイアログ表示するカレンダー |
| AutoCompleter | 選択可能な文字列リストを表示し、テキストフィールドの入力を支援する部品 |
| ValidationHelper | 入力などのイベント発生時にプロパティの値の検証を実行する部品 |
画面表示部品と機能部品を組み合わせて開発した画面例をいくつかご説明します。まず、Ajaxとファンクションキーの連動によって部分更新される画面の例を示します。検索機能が割り当てられたファンクションキーを押すか、ボタンをマウスでクリックすると、画面が部分更新されます。全画面更新による再表示のための長い待ち時間がないため、作業の流れを中断することはありません。また、これまでエミュレータなどでファンクションキーを使って作業をしていた利用者が、違和感なくシステム移行をすることができます。

【画面の部分更新によるレスポンス向上】
次に、郵便番号から住所を入力補完する画面を示します。郵便番号の最初の3桁を入力すると、該当する住所の候補一覧がプルダウンで表示されます。候補一覧から対象の住所を選択すると、7桁の郵便番号が入力され、同時に選択した住所も入力されます。この間、各入力・選択のタイミングで自動的にサーバと非同期通信を行い情報を表示しているため、画面遷移がない連続した操作を可能としています。これには、「TextInput」、「SelectList」と、機能部品の「AutoCompleter」が利用されています。

【オートコンプリートを活用した郵便番号の入力】
次に、ブラウザ上で入力値のエラーチェックをする画面の例を示します。入力された値引率が規定以上の値であるため、入力箇所の赤色表示とエラーメッセージ表示に加え、「商品追加」ボタンの使用ができないようになっています。これにより、大幅な値引きや誤発注などの入力ミスを、サーバ側で処理する前に、クライアント側でチェック・防止することができます。これには、「Number Input」と機能部品の「ValidationHelper」が利用されています。

【サーバの処理を必要最低限に抑えるクライアント処理】
最後に、フォーカスに応じてHTMLコンテンツが自動的に切り替わる画面の例を示します。フォーカスが指定の部品に移動したタイミングで別の新たなHTMLコンテンツを読み込み、表示しています。そして、新たなHTMLコンテンツ内でも部分更新ができます。従来では、ポップアップを表示するなどして情報量を一時的に増やしていましたが、ウィンドウが増加し、マウスを使って閉じることが利用者にとって煩わしい操作でした。しかし、このHTMLコンテンツの切り替わりにより、利用者の作業の流れの中で、任意のタイミングで、領域が限られた画面内の情報量を一時的に増加させることができます。これには、「FragmentContainer」が利用されています。

【コンテンツの切り替えによる画面情報量アップ】
MVCモデルはJ2EEシステム開発でよく取り入れられるアーキテクチャ・パターンですが、富士通ではこれを初めてクライアント側のJavaScript上で可能としました。
データ定義を担当するモデル(Model)、表示や入力を担当するビュー(View)、ViewとModelを制御するコントローラ(Controller)の3つの要素にアプリケーションを分離して開発する方式です。
これらが渾然と一体化するスクラッチベースの作りこみで開発されたソースと比較し、コードがわかりやすく、メンテナンスを容易に行うことができます。そして、他のコンポーネントと独立していることから、変更の際の影響を最小限に抑えることができます。例えば、データを変更するにはModelに、画面表示を変更するにはViewのみを修正します。

【MVCフレームワーク】
ブラウザの種類やバージョンによってJavaScriptの実装方法が異なるため、Ajaxを活用する場合、画面表示に対して細かな対応が必要となります。Ajaxクライアントフレームワークでは、各部品でクロスブラウザ対応を行い、その差異を吸収し、統一された画面表示を実現しています。対象となるのは、Microsoft Internet Explorer 6 / Microsoft Windows Internet Explorer 7 / Mozilla(R) Firefox(R) 2.0です。
Ajaxを活用したWebアプリケーション開発においては、クライアントとサーバを非同期通信で連携する処理は難易度が高く、加えて煩雑でもあるため、多くの開発者にとって高いハードルとなっていました。そこで、Ajax通信フレームワークでは、Webブラウザ上で動作するJavaScriptから非同期にサーバ側のJavaで記述されたビジネスロジックを呼び出す処理の簡易化を実現するための次の機能を提供しています。
非同期通信の簡易化
XML/XSLT・DOMなどの難しい知識や、ブラウザの非互換対策の複雑なロジックを必要とせず、型決めされた実装方法で非同期通信処理の簡易化を実現しています。
データ型変換
クライアントのJavaScriptとサーバのJavaの間の異なるデータ型を双方向変換するコンバーターを多数用意しています。簡単な変換についは、開発者が意識することなく、Ajax通信フレームワークが自動的に変換します。
イベントログ
ブラウザから非同期通信でサーバ側にログを出力する機能です。情報を全てサーバ側に置くことで、デバッグが楽になります。
セキュリティ
クライアントのJavaScriptから危険な呼び出しがあった際にこれを拒否し、セキュアな通信を可能とします。
Ajaxは、JavaScript、XML、CSSといった既存技術の組み合わせであり、これらに精通した多くの技術者を活用できる点もメリットの一つです。
富士通では、これらの技術者が有効に利用できるAjaxフレームワークを搭載したInterstage Interaction Managerを用意しました。Ajaxを活用し、クライアントサーバシステム並みのリッチなクライアントを持つWeb業務システムの効率的な開発に、Interstage Interaction Managerを活用ください。

第1回 「快適な操作性、画面表現力のあるWebシステムを高い生産性で実現」
[2007年6月29日掲載]
第2回 「クライアントサーバシステムのWeb化ならInterstage Interaction Manager」
[2007年7月31日掲載]
≪関連記事≫
SOAガバナンスを実現する富士通のミドルウェア
連載第3回 「フロントから始めるSOA」 [2007年12月21日掲載]