連載

アプリケーション・アーキテクチャ設計入門
―― Application Architecture for .NETに学ぶ.NETシステム設計 ――

第2回 論理アーキテクチャを構成するコンポーネントの設計(プレゼンテーション層編)

日本ユニシス 猪股 健太郎
2003/10/04
Page1 Page2 Page3


Back Issue
1
.NET開発者のための設計ガイドライン

今回の内容

 第1回の記事では、マイクロソフトが提供するアーキテクチャ設計のガイダンスであるAAfN(Application Architecture for .NET)の導入部と、そこで提示されている論理アーキテクチャについて紹介した。AAfNの論理アーキテクチャは3つの論理階層(レイヤ)とそれらに属する8種類のコンポーネント、そして論理階層(レイヤ)に属さないコンポーネント群から構成されている。

Application Architecture for .NETで推奨されている論理アーキテクチャ(再掲)
3つの論理階層(レイヤ)とそれらに属する8種類のコンポーネント、そして論理階層(レイヤ)をまたがる形で配置されたコンポーネント群から構成されている。

 今回および次回では、AAfNの3つの論理階層(レイヤ)に属する8種類のコンポーネントについて、次の3点を中心にして具体的な設計指針を見ていくことにしよう。

  • コンポーネントの特徴
  • コンポーネントで実装すべき役割
  • 設計上の推奨項目

 まず今回は、プレゼンテーション層に属する2つのコンポーネントを取り上げる。

プレゼンテーション層

■ユーザー・インターフェイス・コンポーネント

 ユーザー・インターフェイスはさまざまな形が考えられる。前回サンプル・シナリオとして示した小売業アプリケーションの例では、Webのユーザー・インターフェイスとWindowsアプリケーションのユーザー・インターフェイスとの両方が必要である。そのほかのユーザー・インターフェイスとしては、音声インターフェイスであるとか、オフィス・スイート製品のドキュメントであるとか、モバイル・クライアントといったものが考えられるだろう。

 ユーザーとアプリケーションがやりとりするために必要な処理を列挙する。

  • ユーザーにデータを表示する
  • ユーザーからデータを取得する
  • ビジネス・データにアクセスするためのイベントを解釈する
  • ユーザー・インターフェイスの状態を変える
  • ユーザーの処理を進める

 このようなユーザー・インターフェイスを実現するコンポーネントが、「ユーザー・インターフェイス・コンポーネント」である。

 ユーザー・インターフェイス・コンポーネントは、「View」と「Controller」の2つの部分に分けられる。

 Viewは、Webページやフォームである。Viewの上には、ボタンやDataGridコントロールなどの、データを表示したり入力を受け取ったりする要素が多数配置される。ユーザーがそれらの要素を操作すると、Controllerを呼び出すイベントが発生する。

 Controllerは、Viewのイベントに応じてビジネス・データにアクセスするコードを呼び出す。Controllerが呼び出すのは、ビジネス層のビジネス・コンポーネントや、データ層のデータアクセス・ロジック・コンポーネント、あるいは同じ層に位置するユーザー・プロセス・コンポーネントである。必要なデータを受け取ったControllerはViewの要素を適切に更新する。

ユーザー・インターフェイス・コンポーネントの特徴
  • トランザクションを開始しない。トランザクションに参加したり投票したりもしない

  • 表示上の必要があれば、ユーザー・プロセス・コンポーネントへの参照を持つ

  • ViewとControllerの両方をカプセル化してもよい

 

ユーザー・インターフェイス・コンポーネントの役割

 データの入力時には以下の処理をする。

  • データを取得する

  • ツールやガイドでデータの登録を助ける

  • ユーザーの操作を解釈して、Controllerを呼び出す

  • Controllerは、ユーザー・プロセスを開始したりユーザー・プロセスの状態を変えたりすることで、ユーザー・インターフェイス・コンポーネントの表示内容を変更する

  • 入力可能なデータの型を制限する

  • 入力されたデータを検証する

  • 入力されたデータを、その後に控えるコンポーネントに都合が良いようにマップしたり変形したりする

 データの出力時には以下の処理をする。

  • ビジネス・コンポーネントまたはデータアクセス・ロジック・コンポーネントのデータを取得して表示する

  • 表示フォーマットを決める

  • 表示データをローカライズする(リソース文字列などによる)

  • ビジネス・エンティティに関係するデータを表示する。ビジネス・エンティティの実装がADO.NETのDataSet型を使用していれば楽だが、独自のビジネス・エンティティ・コンポーネントならば追加のコードが必要である

  • アプリケーションのステータス情報を表示する

  • ユーザー・インターフェイスの外観を、ユーザー設定や使用デバイスに応じてカスタマイズする

 これらに加えて、キャッシュ、ページ処理、取り消し、クリップボードなどが必要であれば、それらの機能を実現するユーティリティ・コンポーネントを用意しておいて、適宜呼び出すこともする。

 

 INDEX
  [連載] アプリケーション・アーキテクチャ設計入門
  第2回 論理アーキテクチャを構成するコンポーネントの設計(プレゼンテーション層編)
  1.ユーザー・インターフェイス・コンポーネントの設計
    2.4つのユーザー・インターフェイス・コンポーネント実装技術
    3.ユーザー・プロセス・コンポーネントの設計
 
インデックス・ページヘ  「アプリケーション・アーキテクチャ設計入門」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間