
Microsoft Worldwide Licensing and Pricing (WWLP) グループは先ごろ、前バージョンよりも使いやすく、パフォーマンスに優れたエンタープライズ ライセンス アプリケーションを開発しました。このグループは Microsoft® SQL Server™ 2005 でサポートされている 64 ビット処理を使用することによって、価格データが格納された大容量データベースをコンパクトな形式に縮小しています。開発チームは、ライセンス担当スタッフにとって使いやすいビジネス コンポーネントに価格データを組み込むことで、価格設定ポリシーに対する準拠の度合いを高めています。また、SQL Server の共通言語ランタイム (CLR) サポートを活用して、クライアント アプリケーションを動作させるビジネス コンポーネントを再利用することで、開発リソースの節約に成功しています。
| はじめに | |
| 状況 | |
| ソリューション | |
| 利点 | |
| 結論 |
WWLP グループでは、価格情報を配布し、エンタープライズ ライセンス アグリーメントを作成するプロセスを能率的に行うビジネス ソリューションを必要としていました。WWLP グループが実装したソリューションは、他の企業組織が見積もり担当スタッフや営業担当者のために同様のソリューションを開発する場合に役立つと考えられます。このケース スタディの対象読者は、最高情報責任者、IT 技術責任者、および価格設定とライセンス アグリーメント用のエンタープライズ レベルのソリューションを改良することに関わる IT プロフェッショナルです。
Microsoft Corporation では、企業ユーザー用のライセンス アグリーメントを準備する 1,000 名のライセンス担当役員と専門家を支援するソリューションを、WWLP グループが提供しています。WWLP グループは Microsoft Excel® で構築した社内アプリケーション EZPET 1.0 を使用して、価格情報をライセンス担当スタッフに配布し、見積もりを行い、その見積もりをエンタープライズ アグリーメント ユーザーに配布していました。
それぞれのライセンス担当スタッフには、月に一度、最新の価格が掲載された Excel ブックが配布されます。この価格ブックの作成は、面倒な手動による作業でした。ライセンス情報のデータ リポジトリには、製品とボリュームに基づいて決定された約 2,200 万件の標準価格が登録されていて、そのうち 460 万件が現在有効です。このソース データベースが巨大なために、価格ブックの作成には時間がかかっていました。このブックは配布が遅れることが多々あるうえ、大量の情報がワークブック形式で格納されているために使いづらいものでした。ライセンス担当スタッフは、新しいアグリーメントを作成するときに、不正確な情報や古くなった情報を使用することがよくありました。このような状況によって、最新の価格設定ポリシーへの準拠の度合いが低下していました。
ライセンス担当者が必要としていたのは、最新の価格情報をオフラインで (たとえば飛行機の機内で) 使用できることでした。WWLP グループは、リポジトリにある巨大なデータを管理しやすい量に縮小して、簡単にローカル コンピュータに配布して使用できるようにする必要がありました。アプリケーション ユーザーが簡単に価格データを利用できるようにデータを単純化するには、強力なコンピュータ処理リソースが必要です。また、報告と説明責任の点から、新システムでは、EZPET データベースに新しいエンタープライズ ライセンス アグリーメントのデータを格納する必要がありました。通常、このようなシステムを導入する場合には、クライアントとサーバーに新しいソフトウェアをインストールする必要があります。
WWLP グループの EZPET 2.0 クライアント アプリケーションは EZPET 2.0 BIZ コンポーネントを搭載し、1,000 名のユーザーのデスクトップ コンピュータに、価格情報とエンタープライズ アグリーメントのビジネス ルールを効率的に配信します。見積もりやライセンスの担当スタッフが EZPET クライアントを使用している間は、このクライアントにビジネス アグリーメントの情報が取得および保持されます。
EZPET 2.0 ソリューションの概要は次のとおりです。
| • | クライアント、サーバー双方のソリューションとして機能する単一コンポーネントから構成されているので、必要な開発リソースが抑えられました。 |
| • | 配布される EZPET スマート クライアントを使用して、新しいエンタープライズ アグリーメントを作成する見積もり担当スタッフや営業担当者は、データとビジネス ルールのコンパクトなセットを取得します。データが追加されたアグリーメントは、保存のたびに Extensible Markup Language (XML) にシリアル化されます。 |
| • | SQL Server 2005 を実行するサーバーの EZPET 2.0 データベースに新しいアグリーメントが含まれた XML を送信し、シリアル化された XML データを EZPET データベースに保存します。 |
| • | レポート作成のため、SQL Server 2005 CLR を使用してデータのシリアル化を解除し、エンタープライズ アグリーメントのデータを処理します。 |
| • | SQL Server 2005 の 64 ビット処理のサポートを使用して、基になった価格データの標準価格 460 万件分が基本価格とビジネス ルールのコンパクトなコレクションに縮小されています。このコレクションは、EZPET 2.0 BIZ コンポーネントの各インスタンスで取得できます。 |
縮小された価格データは、EZPET 2.0 BIZ コンポーネントというスマート クライアントに組み込まれます。このコンポーネントは、Microsoft Visual Studio® 2005 の ClickOnce 自動化テクノロジによって、ライセンスや見積もりの担当スタッフのコンピュータにサーバーから簡単にダウンロードして使用できます。見積もり担当スタッフは、クライアント アプリケーションを使用して、新しいエンタープライズ ライセンス アグリーメントの見積もりを作成します。クライアントを実行するローカル コンピュータでは、Microsoft Windows® XP Professional SP2 と Microsoft .NET Framework Version 2.0 を実行します。見積もり担当スタッフがエンタープライズ ライセンス アグリーメントの見積もりを完成させると、EZPET 2.0 BIZ コンポーネントが XML にシリアル化され、SQL Server 2005 を実行しているサーバーに送信されて、SQL Server の XML データ型として EZPET 2.0 データベースに保存されます。
開発チームは、EZPET 2.0 BIZ コンポーネントを、クライアント側でもサーバー側でも機能するソリューションとして設計しました。SQL Server 2005 の CLR 統合を利用し、EZPET クライアントとデータベース サーバーで次のように実行される C# コンポーネントを開発しました。
| • | EZPET 2.0 BIZ コンポーネントはローカル コンピュータでスマート クライアントとして動作するため、見積もり担当スタッフが新しいエンタープライズ アグリーメントの見積もりを作成するときに、再利用可能なデータがクライアントによって取得されます。 |
| • | ユーザーがアグリーメントを保存すると、そのアグリーメントが XML としてシリアル化され、ローカル コンピュータに保存されます。シリアル化されたアグリーメントは、後で同一のコンピュータで開いて別の処理を行ったり、EZPET データベースをホストするサーバーに送信してデータベースに XML データ型として保存したりできます。 |
| • | レポート作成のため、XML はシリアル化を解除され、.NET Framework ベースのアプリケーションとして実行されます。 |
EZPET 2.0 BIZ コンポーネントという単一のコンポーネントから、エンド ツー エンドのソリューションが構成されています。このアプリケーションを効率的に開発するポイントは、基底になるすべてのロジックを 1 つの C# ビジネス コンポーネントにカプセル化することです。このコンポーネントはクライアント コンピュータで実行され、XML にシリアル化されて SQL Server 2005 に返されます。SQL Server CLR を使用すると、クライアントで実行するコードを、C# のプログラムや Transact-SQL (T-SQL) のコードを追加することなく、同じコードのままサーバーで実行できます。
レポートを生成するなど、データベースに保存されているエンタープライズ アグリーメントの情報を活用するために、EZPET 2.0 アプリケーションではデータベースからデータを取得し、SQL Server 2005 の CLR 統合機能で処理します。CLR 統合とは、中核的な .NET サービスをサポートする SQL Server 2005 の機能です。
EZPET アプリケーションは以下の手順に従って、エンタープライズ アグリーメントのデータを保存および取得し、SQL Server 2005 CLR 統合でデータを処理し、レポートを作成します。
1. | シリアル化されたコンポーネントの保存 |
2. | .NET 処理のための XML シリアル化の解除 |
3. | CLR アセンブリのコンパイルと実行 |
4. | レポートの生成 |

