はじめに
.NETの登場によって確かにアプリケーションの開発は容易になりました。今や開発者は大きな難題にぶつかることなく魅力的で機能的なアプリケーションを書くことができます。一方で、アプリケーションの配置(デプロイメント)については、開発サイクルの他のフェーズに比べて関心が薄れつつあります。本稿では、カスタム動作(Custom Action)を利用して、配置中にターゲットコンピュータ上で設定ファイルを作成する手順を説明します。この配置プロセスでは、ユーザー(インストール実行者)から情報を収集し、その結果に基づいて適切なフォルダとXMLファイルを作成して、そこにユーザー固有の情報を格納します。今回のサンプルアプリケーションでは、どのユーザーがアプリケーションを実行しているかによって、機能の一部を無効にしたり有効にしたりします。このような仕組みは、同じソフトウェアをいくつかのベンダーに提供し、それぞれのベンダーの要件に応じて一部の機能を無効または有効にしたい場合などに役立ちます。
今回のサンプルのポイント
インストール時に一部の機能の無効/有効を決定するアプリケーションを実現するには、インストール中に、インストール実行者についての固有の情報をXMLファイルに記録します。このXMLファイルをアプリケーションの実行時に読み込み、実行ユーザーに応じてインターフェイスをカスタマイズすればよいのです。
実装
ある組織のために開発したアプリケーションを、一部の機能を制限または無効にして別の組織に提供しなければならない、という状況に直面することがあります。そのソフトウェアが.NETで書かれていれば、Visual Studio .NETのカスタム配置の機能を使ってこの問題を容易に解決できます。本稿では、VS .NETのカスタム動作を使用して、配置プロセス中にターゲットコンピュータ上で各種ファイルを用意する方法について説明します。具体例として、この仕組みをカスタム配置によって実現している簡単なアプリケーションを紹介します。
次の2つの図は、今回のデモ用に作成したインターフェイスです。このアプリケーションは、1つのフォームといくつかのコントロールで構成されています。このアプリケーション自体はごく簡単なものですが、これから紹介する考え方はどんなアプリケーションにも応用できます。
ここで注目してほしいのは、「Arslan Inc」が実行しているアプリケーションの画面(図1)は、「ABC Financial Corp.」が実行しているアプリケーションの画面(図2)よりも構成要素(ボタン)が1つ多いという点です。
明らかに、このアプリケーションは実行する企業(エンドユーザー)によって異なる動作をしています。今回のサンプルアプリケーションでは、1つの変数(企業名)に基づいて動作の切り替えを行っています。大規模なアプリケーションでは、2つ以上の変数を扱ったり、ライセンスファイルを提供したりすることになるでしょう。
セットアップと配置
ソフトウェア開発ライフサイクルとは、ソフトウェアの完成と運用にいたるまでのあらゆる作業を含むプロセスのことです。典型的なライフサイクルは、構想化、計画、開発、安定化、配置など、いくつかのフェーズに分かれています。ただし、これら複数のフェーズが1つにまとまっていることもあります。構想化フェーズでは、ソリューションの目的を明確にします。計画フェーズでは、その目的を分析して設計を行います。開発フェーズでは、いわゆる開発作業の大部分を行います(ほとんどのコードはここで作成されます)。安定化フェーズでは、機能の追加は行いませんが、多くのテストを実施し、バグを修正します。このフェーズは「テストフェーズ」とも呼ばれます。最後の配置フェーズでは、ターゲットコンピュータにソフトウェアをインストールします。
配置戦略はアプリケーションの設計にも影響を与えるため、ライフサイクルの早い段階から、プロジェクトの配置について検討しておくことが重要です。たいていのアプリケーションは、配置の際に、サーバー上でのデータベースのセットアップ、IIS上での仮想ディレクトリのセットアップ、またはターゲットコンピュータ上でのファイル操作を必要とします。.NET Frameworkのおかげで、高価な配置プログラムを別途購入しなくても、アプリケーション開発者が自力で配置プログラムを作成することができます。
VS .NETを使えば、インストール先ディレクトリを変更するのも難しくはありませんし、Webアプリケーションにおいてインストール中に仮想ディレクトリを作成し、そこにアプリケーションファイルをコピーするのも比較的簡単です。ただし、大規模なWindowsアプリケーションやWebアプリケーションでは、共有コンポーネントのグローバルアセンブリキャッシュ(GAC)への登録、データベースのインストール、イベントログの追加に加えて、設定パラメータのカスタマイズに利用する情報をインストール実行ユーザーから収集したり、実行時のインターフェイスをカスタマイズするための設定ファイルをインストール時の入力情報に基づいて作成したりという処理が必要になります。
ここで改めて確認しておきましょう。本稿の目的は、実行ユーザーに応じてインターフェイスがカスタマイズされるアプリケーションを作成することです。ユーザーの情報はインストールプロセス中に記録され、アプリケーション実行時にXMLファイルから読み込まれるものとします。では前置きはこれくらいにして、VS .NETを利用してこの目的を達成する方法を見ていくことにしましょう。