ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Archive for the ‘Microsoft TechEd 2010 Yokohama’ Category

Microsoft TechEd 2010 ライトニングトーク「InfoPathとともに使うSQLServerの様々な機能」フォロー – 03

leave a comment »

データに対してまとまった処理を行うためにSQL Serverにストアドプロシージャを作ります。ではInfoPathからストアドプロシージャを実行する方法があるでしょうか。InfoPathのデータ接続はSQL文を自由に書けるので、ストアドプロシージャの実行も可能なように思えます。データ接続を編集すればいいはずです。まずSQL Serverにストアドプロシージャを作りましょう。
 
(slide.15 SQL Serverに作ったストアドプロシージャの例)
 
———————————————————
create procedure テストプロシージャ
as
update テスト set 氏名 = ‘松本 吉生’ where 学年 = 2
———————————————————
 
上のcreate文で生成するストアドプロシージャは、「テスト」テーブルのデータのうち、学年が2年のデータの氏名を全部「松本 吉生」に変更するストアドプロシージャです。InfoPathからこのストアドプロシージャを実行できるようにデータ接続を作りましょう。データ接続ウィザードによってInfoPathで新しいデータ接続を作り、データ接続ウィザードの最終場面で、SQLの編集によってストアドプロシージャを実行するSQL文に書き換えるのです。
 


(slide.16 データ接続ウィザード1)


(slide.17 データ接続ウィザード2)


(slide.18 データ接続ウィザード3)


(slide.19 データ接続ウィザード4)


(slide.20 データ接続ウィザード5)

上のスライド20のステップでは、とりあえず適当なデータ接続またはテーブルを選んでおきます。


(slide.21 データ接続ウィザード6)

とりあえず仮のデータ接続ができました。では「SQLの編集」ボタンをクリックしてSQL文を書き換えましょう。


(slide.22 データ接続ウィザードの最後でSQLの編集を行う)

「SQLの編集」ボタンをクリックすると、ウィザードで自動的に生成したSQL文が表示されます。これをストアドプロシージャを実行するSQL文に書き換えます。書き換えた後、SQL文に誤りはないか、実行できるか、をチェックするために「SQLステートメントのテスト」ボタンで調べます。


(slide.23 データ接続を書き換えるSQL文)

ここで書き換えるSQL文は上のスライド23のようなものです。ストアドプロシージャを実行するにはexecute文だけでよいのですが、InfoPathのデータ接続はselect文以外のものを書くと、InfoPathがエラーと判断してしまいます。そこでまずset nocount onコマンドを書き、ダミーのselect文を書き、そのうえでexecute文を書くようにするのです。


(slide.24 InfoPathフォームにボタンを作りストアドプロシージャを実行するデータ接続を実行する1)

ストアドプロシージャを実行するexecute文を書いたデータ接続ができたら、フォームにボタンを作ります。ボタンのプロパティで「動作規則」をクリックします。


(slide.25 InfoPathフォームにボタンを作りストアドプロシージャを実行するデータ接続を実行する2)

ボタンのプロパティで「動作」としてexecute文を書いたデータ接続を使用してクエリを送信する、とします。クエリを送信するとデータ接続に書いたexecute文がSQL Serverに渡され、ストアドプロシージャが実行するようになります。

Written by Yoshio Matsumoto

2010年9月16日 at 8:40 PM

Microsoft TechEd 2010 ライトニングトーク「InfoPathとともに使うSQLServerの様々な機能」フォロー – 02

leave a comment »

InfoPathのフォーム作成でデータ接続先をSQL Serverにしたとき、データ接続ウィザードによってデータ接続を作ることができます。 
 
(slide.04 InfoPathのデータ接続ウィザード1)
 
(slide.05 InfoPathのデータ接続ウィザード2)
 
(slide.06 InfoPathのデータ接続ウィザード3)
 
(slide.07 InfoPathのデータ接続ウィザード4)
 
(slide.08 InfoPathのデータ接続ウィザード5)
 
(slide.09 InfoPathのデータ接続ウィザード6)
 
InfoPathのデータ接続ウィザードを行うと、上のスライド04から09のようにデータ接続を作成することができます。ここで「SQLの編集」ボタンをクリックすると、ウィザードによって生成した接続用のSQL文を編集することができます。「SQLの編集」によって次のスライドのようなSQL文を書きます。
 
(slide.10 InfoPathのデータ接続ウィザードで「SQLの編集」を行う)
 
