.NET開発者中心 厳選ブログ記事

「Windows Azure Toolkit for Windows Phone 7」を試してみた
―― ブログ「ブチザッキ」より ――

buchizo(亀渕 景司)
2011/06/08
Page1 Page2

「.NET開発者中心 厳選ブログ記事」シリーズでは、世界中にある膨大なブログ・コンテンツの中から、特にInsider.NET/.NET開発者中心の読者に有用だと考えられるブログ記事を編集部が発掘・厳選し、そのブログ記事を執筆したブロガーの許可の下、その全文を転載・翻訳しています。この活動により、.NET開発者のブログ文化の価値と質を高め、より一層の盛り上げに貢献することを目指しています。

本稿は、ブログ記事「ブチザッキ: Windows Phone 7 Cloud Application Project Template を使ってみよう」に簡単な校正・加筆を行ったうえで転載したものです。

 Windows Azure Toolkit for Windows Phone 7(以下、本稿では「WA Toolkit WP7」と略す)を実際に使ってみましたので、そのファースト・インプレッションをレポートします(本稿では、個別の技術要素の詳細な解説は行いません)。

実際にWA Toolkit WP7を試すには、これ以外に、Windows Phone Developer Toolsをインストールし、January 2011 Updateを適用しておく必要があります。そのほか、WA Toolkit WP7が要求するコンポーネントは以下の通りですので、必要に応じてインストールしておきます。

  • Visual Studio 2010 Professional(またはそれ以上のエディション)もしくはVisual Web Developer 2010 ExpressとVisual Studioの両方
  • ASP.NET MVC 2
  • Windows Phone Developer Tools(January 2011 Update)
  • Windows Phone Developer Tools January 2011 Update(WindowsPhoneDeveloperResources_[language]_patch1.msp)
  • Windows Phone Developer Tools Fix(VS10-KB2486994-x86.exe)
  • Silverlight for Windows Phone Toolkit - Feb 2011
  • Internet Information Services 7(IIS7)
  • Windows Azure SDK 1.4(March 2011)
  • Windows Azure Tools for Visual Studio 2010(March 2011)
  • Windows Identity Foundation Runtime
  • Windows Identity Foundation SDK 4.0

 現在リリースされているWA Toolkit WP7(v1.2.2)は、最新のWindows Phone Developer Tools 7.1ベータ版にも対応していますが、まだベータ版ですので環境構築の際にはご注意ください。

Windows Azure Toolkit for Windows Phone 7って何なの?

 WA Toolkit WP7は、簡単にいうと、クラウド・プラットフォームであるWindows Azure上で動作するWebアプリ(=クラウド・サービス)とWindows Phone 7アプリの連携を容易にするためのツールキットです(※「アプリ」は「アプリケーション」の略)。

 Windows Azure AppFabricのACS(アクセス・コントロール・サービス)(以下、Azure AppFabric ACS)や、ASP.NETを使用した認証の連携、Windows Phone 7のPush通知、Windows Azureストレージ(以下、Azure Storage)へのアクセスなどを、容易に扱えるテンプレートが提供されています。テンプレートと言っても、サンプルとしてそのまま何もコーディングせずに動作するぐらいには作り込まれています。

 チュートリアルは英語ですが、「ASP.NETを使用した認証」と「Azure AppFabric ACSを使用した認証」の2パターンでビデオが用意されているので、詳しくはそちらを見るのがよいかと思います。

 また、日本マイクロソフトの井上 大輔さんが解説されている、下記のような記事もあるので、参考まで。

やってみよう!

事前準備

 事前準備として以下のものを用意しておきましょう。

  • Azure AppFabric ACS v2のネームスペース
  • Azure Storageのアカウント

 AppFabric ACSはフェデレーション認証*1する場合は必須、Azure Storageはエミュレータ(=ローカル実行のみ)の場合は不要ですが、今回はちゃんとAzure Storageを使用するようにします。

*1編集部注:「フェデレーション」を含めた、クラウド・コンピューティングのアイデンティティ管理の基礎知識については、「Windows Server Insider:Windowsで構築する、クラウド・サービスと社内システムのSSO環境」を一読することをお勧めします。

 Azure AppFabric ACS v2の設定は、テンプレートが自動的に行うので、特に設定不要です。また、認証だけを行うので、LiveIDやGoogle、Yahoo!なども特に設定する必要はありません(ただし、独自のIdP(Identify Provider)を追加する場合は、ちゃんと設定しましょう)。

 また、このプロジェクトではHTTPS/443ポートとHTTP/10080ポートを利用します。

 Windows AzureのCompute Emulatorで正しく指定ポートが利用できるように、あらかじめローカルのIISがこのポートを利用していないかを確認しましょう(もし既にバインドされていたら、いったんバインドを解除するか、ポートを変更します)。

WA Toolkit WP7による新規プロジェクトの作成

 では、実際に使ってみようと思います。

 [新しいプロジェクト]ダイアログでは、今回は次の画面のように、空の「Windows Phone 7 Empty Cloud Application」テンプレートではなくて、Push通知など一通りの機能が実装されている「Windows Phone 7 Cloud Application」テンプレートを使います(この例では、プロジェクト名を「WP7CoundApp1」としています)。