図 1 : EZPET と CLR 統合
C# で記述された次のコード例は、ライセンス契約の詳細が含まれた、シリアル化後の EZPET 2.0 Biz コンポーネントで、SQL Server 2005 CLR コードによって CLR Enterprise Agreement クラスが XML データ型にどのようにマップされるかを示しています。この例では、契約対象のデスクトップ コンピュータの台数が返されます。
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Data.SqlTypes;
namespace DBInterface
{
public class DataValues
{
public int getDesktopCount(SqlXml eaXML)
{
XmlSerializer _Serializer =
new System.Xml.Serialization.XmlSerializer
(typeof(DealGenie.EnterpriseAgreement));
XmlTextReader _Reader =
new XmlTextReader(eaXML.ToString());
DealGenie.EnterpriseAgreement DeserializedDeal =
(DealGenie.EnterpriseAgreement)_Serializer.Deserialize(_Reader);
return (int) DeserializedDeal.NumberOfDesktops;
}
}
}
もう一つの利点として、.NET アプリケーションのコードはコンパイルされキャッシュが保持されるので、SQL Server CLR で実行する .NET コードは T-SQL に比べて高いパフォーマンスを実現します。T-SQL コードはインタープリタで実行されるので、パフォーマンスは劣ります。
EZPET 2.0 BIZ コンポーネントのインスタンスを作成する前に、460 万件の有効な標準価格が保存された SQL Server データベースを数百の基本価格とビジネス ルールに縮小します。データを縮小するため、WWLP グループは 64 ビット処理対応の SQL Server 2005 Analysis Services を実行する 64 ビット サーバーを配置しました。
これだけの量の標準価格データを縮小する際に問題となったのは、アドレス指定できる RAM が 32 ビット システムでは足りないことでした。32 ビット システムには、すべてのデータを保存するだけのアドレス指定可能なメモリがないので、ディスク I/O の負荷が高くなり、調査に必要なクエリの速度が低下します。64 ビット システムに移行したことで、すべてのデータをメモリに読み込んで、冗長なデータを判断するためのデータ分析を短時間で行うことができました。32 ビット サーバーでは数時間かかるクエリも、RAM が潤沢な 64 ビット サーバーでは数分とかかりません。
EZPET 2.0 は、価格データが保存された巨大なデータベースを効率的に処理し、オフラインのクライアント コンピュータで実行できる、コンパクトで再利用可能なコンポーネントに縮小できるように設計されました。EZPET 2.0 アプリケーションのアーキテクチャは、次のコンポーネントから構成されます。
| • | データベース サーバー Microsoft Windows Server™ 2003 Enterprise x64 Edition および SQL Server 2005 を実行するサーバー。このプラットフォームで、元データのサーバーに保存されている 2,200 万件分の標準価格データベースから、有効な標準価格 460 万件を抽出します。SQL Server 2005 により、豊富なメモリ領域に対してアドレス指定が行われ、460 万件の標準価格をフィルタ処理によって数百の基本レコードと関連するビジネス ルールに縮小します。縮小したデータは、EZPET 2.0 BIZ コンポーネントのインスタンスに組み込むことができるコンパクトさです。 |
| • | クライアント Windows XP Professional および .NET Framework 2.0 を実行するローカル コンピュータ。EZPET 2.0 BIZ コンポーネントはローカル コンピュータにダウンロードされ、ユーザーがオフラインで実行して新しいエンタープライズ アグリーメントの作成に使用できます。エンタープライズ アグリーメントは、EZPET 2.0 クライアントによって XML にシリアル化され、ローカル コンピュータに保存されます。保存が完了すると、エンタープライズ アグリーメントは XML としてサーバーに返送されます。 |
| • | データ分析サーバー Windows Server 2003 および SQL Server 2005 Reporting Services を実行するサーバー。データ分析サーバーでは SQL Server 2005 の SQL CLR 機能によって .NET コードで EZPET 2.0 BIZ コンポーネントのシリアル化を解除し、EZPET クライアントで使用するのと同じ .NET コードを実行できるようにします。SQL Server 2005 Reporting Services はレポート作成プラットフォームになります。 |
図 2 に、ソリューション アーキテクチャを示します。