「SQLの編集」では自由にSQL文を書くことができます。しかしInfoPathは、SELECT文以外を書くとエラーになってしまうので、「set nocount on」を実行し、ダミーのセレクト文を書いてから必要なSQL文を書くことにします。書いたSQL文がエラーにならないことを「SQLステートメントのテスト」ボタンをクリックして確かめるとよいでしょう。
 
(slide.11 InfoPathのデータ接続ウィザードで「SQLの編集」を行い記述したSQL文)
 
実行したいSQL文の本体はUPDATE文です。ここで使う「テスト」テーブルには、生徒の氏名や年齢などのデータが入っています。この「テスト」テーブルのデータに対して、学年が「1」年の生徒データの氏名を全部「松本吉生」に変更する、というUPDATE文になります。データ接続には以下のように記述します。
 
————————————————————
set nocount on
select ‘dummy’
update テスト set 氏名 = ‘松本吉生’ where 学年 = 1
————————————————————
 
このようにして実行したいSQL文をInfoPathの「データ接続」として作成します。ではこれをInfoPathフォームから実行するにはどうすれば良いでしょう。それはInfoPathのフォームで「ボタン」を作り、ボタンの動作に「データ接続を利用してクエリを送信する」とすればよいのです。
 
(slide.12 InfoPathのフォームでボタンを作り「クエリの送信」を動作に設定する1)
 
(slide.13 InfoPathのフォームでボタンを作り「クエリの送信」を動作に設定する2)
 
(slide.14 InfoPathのフォームでボタンを作り「クエリの送信」を動作に設定する3)
 
このようにしてボタンを作れば、ボタンをクリックすることでクエリが送信され、UPDATE文を実行することができます。

Written by Yoshio Matsumoto

2010年9月11日 at 5:48 PM

Microsoft TechEd 2010 ライトニングトーク「InfoPathとともに使うSQLServerの様々な機能」フォロー – 01

leave a comment »

Microsoft TechEd 2010 ライトニングトーク「InfoPathとともに使うSQLServerの様々な機能」について、スライドを使いながらふりかえってみる。
 

(Slide.01 InfoPathはXMLオーサリングソフトなのか)
 
MicrosoftのOffice製品情報のページには「Microsoft InfoPath 2010 は、ビジネス プロセスの合理化に役立つ、フォーム作成およびデータ収集のためのツールです。」といった説明があります。この説明は少しわかりにくいですが、Wikipediaによると「マイクロソフトが開発・販売しているXMLオーサリングソフトである。」とあり、その他の技術ページでもおおむね「XMLオーサリングソフト」といった記述が見られます。これはInfoPathの基本的な一面をあらわしていますが、それだけではありません。InfoPathはデータ接続を利用してSQL Serverなどのデータベースに接続することができ、データベースサーバーに対するクライアントアプリケーションとして利用できるのです。InfoPathはドロップダウンリストボックスやラジオボタンなどのリッチなコントロールを使い、動作規則や条件付き書式、データの入力規則など豊富な機能を使ってノンコードでデータ入力フォームを作ることができます。つまり、SQL ServerとInfoPathを組み合わせると、クライアントサーバー型のデータベース業務アプリケーションを構築することができるのです。
 
(slide.02 InfoPathとSQL Serverによるクライアントサーバー型データベースシステム概要)
 
InfoPathとSQL Serverで構築したクライアントサーバー型データベースアプリケーションはこのような構成になります。データベースはSQL Server、クライアントコンピュータにはInfopath、そしてユーザー管理のためにActive Directoryを使います。データベースの個々のデータを参照したり、登録、修正の業務は、InfoPathを使って行いますが、システム管理にはどうしても「一括操作」といった場面があります。テーブルの全部のデータをある値で更新したい、ある条件のデータに対して特定の更新業務を行いたい、ある基礎データから別のデータを一括で作成したい、といった場面です。このような一括処理はInfoPathだけではできません。そこでSQL Serverが持っている機能を使うことになりますが、SQL Serverの中で動く仕掛けを作ったときに、InfoPathからどのようにコントロールのかを知る必要があります。
 
(slide.03 SQL Serverでデータを一括して処理する方法)
 
データを一括して処理する方法には色々ありますが、InfoPathからコントロールできる手法としては、次のようなものが考えられます。まず「データ接続にクエリを書く」方法があります。InfoPathのデータ接続には、直接SQL文を書くことができるのです。次に「ストアドプロシージャ」を使う方法があります。SQL Serverにストアドプロシージャを作り、その実行をInfoPathからコントロールします。また「トリガ」を使う方法もあります。そして「ジョブ」を使う方法があります。