WA Toolkit WP7をインストールすると「[Cloud]プロジェクト・テンプレートに、「Windows Phone 7 Cloud Application」テンプレートと「Windows Phone 7 Empty Cloud Application」テンプレートが追加されます。

 プロジェクトを作成しようとすると、次の画面のようなダイアログでAzure Storageアカウントを聞いてくるので、Windows Azure管理ポータルからアカウント名とアカウント・キーを取得し、それをこのダイアログに入力します。さらに、[Push Notification Services]欄で、通知対象にチェックを付けましょう(本稿の例では[Microsoft Push Notification Service support]チェックボックスにチェックを入れる)。[Apple Push Notification Service support]チェックボックス(通知対象がiOS?)の場合は、この時点で証明書の指定が必要なようなので注意してください。

 [Next]ボタンをクリックすると、同じダイアログで新たな設定ページが表示されます。ここで、認証をどうするかを設定します。

 今回はAppFabric ACS v2を使用するので、[Use the Windows Azure Access Control Service]ラジオボタンを選択し、AppFabric ACSの管理ポータルから入手した[Management Key]と[ACS Namespace]を入力します。

 AppFabric ACSの管理ポータル上の入手先は、次の画面を参考にしてください。

 以上で初期設定は完了です。

 プロジェクトがロードされるまで待ちます。

 このとき、日本語環境だと次の画面のようなエラーが出ますが、その内容は気にしなくても恐らく大丈夫だと思います。

 プロジェクトがロードされると、以下の画面の[ソリューション エクスプローラー]にある3つのプロジェクト(具体的には「WP7CoundApp1」と「WP7CoundApp1.Phone」と「WP7CoundApp1.Web」)が作成されてプロジェクトのスタート・ページが表示されます。

 Windows Azureプロジェクト「WP7CoundApp1」と、Push通知や管理を行うASP.NET MVC 2のWebアプリケーション「WP7CoundApp1.Web」、それからWindows Phone 7アプリケーション「WP7CoundApp1.Phone」のプロジェクトが出来上がります。

 それぞれ、何も手を入れなくても、最低限の動作をするようになっています。

デバッグ実行

 さて、プロジェクトが出来上がりましたので、さっそくデバッグ実行してみたいと思います。

 実行前にWindows AzureのCompute EmulatorとStorage Emulatorを起動しておきましょう。

 WA Toolkit WP7のインストール時に「WIF(Windows Identity Foundation)のランタイムがない」などの警告が表示されて、後からWIFのランタイムをインストールした場合、Webアプリがエラーになります。その場合は、こちらのページに記載されている「アセンブリ ‘System.ServiceModel, Version 3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’ から型 ‘System.ServiceModel.Activation.HttpModule’ を読み込むことができない」の項を参考に。「aspnet_regiis.exe -i -enable」コマンドを実行しておきましょう。

 実際のデバッグ実行は、普通に[F5]キーによるデバッグ実行でも問題ありませんが、処理がかなり重い場合があるので、その場合には個別に起動するとよいかもしれません。

 起動は、「WP7CloudApp1」プロジェクトを実行して、その後、「WP7CloudApp1.Phone」プロジェクトを実行します(「WP7CloudApp1.Web」は、Azureプロジェクトにより実行されるので、個別に実行する必要はありません)。次の画面は、実際にこの手順で実行してみた例です。

 こんな感じでCompute Emulator上でWebアプリが稼働して、Windows Phone 7 Emulatorが起動します。

 Windows Phone 7上でのログイン認証も、先ほどAppFabric ACS v2を使用したフェデレーション認証を選択したので、次の画面を見ると分かるように、(独自に認証処理を実装していないにもかかわらず)既存のID認証(Windows Live IDや、Yahoo!、Google)に委譲できています。

 ちなみに、開発PCのスペックのせいかもしれませんが、Webブラウザ・コントロールがすごく挙動が怪しい場合があります……。具体的には、ログイン認証の画面で、ページをスクロールしても自動的に位置が元に戻るので、サインインのボタンのタップが困難な場合があります……。あと、なぜかWindows Live IDでの認証はうまくいきませんでした(そのため、今回の例ではGoogleで認証しています)。

 あとは、Push通知をしてみたり、Windows AzureのWebアプリを操作したり、Windows Azureストレージへアクセスしたりして、Windows Phone 7アプリを楽しみましょう。

 次の画面の上部には、Push通知として「Test Message 2」と表示されています。

 Windows Phone 7アプリでは、次の画面のように、Push通知を有効/無効に設定したり、過去に表示されたPush通知を表示したりできます。

 クラウド側のWebアプリでは、次の画面のように、Push通知をさまざまな形式(トースト/タイル/生のメッセージ)で送信できます。簡単ですね!

 ほかにどんなことが出来るかは、プロジェクトのスタート・ページや、WA Toolkit WP7のドキュメント(英語)を参考にしてください。

 Push通知は、Microsoft Push Notification Serviceを使用することで簡単に扱えるようになっています。またコードそのものもWA Toolkit WP7に含まれているWindowsPhone.Recipes.Push.Messasges.dllにラップされている通知用のクラスを操作するだけで済むようです。 WA Toolkit WP7のソース・コードを見てみると、いろいろと面白い発見があります。

 Push通知に関する、より詳しい技術情報(英語)は「Using Push Notifications(Windows Phone 7 Training Course)」や、「Understanding Microsoft Push Notifications for Windows Phones(The Windows Phone Developer Blog)Part2)」あたりを参照するとよいでしょう。

 以上の手順でローカル環境での実行には成功しました。次のページからは、実際にWindows Azure上にプロジェクトを展開し、Windows Phone 7の実機を使って、実運用面を試してみましょう。

 

 INDEX
  .NET開発者中心 厳選ブログ記事
  「Windows Azure Toolkit for Windows Phone 7」を試してみた
  1.Windows Azure Toolkit for Windows Phone 7って何なの?/やってみよう!/デバッグ実行
    2.Windows Azureへの展開/まとめ

インデックス・ページヘ  「.NET開発者中心 厳選ブログ記事」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH