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 に合わせて更新がありましたね。
- 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 を押します。
New Windows Phone Cloud Application Project ダイアログの中で、どのストレージを利用するかを選択します。少なくとも、Windows Azure Storage または SQL Azure Database のいずれかはチェックする必要があります。
注意(1): Windows Azure Storage は、このプロジェクトテンプレートのデフォルトの選択肢で、このテーブルストレージに、Membership プロバイダーの情報や他のインフラストラクチャーのデータを格納します。もし、SQL Azure Database を 、 当該情報を格納する唯一のストレージとして選択した場合には、これらの情報はテーブルストレージの代わりに、SQL Azure データベースに格納されます。
注意(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 をクリックして次に進みます。
Next ボタンを押して、Wizard の次のステップに進みます。 もし、最初のステップで SQL Azure Database を選択してあると、SQL Azure Database データベース情報(サーバー名、ユーザーID、パスワード)を入力する必要があります。
代わりに ローカルのSQL Server インスタンスを使いたい場合には、Use local SQL Server instance をクリックして、どのインスタンスかリストから選択して、次に進みます。
Next ボタンを押して、Wizard の次のステップに進みます。 Push Notification Services の利用のオプションに関するダイアログです。Windows Phone 及び / または iOS デバイス用のPush Notifications Service をサポートするかどうかを選択します(デフォルトでは、 Microsoft Push Notification Service のサポートのみがチェックされています)。
もし、ここで Apple Push Notification Service (APNS) サポートをチェックすると、ダイアログが立ち上がり、その中にローカルマシンにインストールされている証明書のリストが表示されています。もしこの中に APNS で利用するのに適切な証明書があれば、それを選択して OK をクリックします。
注意 : 特定の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
注意: そして次に、一番下のグレイアウトしたところにご注目ください。
Android Push Notification Service は現在のところサポートされていませんが、将来の本ツールキットのリリースでサポートされることになりますので、ご期待ください。
Next ボタンを押して、Wizard の次のステップに進みます。アプリケーションがサポートする認証メカニズムを選択します。 ASP.NET membership (デフォルト) か Windows Azure Access Control Service 利用 か、を選択できます。
注意: どちらが当該アプリケーションの認証シナリオに合致しているかを考えて選びましょう。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のポータルから取得して、入力する必要があります。
ACS ポータルはPart 2-BabelCam-1でもご紹介したこちらですね。
この中のサービス名前空間という文字列と、管理というリンクグループの中の管理サービスというリンクの中に、管理キーの中の対称キーというのがあり、その文字列をコピーします。それらを上記画面にそれぞれ入力します。
この点について詳しくは、C:\WindowsAzure\WATWindowsPhone\Docs にあるReadme.docx の Appendix II: How to Obtain Namespace and Management Keys? をご覧ください。
注意: もし ACS による認証が選択された場合、本ツールキットのテンプレートは、下記のようなステップで、入力されたACS 名前空間に対して、設定を行い構成します。
- 以下のIdentity Providersの追加: Windows Live ID、 Google 、Yahoo.
- この新規アプリケーションを 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 サービス及び管理ページを含んでいます。
例:
さらに、このソリューション内には、テンプレートにより、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.
注意 : 最初の Wizard で、どのオプションを選ぶかにより、Libs 配下のアセンブリは異なる場合があります。
以上です。
新規Windows Phone Cloud Application アプリケーションの設定が完了し、動かす準備は整いました。次回の投稿で、この後を解説していきたいと思います。
鈴木 章太郎