Written by Yoshio Matsumoto

2010年9月11日 at 5:47 PM

Microsoft TechEd 2010 レポート – Day 3 – 4 – Special Session「今だから話したいWindows Phone 7」

leave a comment »

このセッションは、TechEd 2010の公式セッションが全て終わった、18:30~19:00に行われた「~話したりないスピーカーが贈る30分のスペシャルメッセージ~」と題されたスペシャルセッションの枠組みで行われた。このスペシャルセッションは、Room Cで「Windows Azure & クラウドAll wrap up」が砂金信一郎、大森彩子、関田文雄、西脇資哲、平野和順のスピーカーにより、Room Dで「Silverlightこれだけは聞いてくれ!」が大西彰、春日井良隆、鈴木章太郎のスピーカーにより、Room Eで「WebMatrix "超"概要~Web開発最新テクノロジ~」が井上章、奥主洋、新村剛史、武田正樹、物江修のスピーカーにより、そしてRoom Bで表記のセッションが高橋忍氏により行われた。

高橋忍氏はたいへんなガジェット好きで、折に触れWindows Phoneについての情報を発信してきた。今回のTechEd 2010の基調講演でもWindows Phone 7のデモを行った。今回のスペシャルセッションを聞き、高橋氏がマイクロソフトのエバンジェリストの立場以上に、ひとりのユーザーとしてWindows Phone 7に期待していることが伝わってくる。だがこのセッションの詳細なレポートは控えることにしよう。ただひとつだけ言えることは、近い将来、間違いなく素晴らしい製品となって私たちの目の前に現れるだろう、ということだ。

Microsoft ZUNEの発表により大きくモバイル戦略の舵を切ったように見えるMicrosoftのWindows Phone 7には大いに期待したい。

Microsoft TechEd 2010 Japan 公式サイト
http://www.microsoft.com/japan/teched/2010/

Written by Yoshio Matsumoto

2010年8月28日 at 9:28 PM

Microsoft TechEd 2010 レポート – Day 3 – 3 – T4-303「OpenData Protocol(OData)とWCF Data Servicesによるサービスの作成」

leave a comment »

ODataとは、データ共有用のRESTfulプロトコルであり、様々な環境でデータを共有するための規約。AtomPubの拡張セットである。構造化データであり、CRUD操作ができ、URIによる複雑なクエリが実行できる。キーノートでも紹介のあった、netflixのカタログページもODataのサービスを公開している。

NetflixのODataサービス
http://odata.netflix.com/Catalog/

Microsoftの製品でも数多くがODataに対応している。OData対応サーバーには、SharePoint 2010、Windows Azure Strage、SQL Azure、WCF Data Services、WCF RIA Services、SQL Server Reporting Services 2008 R2がある。またOData対応クライアントとしては、Excel + PowerPivot、OData Explorer、OData PowerShell Explorer、iPhone OData Browserなどがある。

多様な環境、全ての層を横断したデータ接続には、ADO.NETからWCF + OData Serviceによる開発に移行する。WCF Data Servicesは、サーバーデータのCRUD処理に特化したものだ。ここでVisual Studio 2010でASP.NET Webアプリケーションを開発するデモが示された。サービスを作成し、クライアント側からExcelのPowerPivotを利用する。またSharePointからODataに接続し、データを送信するデモ、Silverlightで利用するデモが行われた。

WCF Data Servicesのセキュリティについては、認証、承認、許可のレイヤーがある。クライアントはサーバーに対してODataで接続すると、IISが認証し、ASP.NETでフォーム認証などを行い、WCF Data Servicesで許可をとる。

Microsoft TechEd 2010 Japan 公式サイト
http://www.microsoft.com/japan/teched/2010/

Written by Yoshio Matsumoto

2010年8月28日 at 9:06 PM

Microsoft TechEd 2010 レポート – Day 3 – 2 – T7-403「最新OS WES7 WEC7 .NET Micro Frameworkによるクラウド時代のデバイスUX開発」

leave a comment »

マイクロソフトといえばPC、ASP.NET、クラウドと言われるが、Windows MobileやZUNEなどモバイルデバイスもある。

