HOME > ソフテックだより > 第87号(2009年4月1日発行) 技術レポート「.NETアプリケーションでのユーザーコントロールの活用」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第87号(2009年4月1日発行)
技術レポート

「.NETアプリケーションでのユーザーコントロールの活用」

1. はじめに

弊社ではWindowsアプリケーションの受託開発を行っております。
ご依頼案件によってアプリケーションの画面構成は様々であり、似たような画面がいくつも存在する画面構成の場合もありますが、そういった場合に各画面で同じ処理を個別にいくつも作成すると開発時間が無駄にかかってしまいます。
そこで”.NETアプリケーション”の開発効率を向上させる為に弊社では、『ユーザーコントロール』というものを使用しております。簡単に言えば、各画面での共通レイアウトを部品化するものです。今回は、この『ユーザーコントロール』について紹介させて頂きたいと思います。

2. ユーザーコントロールとは

(1). ユーザーコントロールとは

Windowsアプリケーションを作成する場合には、画面の作成時にコントロールと呼ばれる標準の画面部品(ラベル、テキストボックス、ボタン、etc...)を配置していきます。
これらの標準の画面部品を組み合わせて新たに独自のコントロールとして作成したものが、ユーザーコントロールです。

ユーザーコントロールは、標準の画面部品と同じ感覚で使用できます。
カスタムプロパティを用意しておくと、使用する側はプログラミングすることなく画面設定からも機能切り替えが可能となるメリットがあります。
将来的に動作を何パターンか切替えて使用する予定がある場合など、あらかじめカスタムプロパティとしてパラメータ化しておくことで、コード修正なしで容易に変更を行うことができるようになります。

また、ユーザーコントロールと同じ概念をもった技術として※OCX(OLE Custom Control)がありますが、”.NETアプリケーション”開発ではユーザーコントロールを利用するのが一般的のようです。ユーザーコントロールはクラスと同じように、プロジェクト内で作成できるため、一括したプロジェクト管理が可能となる利点もあります。

画面ソフトウェア部品としての特徴
図1. 画面ソフトウェア部品としての特徴

(2). 特徴

ユーザーコントロールには、以下のような特徴があります。

  • UI(UserInterface)共通処理を統合できる
  • グループ化してすっきりした構成にできる
  • 機能分割する場合に有効
  • 他アプリケーションで再利用可能

3. 使用例

それでは、ユーザーコントロールの特徴をふまえ、実際にどういった場合にユーザーコントロールを作成すれば開発を効率的に進めることができるか使用例をいくつかご紹介したいと思います。

(1). UI共通処理を統合できる

各画面で共通となる操作メニューや状態(ステータス)表示などがある場合などに有効です。
以下の例では、共通操作メニューのボタン押下時に何らか処理を行いますが、その処理もユーザーコントロール内で作成すれば、各画面では処理を実装する手間を省くことができます。

各画面で共通となるUIの場合
図2. 各画面で共通となるUIの場合

(2). グループ化してすっきりした構成にできる

一度ユーザーコントロールを作成して部品化してしまえば、各画面には通常のコントロールのように貼り付けるだけで使用できるので、再利用ができるようになります。そのため、似たようなUIを持つWindowsアプリケーションでは有効となります。
以下のように画面内に同じUIが存在する場合は、1つユーザーコントロールとして作成することで、あとは同じものを並べて貼り付けるだけで済みます。

画面内に同じUIが存在する場合
図3. 画面内に同じUIが存在する場合

(3). 機能分割する場合に有効

画面内に全てのコントロールを貼り付けて処理を実装した場合、画面クラス内に全ての処理を実装することになります。ここで画面内のグループごとにユーザーコントロール化すると、処理実装コードをグループ毎にUIとセットで独立させることができます。
再利用性はありませんが、各グループで部品化することでわかりやすいプログラム構成とすることができます。
以下の例では画面内にタブコントロールを配置し、タブのページ切替えで画面の表示を切替えるものです。
ここで、各タブページ内をユーザーコントロールとすることで、実装処理をグループ分けすることができます。

画面内で機能分割する場合
図4. 画面内で機能分割する場合

(4). 他アプリケーションで再利用可能

独立した機能を有したユーザーコントロールであれば、他アプリケーションでの再利用が可能となります。
以下の例では、『操作ログ』、『アプリログ』、『エラーログ』をリスト形式で表示しています。
この場合は、各ログを管理する機能とリストに表示する機能をユーザーコントロール内に実装します。
そうすることで、ログ機能を1つの部品として再利用が可能になります。
同じアプリケーション内で使うことは少ないですが、『操作ログ』などはアプリケーションで共通なものなので、別の開発での再利用がしやすいと思います。
ただ、通信ログのようにその開発によって異なるログとなるような場合には、ユーザーコントロール化するメリットは少ないです。

ロギング機能など独立している場合
図5. ロギング機能など独立している場合

4. おわりに

今回は、基本的なユーザーコントロールの使用例についてご紹介いたしました。
ユーザーコントロールとして部品化することで、同じような処理をいくつも作成することなく再利用ができるようになります。
ただし、部品化して再利用ができるからといって何でもユーザーコントロールにすればよいというわけではありません。
1箇所でしか使用しないものをわざわざユーザーコントロールにしても手間がかかるのみで意味はありません。
システム設計の段階で、以下のことを考慮することが必要です。

  • 各画面で共通化できるUIはあるか?
  • 各画面内の処理は共通でよいか?

再利用する価値があるのであれば、一度ユーザーコントロールを使ってみて頂ければと思います。

(Y.R.)

[注釈]
※OCX
Windowsにおいてアプリケーションソフト間のデータ連携を実現する仕組みであるOLE(Object Linking and Embedding)に準拠して作成されたソフトウェア部品。特定の機能のみを持ちサイズが小さい。単独で実行することはできず、アプリケーションソフトに組み込んで使用する。

関連ページへのリンク

関連するソフテックだより

ページTOPへ