利用企業の増加に伴い,リッチクライアントの製品・技術は今後1~2年でますます増える。例えば米MicrosoftはクライアントOS「Windows Vista」にリッチクライアント技術を盛り込んだ。米Googleが地図情報提供サービスに採用して注目を集めたリッチクライアント技術「Ajax(Asynchronous JavaScript + XML)」の開発を支援するツールも続々と登場している。米Adobe Systemsも,2007年にはAjaxをサポートする新たなリッチクライアント基盤を提供予定である。
多彩な製品・技術に惑わされないように,エンジニアはその基本的な仕組みや特徴,動向をきちんと理解しておくべきだ。ここでは,製品・技術を次の4タイプに分けて考える。
[タイプ1]JavaScript型
[タイプ2]プラグイン+サーバー型
[タイプ3]プラグイン型
[タイプ4]インストール型
タイプごとのメリットやデメリットを押さえて製品・技術を選ばないと,実装段階で要件とのミスマッチに悩まされる。例えば[タイプ2]プラグイン+サーバー型はクライアントとサーバー間でリアルタイム通信が可能,[タイプ4]インストール型はオフライン環境でも使える,というメリットがある。それぞれ別のタイプでこうしたことを実現しようとすると,予定より工数が増大したり,実装不可能だったりするので注意が必要である。
Webブラウザの機能を使い切る
WebブラウザのJavaScriptエンジンを駆使し,従来のWebアプリケーションでは考えにくかった,インタラクティブな処理を可能にするのが,[タイプ1]JavaScript型だ。JavaScriptの組み込みクラスであるXMLHttpRequestを使い,サーバー・アプリケーションと非同期でXMLデータをやり取りする技法「Ajax」は,このタイプの典型例である(図1)。
従来は開発生産性と保守性の低さが問題視され,インターネット上の一部のサービスで使われるにとどまっていた。ところがここに来て,業務システムへの適用が急速に進んだ。理由は,実力が再評価されたこともあるが,有償/無償を問わず開発支援ライブラリが増えたことが大きい(表1)。
表1●Ajaxの開発を容易にするライブラリやツール [画像のクリックで拡大表示] |
例えば,米MB Technologiesの「Bindows」や,米Yahoo!の「Yahoo! User Interface(UI) Library」がある。Bindowsはネオジャパンのグループウエア・パッケージ(画面1)で,Yahoo! UI Libraryはトウキョウフォレックスの外貨取引システム(画面2)で使われている。最近ではRAD(Rapid Application Development)開発に使えるツール(例えばHOWSの「AjaxBuilder」)も出てきている。
|
JavaScript型を選択したエンジニアの多くは,「Webブラウザが元々備える機能(HTMLレンダラとJavaScriptエンジン)だけで動作し,プラグインなど特別なソフトをインストールせずに済む」(ある製薬会社のシステム開発担当者)ことを採用理由に挙げる。
逆に,採用を見送ったエンジニアに理由を聞くと,「Webブラウザの種類やバージョンへの依存度が高い。(種類やバージョンの違いで)非同期通信は問題なくても,画面表示が崩れてしまうことが多い」(ブリッジ・メタウェア 熊野大介氏),「セキュリティに不安がある」(中堅製造業のシステム担当者)――といった点を挙げた。
実際,JavaScript型ではセキュリティに注意が必要。クライアント・アプリケーションはJavaScriptのプログラムなので,ソースコードが丸見えになるからだ。ソースコードを読みにくくする難読化などのテクニックで少しは危険を緩和できるが,「いったん読み解かれればサーバー・アプリケーションの設計を推測され,攻撃の糸口をつかまれやすい」(セキュリティ・コンサルティング業者である米iSEC PartnersのAlex Stamos氏)。また,著名な一部の無償ライブラリに,クロスサイト・スクリプティングなどの脆弱性が発見されていることにも注意が必要だ。