Windows Platform上のデバイス開発では、パフォーマンス重視のアプリケーションを作るとき、ネイティブコードでプログラムする手法から、.NET Framework上でInteropによってManaged Codeでプログラムを書けるようになった。これによってC#によるプログラミング開発生産性は飛躍的に高くなった。これにはWES、MEC、そして.NET Micro Frameworkがある。

WESは「Windows Embedded Standard」で、現在市場に出ているPOS端末、医療機器や製造機器などで利用されている。POS端末におけるWindows Platformの利用率は80%ほど、その他では60%程度である。MESは「Microsoft Embedded Compact」で、小型端末向けのリアルタイムOSだ。マルチCPUアーキテクチャであり、Windows MobileやZUNEに使われている。.NET Micro FrameworkはRAM64kByteでも動く極小のシステムだ。

ここでWES 7のデモが行われた。WES 7は中・大規模組込み機器向けのOSで、PCデスクトップとWebの共通開発環境がある。デモではDELLのPCにWES 7をインストールしたマシンを立ち上げるところ、IEでWebブラウジングをするところ、Silverlightが実行できることが示された。またセットトップボックスのデモもあった。

次にWEC 7のデモがあった。WEC 7は小型組込み用OSで、開発にはSilverlight for Windows EmbeddedでSilverlight 3相当のXAMLが扱える。Expression BlendでXAML開発を行い、Visual Studio 2008にインポートしてSilverlightアプリケーションを開発できるRAPID開発が可能だ。GUIのデザインはSWEプロジェクトテンプレートによって行う。できたプログラムはWindows 7の仮想マシン上でWEC 7を起動して実行するデモと、組込みデバイスで実行するデモの両方が行われた。

.NET Micro Frameworkのデモでは、Visual Studio 2010のMicro Frameworkのテンプレートから作る手順が示された。C#ネイティブ開発環境が整っている。作成されたプログラムは、エミュレータによる実行デモと、いくつかの実験デバイスでの実行が行われた。ここではXAMLは使えないので、UX設計はごりごりと作るしかない。

ネットワーク間連携は、WebサービスについてはデバイスにDPWS、Device Profile for Web Serviceを利用し、Webサイト側はWCFを使う。デバイス間のアドホック連携は、数多くのデバイスがあるとき、それぞれ接続が簡単にできることが必要だ。デバイスのネットワーク接続形態としては、様々な場所でのネットワーク接続を、操作レスの容易な接続が理想だ。このためのアドホック接続テクノロジとして、DPWS、Device Profile for Web Serviceがある。これを使うと、各デバイスはネットワークに接続したとき「Hello!」のブロードキャストをし、互いに接続を完了する。

Microsoft TechEd 2010 Japan 公式サイト
http://www.microsoft.com/japan/teched/2010/

Written by Yoshio Matsumoto

2010年8月28日 at 8:58 PM

Microsoft TechEd 2010 レポート – Day 3 – 1 – T1-402「既存業務システムのWindows Azureへの移行」

leave a comment »

クラウドコンピュータの波がやってきて、既存のITシステムは大きな見直しを迫られている。社内で独自に構築された「オンプレミス」システムなのか、ネットワークに展開されたクラウドシステムなのか、どちらかを選択しなければならない時代になった。とりわけコスト削減の要求が厳しくなり、クラウドの利用を積極的に考えなければならない。

クラウドコンピューティングが現れはじめたとき、その期待から全てのシステムをクラウドに置くということが言われた。しかし現実にはそうでなく、自社内の「オンプレミス」なシステムとクラウドの両方を組み合わせることが現実解となっている。ではオンプレミスとクラウドの使い分けをどう考えればよいのだろうか。ここで業務システムを3つのタイプに分類して考える。

まず、金融などミッションクリティカルな業務システムである。これはクラウドには不向きである。それは、クラウドでは性能保証が難しく、可用性用件が非常に難しい、自社でのデータ保有や管理の要件があることが多い、などの理由からだ。具体的には可用性の面では、クラウドでは99.9%しかない。次にクラウドならではの新しいタイプのシステムとして大規模分散計算処理の分野がある。モンテカルロ法などシミュレーション、大規模ログ解析、統計分析、学術計算領域など、伸縮自在性を生かせる領域で強みを発揮する。しかし現実はこれら両極端な業務形態に分けられるものばかりではない。

