連載アプリケーション・アーキテクチャ設計入門 第2回 論理アーキテクチャを構成するコンポーネントの設計(プレゼンテーション層編) 日本ユニシス 猪股 健太郎 |
AAfNでは、ユーザー・インターフェイス・コンポーネントの実装技術として、Windowsアプリケーション、インターネット・ブラウザ、モバイル・デバイス、ドキュメントの4つを提案している。
ユーザー・インターフェイス・コンポーネントの実装技術 |
AAfNではユーザー・インターフェイス・コンポーネントの実装技術として4つの形態を提案している。 |
Windowsアプリケーション
Windowsアプリケーションとしてユーザー・インターフェイス・コンポーネントを実装することのメリットとしては、オフラインでも利用できること、操作性を高められること、ほかのアプリケーションのユーザー・インターフェイスを統合できること、が挙げられる。
AAfNでは、Windowsデスクトップ・アプリケーションによるユーザー・インターフェイスを3つに分類している。
1. Windowsフォームで作られた、本格的なWindowsアプリケーション
このメリットは、豊富な機能により快適な操作性をユーザーに提供できることと、アプリケーションの外観を自由にできることである。デメリットは、クライアントの環境に依存してしまうことと、アプリケーションを(Webからダウンロードするのであっても)インストールしなければならないことである。
2. HTMLを埋め込んだWindowsアプリケーション
ユーザー・インターフェイスの一部をHTMLで表現したWindowsアプリケーションである。メリットは、外観を動的に変更できること、ユーザーによるカスタマイズが容易になることである。デメリットは、セキュリティ・ホールを埋め込まないためにデータのサニタイジング(特殊文字などの無効化)が必要となることと、HTMLやイベントの処理のために特別なコードが必要となることである。
3. ほかのアプリケーションのプラグイン
プラグインの形で特定のアプリケーションを拡張する手法である。メリットは、ユーザー・インターフェイスのほとんどをほかのアプリケーションに任せるため、開発者はビジネス・ロジックに専念できることである。デメリットは、プラグインをホストするアプリケーションに強く依存してしまうことである。
推奨
|
インターネット・ブラウザ
インターネット・ブラウザによるユーザー・インターフェイスは、多くのデバイスとプラットフォームから利用できる標準規格に基づくユーザー・インターフェイスである。.NET Framework上で開発する場合は、ASP.NETがさまざまな機能を提供してくれる。
推奨
|
モバイル・デバイス
ここでは、ハンドヘルドPC、WAP電話、iモード端末などを総称してモバイル・デバイスと呼んでいる。これらのデバイスをユーザー・インターフェイスとして利用する場合、前に挙げたようなデスクトップPC向けのユーザー・インターフェイスとは異なる考慮が必要になる。特に重要なのは、画面の広さである。モバイル・デバイスは画面がずっと狭いので、デスクトップPCとは違った操作性を提供しなければならない。例えば、クレジット・カードの番号を登録するのにはデスクトップ・クライアントを使い、モバイル・クライアントでは登録されたカード情報の選択のみを行うといったように、モバイル・デバイスとデスクトップPCとを協調させることが考えられるだろう。
1. Web
さまざまなモバイル・デバイスがWeb閲覧をサポートしているが、ブラウザによって対応しているマークアップ言語に差がある。マイクロソフトが提供しているASP.NETモバイル・コントロール(以前はMobile Internet Toolkitと呼ばれていた)を使えば、HTML 3.2、WML、cHTMLなど、ブラウザの種類に応じて自動的に出力する形式を変更してくれる。
2. スマート・デバイス
モバイル・デバイスのOSがPocket PCやWindows CE .NETであれば、.NET Compact Frameworkが動作する。つまり、モバイル・デバイスに.NET Compact Frameworkがインストールしてあるのなら、モバイル・デバイス向けのリッチ・クライアントを.NETベースで開発できるということである。
推奨 どちらの場合も基本的にデスクトップPC向けと同じだが、モバイル・デバイスの場合は特に入力データの検証に注意を要する。Webであれば、クライアント側での検証には多くを期待できないし、スマート・デバイスであれば、Visual Studio .NETの「スマート・デバイス拡張」には、検証コントロールが含まれていないためである。 |
ドキュメント
これは、WordやExcelといったOfficeスイート製品のドキュメントをユーザー・インターフェイスにすることを指している。この方式は、ユーザーが普段使っている道具を使ってデータを入力したり閲覧したりすることができる点にメリットがある。
利用目的は2つに大きく分けられる。
-
データの閲覧。適切な形式のドキュメントとしてデータを閲覧できる
-
データの収集。電話で注文を受けた営業担当者がExcelのシートに注文情報を書いて、ドキュメントをビジネス・プロセスに渡すなど
また、ドキュメント・ベースのユーザー・インターフェイスの利用シナリオとして、「システム外部での作業」と「システム内部での作業」が考えられる。
「システム外部での作業」は、ドキュメントにロジックが含まれない場合である。データの収集では、ユーザーは好きなようにドキュメントを作成した後、Windowsアプリケーションでドキュメントを取り込むか、Webアプリケーションでドキュメントをアップロードする。データの閲覧では、WindowsまたはWebアプリケーションがドキュメントを作成する。作成されたドキュメントは、ユーザーがディスクに保存したり、ハイパーリンクとして提示されたり、結果画面に埋め込まれたりする。
「システム内部での作業」は、ドキュメントがロジックを含む場合である。データの収集では、事前に定義されたフォームを用いる。カスタム・ボタンやメニュー・オプションに対応してスクリプトが実行され、ビジネス・コンポーネントやユーザー・プロセス・コンポーネントが呼び出される。データの閲覧では、サーバからデータを受け取るためのカスタム・ボタンやメニュー・オプションを実装する。例えば、営業がフォームに顧客名を記入したときに、CRMデータベースから取得した全契約情報を表示する、といった感じである。
推奨 ドキュメント・ベースのユーザー・インターフェイスにおいても、入力データの検証には注意が必要である。データ型を限定するだけでなく、データをチェックしてエラーを表示する機能を実装する場合も多いだろう。 |
AAfNは、ユーザー・インターフェイス・コンポーネントが、ビジネス層を通さずに直接データ・アクセス・ロジック・コンポーネントにアクセスすることを認めている。これは論理階層(レイヤ)の概念を壊すように思えるが、便利な場合も多いため、以下の条件を満たすのであれば、そのような設計を検討してもよい。
-
ユーザー・インターフェイスとデータアクセス・ロジックを密に結合させたい場合は、直接データ・アクセス・ロジック・コンポーネントにアクセスしてもよい。ただし、一方の変更が他方に影響を及ぼすことに注意する
-
ユーザー・インターフェイス・コンポーネントとデータアクセス・ロジック・コンポーネントが同一のサーバに置かれていて、かつ、DataReaderクラスを使用した場合のようにデータ・ストリームを直接ユーザー・インターフェイスに表示することでパフォーマンスを改善できる場合は、直接データ・アクセス・ロジック・コンポーネントにアクセスしてもよい。ただし、それらのコンポーネントが別のサーバに置かれている場合は、性能の向上は期待できない
ただし、いずれにせよデータ・アクセスのロジックとビジネス・プロセスのロジックを混在させてはいけない。
INDEX | ||
[連載] アプリケーション・アーキテクチャ設計入門 | ||
第2回 論理アーキテクチャを構成するコンポーネントの設計(プレゼンテーション層編) | ||
1.ユーザー・インターフェイス・コンポーネントの設計 | ||
2.4つのユーザー・インターフェイス・コンポーネント実装技術 | ||
3.ユーザー・プロセス・コンポーネントの設計 | ||
「アプリケーション・アーキテクチャ設計入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|