| 
 スマートクライアント型システムにおけるVisual Studio .NETのメリットマイクロソフト コンサルティング本部 赤間 信幸 2004/06/03 | |
|  | 
C. InfoPathを活用したスマートクライアント型システム
 3つ目として、InfoPathを利用したスマートクライアント型システムの例を挙げよう。InfoPathはOffice 2003 Editionsから追加された新たなOfficeアプリケーションであるが、その内容や意義は まだご存知ない方も多いのではないかと思う。特に開発者の方々には、この機会に是非InfoPathの概要を知って頂きたい。
Accessとの対比をすると、技術的に見たInfoPathの位置付けが良く分かる。先の例で見た通り、AccessはローカルRDBMSを読み書きするリッチクライアントアプリケーションを、ノンプログラミングで開発することが可能なツールである。これに対して、InfoPathはXMLデータを操作するスマートクライアントを、ノンプログラミングで開発することが可能なツールである※16。特に伝票形式のデータ入力を行うようなスマートクライアントアプリケーションの開発に向いており、この場合には極めて高い開発生産性を発揮する。
| ※16 一般的に、XMLデータをJavaやC#などのプログラミング言語から操作するためにはDOM(Document ObjectModel)やSAX(Simple API for XML)と呼ばれるAPIを介した面倒なプログラミングを行わなければならず、開発生産性が上がりにくい(このためにC#やVB.NETなどではXMLデータをいったんデータセットに変換してから操作するといったことを行う)。しかしInfoPathを利用すれば、DOMやSAXなどのプログラミングなしにXMLデータを読み書きするUIフォームを簡単に開発することができてしまう。もちろんC#やVB.NETなどを利用した(何でもできる)Windowsフォームのリッチクライアントアプリケーションに比べればできることは限られているが、開発生産性とのトレードオフとなるため、場合によってはInfoPathを使ってUIを開発した方がよいケースも出てくる。 | 
ここでは一例として、伝票入力を行うスマートクライアントアプリケーションをInfoPathで開発する具体的な手順を示すことにする。
まず、開発者がInfoPathのデザイン機能を利用してデータ入力フォームを開発する。最初に何らかの方法※17で取り扱うXMLデータ(ここでは入力伝票)の構造を決定し、その後にフォームをデザインしていく(フォームは右ペインに表示されるデータ構造を適宜フォーム上にドラッグ&ドロップしていくことにより簡単に作ることができる)。
| ※17 独自にデータ構造を決めることもできるし、後述するようなXML Webサービスとの連携を行う場合には、XML Webサービスのインタフェース構造情報(WSDLデータ)を入手し、それを利用することができる。 | 
作成されたフォーム上の各入力項目は、図16に示したようにデータ構造とバインドされることになる。さらに各入力項目には詳細な入力規則をGUI画面から設定することもできるようになっている。
|  | 
| 図16 InfoPathを使ったスマートクライアント型システムの例 | 
このように、InfoPathを利用するとXMLデータ(入力伝票)を入力するためのフォームをノンプログラミングで開発することができる※18。作成したフォームは拡張子.xsnのテンプレートファイルとして保存し、エンドユーザに配布することになる。
| ※18 今回は一例としてXMLデータ構造から入力フォームを作成していく方法を示したが、これ以外にも、  データソースから新規作成する(XMLデータの構造、DBの構造、Webサービスから取得したデータ構造などが利用できる)、  新しい空白のフォームから新規作成する(利用するデータの構造も含めてフォームを作成する)、  サンプルをカスタマイズする(既存のInfoPathフォームを作り変え、ニーズにあったフォームを作成する)、など豊富な作成方法が用意されている。 | 
エンドユーザは配布されたフォームを開いてデータを入力することになる。フォームから入力したデータはXMLデータとしてローカルディスクに保存することができるが、さらにこのデータをXML Webサービスに送信することも可能である(図17、もちろんXML Webサービスの処理結果として返されるレスポンスデータも画面に表示するようにフォームを作っておくことができる)。
このように、InfoPathを利用すると
といったメリットが得られる。つまりInfoPathとは、XML Webサービス時代を見据えた、XMLベースのスマートクライアント開発の新たなソリューションなのである※19。
| ※19 InfoPathの詳細情報に関しては、弊社Webページを参照して頂きたい。http://www.microsoft.com/japan/office/infopath/prodinfo/default.mspx 特にFAQを読むとInfoPathが何を狙っているものなのかがよく分かる。 | 
|  | 
| 図17 InfoPathでのXML Webサービス利用例 | 
これらの例はクライアントサイドのマイクロソフト製品を活用するものだったが、マイクロソフトはクライアント製品、サーバ製品ともにXML Webサービス対応を進めることで、「つなぎやすい」「組み合わせやすい」環境作りを進めている。そしてそれは結果的に、組み合わせの工夫次第で効率的かつ素早いアプリケーション開発を実現できるトータルソリューションを生み出すことに繋がっていくものである。
6 スマートクライアント型システム形態の今後
現在の企業システムにはC/S型システム、あるいはWeb型システム形態が数多く利用されているが、今後、さらにスケーラビリティやUI要件が厳しくなっていくにつれ、スマートクライアント型システム形態がクローズアップされてくることになると思われる。
2003年11月現在、マイクロソフトでは次期版.NET FrameworkであるWhidbey(コードネーム)や次期版Windows OSであるLonghorn(コードネーム)において、こうしたスマートクライアント型システム形態をより簡単に開発できるよう、配布技術や開発技術などのさらなる強化を行っている。具体的には、次世代WindowsアプリケーションプログラミングモデルであるWinFX、あるいはアプリケーション配布をより簡単にするための仕組みであるClickOnceなどが挙げられる※20。しかし、そうした技術的な下支えが増えていけばいくほど、我々はスマートクライアント型システム開発におけるサーバサイド開発の本質的な設計の難しさに直面していくことになるだろう。
| ※20 これらの最新情報の多くはオープンなものとしてWebで公開されているので、定期的にウォッチすることをお勧めする。具体的には、MSDN Online Japan(http://www.microsoft.com/japan/msdn/)やGotDotNet Japan(http://www.gotdotnet.com/japan/)などを参照しておくとよい。 | 
こうした今後のトレンドに対して、我々が今行っておくべきことは基本的に2つある。
| ・ サーバサイド開発の各種の設計セオリーをよく理解しておく。 | |
| ・ 特に、C/S型とスマートクライアント型システムとの間に存在する大きなギャップは、「サーバサイドでのトランザクション処理が求められる」という点である。これ以外にも留意すべき点は非常に多く、C/S型だと「なんとなく」動いてしまうものも、スマートクライアント型では全く許されないケースが多い。 | |
| ・ これを回避するためには、サーバサイド開発の各種の設計セオリー(トランザクション設計、コンポーネント分割方法、インタフェース設計、物理配置指針、スケーラビリティ、セキュリティなど)を今のうちに正しく理解しておく必要がある。 | |
| ・ .NET FrameworkやVisual Studio .NETが現在提供している機能をよく理解しておく。 | |
| ・ 例えば、次期版Visual Studio .NETと次期版.NET Framework(Whidbey)には開発者にとって嬉しい数々の新機能が追加されるが、それらはほとんどが現在の.NETFrameworkの延長線上にあるものである。 | |
| ・ 逆に言えば、現在のVisual Studio .NETや.NET Frameworkにきちんと取り組んでおくことは、未来に向けた確実な投資となる、ということである※21。 | |
| ※21 特に、Visual Studio .NETや.NET Frameworkなどは将来のロードマップ情報がWeb上で公開されている。これらをつぶさに見ていけば、新機能が現在の機能をリプレースするものではないことが理解できる。(http://www.microsoft.com/japan/msdn/vstudio/productinfo/roadmap.asp) | 
 本書のシリーズがむやみにトレンドを追わずに、敢えて論理3階層型のWebアプリケーションの設計・実装技術にフォーカスしているのはここに理由がある。すなわち、正しく論理3階層型のWebアプリケーションを設計・実装できるようになっていれば、スマートクライアント型システムが主流になったとしても、少なくともサーバサイドのXML Webサービス開発は正しく行うことができるようになるからである※23。また、現在の.NET FrameworkやVisual Studio .NETを正しく理解しておけばWinFXへの移行も恐るるに足りないだろう。是非、本シリーズをうまく活用して、未来に向けた効率的な学習を進めて頂きたいと思う。
| ※23 また、このようなサーバサイド設計のセオリーはテクノロジにほとんど依存しないのも特徴である(WindowsDNA、J2EE、.NET Frameworkのいずれを利用しても守るべき設計上のポイントは同じである)。よって、.NETFrameworkを利用して学習した設計セオリーは他の開発技術を使う際でも必ず役に立つ。 | 
| .NETエンタープライズWebアプリケーション開発技術大全 Vol.1 .NET Framework 導入編 | |
|  | 定価 2,625円(税込み) 赤間 信幸(マイクロソフト株式会社コンサルティング本部) 著 B5変型判/約160p ISBN 4-89100-427-4 日経BPソフトプレス発行  日経BPソフトプレスの書籍紹介ページへ  マイクロソフトプレスの書籍紹介ページへ | 
|  | 
| INDEX | ||
| .NETエンタープライズWebアプリケーション開発技術大全 | ||
| スマートクライアント型システムにおけるVisual Studio .NETのメリット | ||
| 1.本システム形態の特徴/構成例/問題点 | ||
| 2.Visual Studio .NETによる簡単なXML Webサービス開発 | ||
| 3.サーバ/クライアントへのパッケージ製品の応用 | ||
|  | 4.InfoPathを活用したスマートクライアント型システム | |
|  | ||
|  | 「.NETエンタープライズWebアプリケーション開発技術大全」 | 
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|  | |
| 
 | |
|  | 

 
 .NETエンタープライズWebアプリケーション
.NETエンタープライズWebアプリケーション