三番目のものとして、従来からある業務システムがある。たとえば簡単な.NETアプリケーションはほぼそのままAzureに移行できるだろう。しかし本当にそんなに簡単に移行できるのだろうか、という声はよく聞かれる。たとえばデータセンターは現状では海外にしかない、可用性が一律99.9%の設定である、ストレージの容量制限がある、などだ。だがこれらの問題は、実際に使ってみないとわからない。クラウドコンピューティングのメリットは魅力だが移行してよいのか、移行できるのかという悩みがある。しかし今日の技術進歩を念頭におくと、クラウド技術の発展は急激におこっている。今できることが半年たっただけで急激に広がることは間違いないだろう。

クラウドの技術革新については、VM RoleとWindows Azure Platform Applianceという2つのキーテクノロジーが出てくると状況はかなり変わるだろう。VM RoleはIaas型に近いクラウドサービスの提供で、自由に環境を変えることができる、仮想マシン環境を提供するものである。Windows Azure Platform Applianceは、AzureをMicrosoftだけでなく、「プロバイダのAzure」や「自社内のAzure」といった形態も提供できるものだ。これによって地理的に近い場所での利用、物理的なAzureの制御、データの保有などが可能になる。

これらの見通しの中で、では、今、何をやるべきだろうか。それは「まず使ってみる」ことである。クラウドは進展が早く、現時点では適用できない領域が、半年、一年、数年後には大きく変化し、適用できる領域が大きく広がる可能性がある。また可用性が99.9%という数値があるが、では月あたり43分もシステムが止まるのか、と思うととても使えないと思うかもしれないが、実際はシステムが停止するわけではない。むしろパッチを当てることも止めることなくできる。つまり机上の検証では実感できないことが多く、その意味でも実際に使ってみる必要が大いにある。いざ導入が目前になり、検証を行うのでは遅すぎることになる。

クラウド化で何が変わるのか。たとえばツールの使い方などは技術資料を見ながら学べばよい。しかしクラウドの概念、設計やアーキテクチャの考え方のパラダイムシフトが必要になる。パラダイムシフトのポイントは3つにまとめられる。まずデータストレージ選択の考え方、次にオンプレミスとクラウド連携の考え方、三つ目に運用監視の考え方である。

まずデータストレージだが、クラウドになって最も厄介なものはデータベースの移行だ。RDBMSの基本思想は「一事実一ヶ所」である。オンプレミスのデータベースはスケールアップが基本だが、クラウドではスケールアウトを考え、この思想は全く反対だ。クラウド環境では「機能」「容量」「価格」の3つを同時に満たすことは不可能だ。たとえばオンプレミスのデータベースでは、サーバーの性能を良くすることで「機能」と「容量」の両方を高めることができるが、この場合は「価格」を下げることはできない。クラウドではSQL AzureデータベースサービスとWindows Azureストレージサービスがあり、前者は「機能」は高いが「容量」は50GBまでの制限がある。後者は「機能」は低いが容量は大きく使える。そこでデータをAzureにおくときは、業務データはSQL Azureデータベースサービスにおき、ログなど大量に蓄積する必要のあるものはWindows Azureストレージサービスに置くといった使い分けを考える。もし業務データの規模が大きく、SQL Azureデータベースの容量制限をクリアしたい場合は、データベースの水平分割が必要である。

オンプレミスとクラウドの連携をするときは、「データ連携」「処理連携」「認証連携」「運用連携」の4つの考え方が必要だ。「データ連携」ではマスタデータの同期が必要である。「処理連携」ではAppFabricサービスパスを活用したシステム間連携、「認証」ではADシングルサインオンを実現するフェデレーション認証がある。AppFabricサービスパスとフェデレーション認証は連携に関するキーテクノロジである。AppFabricサービスパスは、オンプレミス側とクラウドからの両側からAppFabricサービスパスへの接続を張るもので、オンプレミスとクラウドのデータ連携を行うために、オンプレミス側のファイヤーウォールの受信ポートを解放する必要がない技術だ。フェデレーション認証はAzure上のシステムに社内ADアカウントでシングルサイオンのログインができる技術だ。

運用監視考え方がクラウドでは大きく変わる。オンプレミスの運用では管理者はアプリケーションからミドルウエア、インフラまで全部を対象としている場合が多いと思われるが、クラウドではミドルウエアとインフラの管理はMicrosoftにまかせればよい。管理者はアプリケーションの運用に専念できる。

Microsoft TechEd 2010 Japan 公式サイト
http://www.microsoft.com/japan/teched/2010/

Written by Yoshio Matsumoto

2010年8月28日 at 8:10 PM