MSC2011 D3-303 “Windows Phone/iOS/Android から Windows Azure を利用する” session follow up - Part 3 : スクラッチでのソリューション開発 - 1

皆様、こんにちは!

今度は、セッションでご紹介した、スクラッチでのソリューション開発、をご紹介します。

その前に、Part 1でも触れましたが、開発環境の作り方、をご紹介しておきます。

まず、ソフトウェア要件としては、下記のWindows Azure Toolkit for Windows Phone のページににあるとおりです。直近で Windows Azure SDK 1.5 に合わせて更新がありましたね。

https://watwp.codeplex.com/

  • Microsoft Visual Studio 2010 Professional (or higher) or both Microsoft Visual Web Developer 2010 Express and Microsoft Visual Studio 2010 Express for Windows Phone
  • Microsoft ASP.NET MVC 3
  • Windows Phone SDK 7.1 Release Candidate
  • Silverlight for Windows Phone Toolkit
  • Internet Information Services 7 (IIS7)
  • Windows Azure Tools for Microsoft Visual Studio 2010 1.5 – September 2011
  • Windows Azure SDK 1.5
  • Windows Identity Foundation Runtime
  • Microsoft SQL Server 2008 R2 Express (or higher)
  • Entity Framework 4.1 Code First
  • Internet Explorer 9 (or any other modern Web browser supporting HTML5)

これらをすべてインストールする必要があります。

なお、このToolkit に含まれている Configuration Wizard が依存関係チェックを行いますので、足りないものは、その時に出てきたリンク等から、その都度インストールしてください。

またこのToolkit はVSIX ファイルをインストールし、その中にプロジェクトテンプレートも含まれています。Toolkig をインストールするには、ダウンロードしたWindows Azure Toolkit for Windows Phone のルートフォルダにある、Setup.cmd をダブルクリックします。

それでは次に、スクラッチのデモで行った内容をご紹介しておきます。

新規 Windows Phone Cloud Application の作成

まず、Visual Studio 2010 を管理者権限で開きます(これは Windows Azure プロジェクトを実行するのに必要です)。

ファイル メニュー から新規作成をポイントして、プロジェクトをクリックします。

新しいプロジェクトダイアログの左側にあるインストールされたテンプレートリストから、Visual C# ノードの下にあるクラウドを選択し、 Windows Phone Cloud Application テンプレートを選択して、ソリューションの名前場所 とを入力して、OK を押します。

image

New Windows Phone Cloud Application Project ダイアログの中で、どのストレージを利用するかを選択します。少なくとも、Windows Azure Storage または SQL Azure Database のいずれかはチェックする必要があります。

注意(1): Windows Azure Storage は、このプロジェクトテンプレートのデフォルトの選択肢で、このテーブルストレージに、Membership プロバイダーの情報や他のインフラストラクチャーのデータを格納します。もし、SQL Azure Database 当該情報を格納する唯一のストレージとして選択した場合には、これらの情報はテーブルストレージの代わりに、SQL Azure データベースに格納されます。

clip_image003

注意(2) :一番下にグレイアウトした状態で書いてあるオプションは、OData Serviceへの接続で、現在はまだサポートされていません。 これは将来の本ツールキットのリリースでサポートされる予定です。

※個人的にはこれは結構重要と思います。たとえば今回の各プラットフォーム用のツールキットのように各スマートフォンのネイティブライブラリ(WP=.NET、iOS=Objective-C、Android=Java)を使用したアプリケーションからの接続だけでなく、HTML5のネイティブアプリケーションの接続先となるOData Service を構築し、これを経由して、Windows Azure や SQL Azure とやり取りをするというモバイルWebアプリケーションが可能になるからです。

ただ、この場合、HTML5だけのアプリケーションのみでは、各Market PlaceやStoreへの登録や審査が難しくなります。

そこで、各Market PlaceやStoreへの登録や審査を可能とするために、アプリケーションのコアだけはそれぞれのプラットフォームのネイティブライブラリを使ったアプリケーションにする必要がありますが、このような目的に使えるパッケージは米国では多数リリースされています(例 : PhoneGap 等)。

Next ボタンを押して、Wizard の次のステップに進みます。 もし最初のステップで Windows Azure Storage を選択してあると、Windows Azure Storage アカウントの名前とアカウントキーを入力する必要があります。代わりに ローカルのAzure 開発ファブリックのストレージエミュレーターを使う場合には、Use Storage Emulator をクリックして次に進みます。

clip_image002

Next ボタンを押して、Wizard の次のステップに進みます。 もし、最初のステップで SQL Azure Database を選択してあると、SQL Azure Database データベース情報(サーバー名、ユーザーID、パスワード)を入力する必要があります。

clip_image004

代わりに ローカルのSQL Server インスタンスを使いたい場合には、Use local SQL Server instance をクリックして、どのインスタンスかリストから選択して、次に進みます。

clip_image006

Next ボタンを押して、Wizard の次のステップに進みます。 Push Notification Services の利用のオプションに関するダイアログです。Windows Phone 及び / または iOS デバイス用のPush Notifications Service をサポートするかどうかを選択します(デフォルトでは、 Microsoft Push Notification Service のサポートのみがチェックされています)。