図 2 : EZPET 2.0 のソリューション アーキテクチャ
Microsoft WWLP グループは、SQL Server 2005 の新機能を使用することで、ビジネス上の重要な問題を解決したアプリケーションを迅速に開発して配置しました。
SQL Server 2005 の CLR 機能を使用するアプリケーションを開発することで、WWLP の開発グループは単一の EZPET 2.0 BIZ コンポーネントを提供できました。このコンポーネントは、EZPET クライアントを動作させ、SQL Server 2005 を実行する EZPET データベース サーバーで実行されます。SQL CLR で XML から EZPET 2.0 BIZ コンポーネントへのシリアル化解除がサポートされているので、SQL Server 2005 で追加のプログラミングが必要とされることはありません。
EZPET 2.0 BIZ コンポーネントはクライアントでシリアル化された後、サーバーでシリアル化が解除され、SQL Server CLR によって処理されます。その結果、開発時間が 50% 短縮しました。クライアントとサーバーで別個のソリューションを開発する必要があったとすると、このプロジェクトのコストは 500 人時になったと考えられます。しかし、実際に開発グループが EZPET 2.0 の開発に費やしたのは 250 人時であり、半分のリソースが他のプロジェクトに解放されました。
64 ビット コンピュータで SQL Server 2005 Analysis Services を実行することで、32 ビット システムに比べて 64 ビット システムのアドレス指定可能なメモリが多いというメリットを得ることができます。460 万件の標準価格を縮小するために、32 ビット システムでは数時間かかるのに対し、64 ビット システムでは数分で終了します。処理が高速化したことで、少なくとも 95% のスループット向上を実現しました。
EZPET 2.0 BIZ コンポーネントはサーバーに配置されているため、そこから 1,000 名の見積もりやライセンスの担当スタッフが簡単にコンポーネントを取得できます。配布や使用が煩雑だった巨大な Excel の価格ブックが、小さい BIZ コンポーネントに替わりました。
EZPET 2.0 BIZ コンポーネントを使用することで、以下の利点があります。
| • | 価格ブックを更新するために送受信することがなくなり、ネットワークの負荷が大幅に減少しました。 | ||||||||||
| • | EZPET 2.0 ユーザーは、以下の待ち時間がなくなることで、平均して 1 日に少なくとも 15 分を節約しています。
|
1 日 8 時間、1 週 5 日、1 か月 4 週、1 年 12 か月とすると、15 分が蓄積されて 1 人あたり年間 62.5 時間の処理時間が節約されます。1,000 名のユーザーがこの時間を節約した場合、グループ全体で年間 62,500 時間の節約になります。ただし、1 日 15 分という数字は最低限の数字です。実際の効果はもっと大きいかもしれません。
64 ビット サーバーで SQL Server 2005 Analysis Services を実行して、現在の標準価格 460 万件分を基本価格とビジネス ルールのコンパクトなセットに効果的に縮小し、その後 EZPET 2.0 BIZ コンポーネントにカプセル化します。EZPET 2.0 BIZ コンポーネントは、見積もり担当スタッフが以前使用していた Excel の価格ブックよりも簡単に取得して使用できます。
最新の価格情報を使用することが増えたため、見積もり担当スタッフは EZPET 2.0 が実稼働になって以来、約 2 倍の精度 (約 50% から約 100%) で最新の価格とビジネス ロジックに準拠するようになりました。
シリアル化を解除した EZPET 2.0 BIZ コンポーネントは、コンパイルされてキャッシュされた .NET コードとして実行されます。このテクノロジによって、インタープリタ言語である T-SQL よりも優れたパフォーマンスを発揮します。
EZPET 2.0 アプリケーションでは、Microsoft WWLP グループが抱えていたビジネス上の重要な問題を解決するため、SQL Server 2005 の機能を使用しました。64 ビット サーバーのサポートを使用することでメモリのボトルネックを取り除き、巨大なデータベースをコンパクトで使いやすいコンポーネントに効果的に縮小しました。開発チームは XML シリアル化およびシリアル化解除のサポートを使用することで、リソースを節約すると同時に、高い精度で価格設定ポリシーに準拠できる再利用可能なビジネス コンポーネントを生成できました。
多くの組織は同様のビジネス上の問題を扱うソリューションを作成するために、今回使用したものと同一の SQL Server 2005 の機能を直ちに利用できます。
SQL Server 2005 の詳細については、マイクロソフト Web サイトの SQL Server 2005 ホーム ページを参照してください。
http://www.microsoft.com/japan/sql/default.mspx
マイクロソフト製品またはサービスに関する詳細については、米国 Microsoft Sales Information Center (800-426-9400) またはカナダ Microsoft Canada Information Centre (800-563-9048) にお電話でお問い合わせください。米国 50 州およびカナダ以外にお住まいの方は、現地のマイクロソフト支社にお問い合わせください。次の Web サイトでマイクロソフトの情報をご覧いただけます。
http://www.microsoft.com/japan/
http://www.microsoft.com/itshowcase ( 英語 )
http://www.microsoft.com/japan/technet/itsolutions/msit/default.mspx
このドキュメントに関する質問、意見、提案がある場合や、マイクロソフト IT ショウケースの追加情報の入手を希望される場合は、showcase@microsoft.com 宛てに電子メール (英語のみ) でご連絡ください。