インターネット、その技術を社内ネットワークに応用したイントラネットの普及により、多くのアプリケーションが、Webブラウザをヒューマンインタフェースとして用いるようになりました。そうなると、クライアントには、Webブラウザがあれば業務を行うことができます。このようなクライアントをWebクライアントといいますが,単純にっWeb閲覧を主とする場合、リッチクライアントと区別してHTMLクライアントといいます。
HTMLクライアントの利点
HTMLクライアントの利点、あるいは、クライアントをWebブラウザとしてアプリケーションを構築・利用する利点には、次のことがあります。
- フリーソフトの利用
- Web環境では,サーバ管理,アプリケーション連携,データベースなどに豊富なフリーソフトがあるので,安価でシステムを構築できます。
- 利用者教育が容易
- インターネットの普及により,ほとんどの人がWebブラウザの操作方法に慣れ親しんでいます。それで,アプリケーション特有事項(むしろ業務での事項)だけを教えればよいことになります。
- 企業間利用の容易化
- パソコン環境ではオープン化がいわれていましたが,Windows,MacOS,UNIXの間には互換性がありません。それに対して,WebブラウザはOSを問いません。Webブラウザの種類により仕様が異なることもありますが,OSの違いにくらべればたいしたことはありません。企業間ではOSの異なる環境がありますが,Webブラウザをプレゼンテーションソフトにすれば,その障害を低くできます。
HTMLクライアントでの問題点
HTMLクライアントは,もともとWebページ表示用に作られたブラウザを、業務用のクライアントに応用するのですから,実際にはいろいろな限界があります。
- Webブラウザの違い
- Webブラウザの仕様はW3Cにより定められているのですが,残念なことに,流布しているWebブラウザはそれを厳密に守っていません。同じブラウザでもバージョンによる違いもあります。それで,同じHTMLを表示しても,Webブラウザにより異なることが多いのです。特にJavaScriptなどを使ったHTMLでは,表示だけでなく動作も異なることがあります。それで開発者は,多くのWebブラウザで動作確認をしたり,Webブラウザごとにそれに適したページを用意するなど煩雑な作業を強いられます。
- ユーザインタフェースの限界
- 一般にHTMLの仕様は文書構造を明確に伝えることを第一義にしており,印刷物のよう利用者に見やすい画面を作成するには限界があります。データの入力方式も画一的であり,きめの細かい機能を持たせることができません。ファンクションキーの設定もできないので,個々のアプリケーションに適した操作方法をとるのが困難です。このように,ユーザインタフェースには多様な限界があります。これは仕様が不備だからではなく,目的が異なるからです。
- 処理速度が遅い
- 業務システムでは,応答時間が生産性に大きく関係します。ところがWebページ閲覧用のブラウザでのサーバとの通信時間やブラウザの表示時間は,それに特化したシステムに比べて非常に非効率です。
- サーバの負荷
- HTMLでもJavaScriptでも,セキュリティ確保の観点から,クライアントにあるデータやアプリケーションと連動させることができません。メインフレームのときと同様に,すべての処理をサーバ側で行います。利用度が高くなるとサーバの負荷が増大し,応答が遅くなるだけでなく,ダウンしてしまうこともあります。
MVC構成
上述のように、HTMLクライアントの環境では、クライアントよりもサーバに関する事項が重要です。それには、サーバをMVC構成にするのが適しています。MVCとは,Model(処理),View(表示),Controller(制御,入力)のことです。
- View(表示)
- クライアントからのデータを受け取りチェックをする機能と,処理の結果をJSPなどを利用してHTMLの文書を生成して,クライアントに送る機能です。クライアントには多様なWebブラウザがありますし,利用者は結果を数表やグラフなど多様な出力形式を要求しますので,それに対応できることが必要ですので,多様性を持ち、頻繁な変更が発生しがちです。逆にいえば,このような要請の少ないロジックを部分を切り離してModelにするのだといえます。
- Controller(制御)
- アプリケーションに関係のあるものを選択して、適切な形に変換してModelに伝達したり,画面更新が必要なときはを伴う場合はViewを呼びだすなど、アプリケーション全体の流れの制御をします。クライアントからサーバで処理をさせるのですから,サーブレットを用いるのが適切です。
- Model(処理)
- アプリケーションとそれが用いるデータを保持しており、目的の業務で特定の環境に依存しない処理を実行します。通常は,JavaBeansを用いて記述します。