clip_image008

もし、ここで Apple Push Notification Service (APNS) サポートをチェックすると、ダイアログが立ち上がり、その中にローカルマシンにインストールされている証明書のリストが表示されています。もしこの中に APNS で利用するのに適切な証明書があれば、それを選択して OK をクリックします。

clip_image009

注意 : 特定のiOS アプリケーションのために、Apple Push Notification 用の証明書を作成してインストールするには、 まず最初に、下記のプログラムに加入する必要があります。

・iOS Developer Program

https://developer.apple.com/devcenter/ios

そして、SSL 証明書を、下記のポータルから取得する必要があります。

iPhone Provisioning Portal

https://developer.apple.com/devcenter/ios/my/overview/index.action )

より詳細な情報は、下記のサイト及び記事をご覧ください。

・iOS Developer Library

サイト:https://developer.apple.com/library/ios/navigation

記事:Provisioning and Development

 

注意: そして次に、一番下のグレイアウトしたところにご注目ください。

clip_image011

Android Push Notification Service は現在のところサポートされていませんが、将来の本ツールキットのリリースでサポートされることになりますので、ご期待ください。

Next ボタンを押して、Wizard の次のステップに進みます。アプリケーションがサポートする認証メカニズムを選択します。 ASP.NET membership (デフォルト) か Windows Azure Access Control Service 利用 か、を選択できます。

clip_image013

注意: どちらが当該アプリケーションの認証シナリオに合致しているかを考えて選びましょう。C:\WindowsAzure\WATWindowsPhone\Docs にあるReadme.docx の Appendix I: How to Choose Between ASP.NET Membership and ACS? にも詳しく書いてあります。

もし、Windows Azure Access Control Service (ACS) を選択した場合、ACSの名前空間と、管理キーを、ACSのポータルから取得して、入力する必要があります。

clip_image015

ACS ポータルはPart 2-BabelCam-1でもご紹介したこちらですね。

image_thumb24

この中のサービス名前空間という文字列と、管理というリンクグループの中の管理サービスというリンクの中に、管理キーの中の対称キーというのがあり、その文字列をコピーします。それらを上記画面にそれぞれ入力します。

この点について詳しくは、C:\WindowsAzure\WATWindowsPhone\Docs にあるReadme.docx の  Appendix II: How to Obtain Namespace and Management Keys? をご覧ください。

注意: もし ACS による認証が選択された場合、本ツールキットのテンプレートは、下記のようなステップで、入力されたACS 名前空間に対して、設定を行い構成します。

- 以下のIdentity Providersの追加: Windows Live ID、 GoogleYahoo.

- この新規アプリケーションを Relying Party Application として追加

- (アプリケーションに必要な)デフォルトのクレーム変換ルールの定義

OK をクリックして、Visual Studio がソリューション内の全プロジェクトを生成するのを待ちます。

※この時、日本語環境だと、最後に文字コードのエラーダイアログが出ますが、ここでは特に問題がありませんので、気にせず進みましょう。

生成されたソリューションを見てみましょう。下記のようなプロジェクトがあるはずです:

a. WPCloudApp1: 既に Web Role が含まれ設定済みの Windows Azure プロジェクト

b. WPCloudApp1.Phone: Silverlight for Windows Phone プロジェクトで、サンプルアプリケーションが含まれています。このサンプルアプリケーションにより、どのようにして Push Notification を受信するのか、またどのように Windows Azure Table、Blob、Queues を利用するのか、がわかります。

c. WPCloudApp1.Web: ASP.NET MVC 3 プロジェクトで、Web Role として設定済みで、Toolkit サービス及び管理ページを含んでいます。

例:

clip_image016

さらに、このソリューション内には、テンプレートにより、Libs フォルダが生成され、その中には、以下のアセンブリが含まれています :

a. AspProviders.dll: ASP.NET Providers for Windows Azure Tables (Membership, Roles, Profile 及び Session State Store).

b. Microsoft.Samples.Data.Services.Client.dll: OData client library for Windows Phone (System.Data.Services.Client) を Windows Azure Table Service API (https://odata.codeplex.com)と連携して動くようにモディファイしたバージョン

c. MIcrosoft.Samples.DPE.OAuth.dll (ACS only):Microsoft DPE OAuth2 ライブラリ

d. SL.Phone.Federation.dll (ACS only): Microsoft Silverlight ACS サインインコントロール

e. WindowsPhone.Recipes.Push.Messages.dll (Microsoft Push only): Push Notification のサーバーサイドヘルパーライブラリ (https://create.msdn.com/education/catalog/article/pnhelp-wp7).

f. WindowsPhoneCloud.StorageClient.dll: Windows Azure Storage Client library for Windows Phone.

clip_image002[4]

注意 : 最初の Wizard で、どのオプションを選ぶかにより、Libs 配下のアセンブリは異なる場合があります。

以上です。

新規Windows Phone Cloud Application アプリケーションの設定が完了し、動かす準備は整いました。次回の投稿で、この後を解説していきたいと思います。

鈴木 章太郎