今回からは,各コンポーネントの設計についての注意点およびノウハウについて解説していきます。
まずはプレゼンテーションレイヤの設計と配布について解説します。
プレゼンテーションレイヤの設計と配布について
プレゼンテーションレイヤは,ユーザに対して画面や帳票,音などの情報を出力したり,画面やマウスなどの入力デバイスを通して入力・操作をするユーザインターフェイスを提供する2階レイヤです。
.NET Frameworkを使用したアプリケーションはユーザインターフェイスとしては主にWindows FormベースとWeb Formベースが選択可能です。また,これらのほかにもWindows Mobile,スマートデバイス,Office製品をユーザインターフェイスとして選択することも可能です。
ユーザインターフェイスコンポーネントはこれらのユーザインターフェイスを通してユーザとの対話を管理します。これはユーザへのデータやグラフ,図形,サウンドなどを表示・出力し,ユーザからのデータの取得,ユーザインターフェイスの状態の変更,ユーザ操作の流れやタスクの進行の手助けを行います。
前回にも記述しましたが,今日ではさまざまな表現方法が登場しています。特に,.NET Framework 3.0と共にWindows Presentation Framework(以降WPFと略します)が登場し,またその後にはASP.NET AJAX(Asynchronous JavaScript And XML)(※1)が発表されました。
また,新しいものではSilverlightなどがあります。SilverlightとはWebブラウザ上で,オーディオやビデオなどの高品質なメディア配信を行い,ユーザインターフェイスにより豊かな表現力をあたえる.NET ベースのプラグイン技術です。
いずれの技術も,以前はDirectXなどを用いて直接描画していた複雑な画像や,別のウインドウでしか扱えなかった動画などを一つの画面にまとめることができることは非常に素晴らしい技術だと思います。
ところが,一般的な業務画面では「ここまでこった画面を構築する必要がない」とか,「開発工数がかかるので推奨しない」等の言葉をよく耳にします。これらの意見は開発者側の立場での意見で,エンドユーザの意見を考慮したものなのでしょうか?
確かに過度の3Dグラフィックや無駄な動画を画面内に載せる必要はないと思います。しかし,以前私が参加したプロジェクトでは,言葉で表すより3Dグラフィックや動画を駆使して構築したほうがよいアプリケーションもありました(※2)。
一般的な操作画面のある業務アプリケーションなどのユーザインターフェイスコンポーネントは,直接最終的なエンドユーザが見て,操作するアプリケーションの入り口です。開発の容易さも必要かとは思いますが,見栄えや使い勝手についても十分に検討が必要だと思います(※3)。
また,別の顧客からWebアプリケーションで,画面の一部を選択しただけで画面全体がリフレッシュされるのは画面設計やトラフィックの面からも無駄が多いのではないかと言われたことがあります。確かに,画面の一部の選択状態によって次の選択項目が絞り込まれる場合,さらにその絞り込みの結果がDBからの値を用いる場合などでは常に値が動的に変化します。今ままではポップアップ画面を表示してJavaScriptを経由して値を挿入するなどの方法を用いていましたが,やはり使い勝手はいまひとつです。
このような場合,ASP.NET AJAXを用いれば変更部分だけを入れ替えればよく,複数画面を作ることなくスマートな画面を構築することができます。ただし,この手法では気を付けなくてはいけないことがあります。それは,IISなどのWebサーバのアクセスログの解析が複雑になることです。
一つの画面IDで複数のログが残るので,ツールを用いて解析する必要が出てきています。これらの解析についてサードベンダーからツールが発売されているので,それらを活用することで解決できると思います。
このようにユーザインターフェイスの技術は多岐にわたるため,Windows FormベースとWeb Formベースのそれぞれについての設計時の注意点について解説していきます。
①Windows Formベースのアプリケーションの設計について
Windows Formはよくリッチクライアントと呼ばれます。以前はほかのものに比べて微細な調整ができたり,さまざまな機能を持ったコントロールを扱うことができたりしていたので,このように呼ばれていました。しかし,現在ではWeb Formでもかなり手の込んだ画面を作成できるようになってきています。そのため,Windows Formを選択するかどうかは構築するアプリケーションの特製に合わせて検討する必要があります。
Windows Formを選択したアプリケーションの実行環境は,クライアントPCにアプリケーションをインストールするため,クライアントPCの性能・機能・資産を使用することができます。これにより,業務の流れに沿った操作手順の実現,分かり易いヘルプの表示やグラフィカルな画面,高度なセキュリティ技術を活用したクライアントPC環境の構築などが実現しやすくなります。
Windows Formアプリケーションのネットワーク環境は専用線や社内LAN環境などのセキュア環境での使用が多いと思われます。そのため,たとえば銀行内や証券所でのオンライン業務などの高い秘密性が要求される業務で用いられています。
また,Windows Formベースのアプリケーションでは,オンラインだけでなくオフライン(必要時のみ接続する)での使用も想定されます。
たとえばこのようなシナリオが考えられます。外回りをされている営業の方が社内でネットワークに接続し,必要な業務データを外出用クライアントPCに格納して持ち出し,顧客先などの非接続(オフライン)環境で業務を行うこともあると思われます。その際はクライアントPCからの情報漏洩に注意するだけでなく,オフライン環境で業務を遂行できるようなアプリケーションを構築する必要があります。それはクライアントPC内にオフラインで作成した業務データを保持しておく仕組みを構築することを検討する必要があります。たとえばテキストファイル,XMLファイルもしくは小型のDBを構築する必要があるかもしれません。小型のDBを構築する場合は,維持・管理についての検討が必要となります。いずれも情報漏洩対策を考慮しながら,操作性,運用性のレベルを低下しないようにする必要があります。
また,Windows FormアプリケーションではアプリケーションをクライアントPCにインストールしなければならないため,バージョン管理や配布方法,アプリケーションを実行するユーザ権限などの管理が必要になります。Web Formベースのアプリケーション構築が進んできた背景にはこれらの管理工数の削減を図る意図もあります。
しかし昨今では,ClickOnceによる配置とWindowsインストーラを活用することにより,これらの管理工数を削減することができます。
- ※1
ASP.NET AJAX自体についてはさまざまな意見があり,「以前からある技術を纏めただけ」とか「フロントエンドの仕組みだけでなく,バック側(ブラウザ側,サーバ側を含め)の仕組みも考慮されているから新技術では」などといわれています。私的には,ASP.NETに特化した機能を含んでいるので,「以前からある技術に機能を追加し,ASP.NET AJAXとして体系化された」新技術と考えています。
- ※2
このプロジェクトは施設の予約券の発券専用端末上で稼働するアプリケーションでした。使用対象者は幼稚園生~80・90歳を超えた方まですべての方でした。また,利用者は日本人だけでなく,海外の方もご利用いただくアプリケーションだったため,マルチランゲージへの対応が必須でした。このアプリケーションの場合,予約券の発券だけでなく,施設の紹介,施設内でのプログラムの説明もする必要がありました。
これらの要件を満たし,利用者により快適で,より使いやすいアプリケーションを提供するために3Dグラフィックと動画を中心とした設計を提案しました。
当時は.NET Framework 1.1の頃で,3Dグラフィックや動画を使用したアプリケーションの構築は困難でした。しかし,最終的な利用者の利便性を考慮した提案が採用され,無事に構築・納品・稼働させることができました。利用者からの反応もなかなかよかったと顧客からお褒めのお言葉をいただくことができました。
- ※3
ただし,BtoC(Business to Consumer)アプリケーションなどではユーザインターフェイスコンポーネントの対象は操作画面などがない業務アプリケーションとなるため,今回は対象外とします。

