Mobile + Cloud:Windows Azure を使用したモバイルアプリケーション
開発
鈴木 章太郎アーキテクトエバンジェリスト
日本マイクロソフト株式会社
http://blogs.msdn.com/b/shosuz/
http://twitter.com/shosuz/

鈴木 章太郎
Architect Evangelist at Microsoft
RIA / Cloud 担当エバ & MTCアーキテクト
上智大学法学部卒
早稲田大学大学院非常勤講師
呟きネタは主にWindows Azure,HTML5,Windows Phone, RIA, MVVM 等。
趣味はバンド活動 (PDC 2010 Public Viewing…)
Microsoft Corporation

About meWindows Phone

Agenda Windows Azure Toolkits for Devices とは?
 Windows Azure 簡単なおさらい Windows Azure Toolkit for Windows Phone

Windows Azure Toolkit for Android

Windows Azure Toolkit for iOS

 まとめMicrosoft Corporation

Windows Phone

Windows AzureToolkit for Devices

Microsoft CorporationWindows Phone

なぜ Phone + Cloud が良いのか?
クラウドアプリは、小さく始めて大きくスケール可能

クラウドは開発者が利用可
能な多くのリソースを提供

クラウドは各々のデバイス
プラットフォームの違いを超えて利用できる

Microsoft Corporation

Windows Phone各種デバイスと Windows Azure
PaaS:
その上で開発を行うだけ
 Windows Azure による管理・運用の自動化、OS パッチ適用等
 スケーラビリティ
 利用量に応じた課金
 その他のサービスも利用可能 (例: ACS、Traffic Manager、Caching、CDN、等々) 共通の開発ツール群
 Visual Studio、言語(C#/VB.NET 等)
 開発用エミュレーター
 Windows Azure Toolkits forDevices

Microsoft Corporation

Windows Phone

Windows Azure Toolkits for Devicesスマートフォン開発者がより簡単に Windows Azureを扱えるツール

WP–v1.3.2 (WP7 & 7.5) New!!
iOS-v1.3 (iPhone & iPad) New!!
Android–v0.8

Native ライブラリToolkits に含まれるもの:
. NET、Objective-C、Java

サンプル
プロジェクト テンプレート
ドキュメントMicrosoft Corporation

Windows Phone

Windows Azure Toolkits for Devices で実現できること
Windows Live
認証
（WP, iOS）

Windows Azure
AppFabric ACS

GoogleYahoo!
FacebookOpenID
AD FS 2.0

サービス、 Windows Azure, SQL Azure
ストレージ
ストレージ
（ WP, iOS, Android ）サービス（REST-XML / JSON 等）

Microsoft Corporation

Push 配信（WP, iOS）

Apple Push
Notification Service
Microsoft Push
Notification Service

Windows Phone

Windows Azure
簡単なおさらいMicrosoft Corporation

Windows Phone

Windows Azure 概要
Windows Azure Windows Server 2008 相当 コンピュートサービス
 ストレージサービス
 SQL Azure
 SQL Server 2008 相当
 Windows Azure Platform AppFabric サービスバス
 Access Control ServiceWindows® Azure™ Platform

10Microsoft Corporation

Windows Phone

コンピュートサービスロール
 ロールインスタンス (インスタンス)
 Webロール Workerロール
コンピュートサービス
リクエスト

Web ロールWorker ロール

レスポンス

ストレージ サービスキュー
Microsoft Corporation

Windows Phoneストレージサービス

Container

Blob
ブロブ
データの永続化をサポート
ブロブ Blob
 バイナリデータ
Table
 TablePartitionKey
RowKeyTimestamp
Property1…
PropertyN
 表形式
Word
10.0
2010/06/01
True
文書作成
9.0
2007/01/30
False
表計算
データ Excel
Excel
10.0
2010/06/01
True
表計算 Queue ロール間で受け渡すメッセージデータ

Queueメッセージ
Microsoft Corporation

メッセージ

Windows Phone

認証




ASP.NET Windows Azure ストレージサービス
 SQL Azure
Access Control Service
Identity Provider
ID 発行者
信頼ユーザー①アクセス

Azure上のサービス/アプリケーション②クレーム ポリシーの提示⑤セキュリティ トークンでログイン
Microsoft Corporation

Windows Phone

Windows Phone と Azureでできること
外部のサービス
Identityプロバイダー(Windows Live,Google, etc...)③データ処理⑤結果の通知⑥結果の通知(Push)
14

Microsoft Corporation

Microsoft Push Notification
Service (MPNS)
Windows Phone

Windows Azure
Toolkit for
Windows Phone
Microsoft Corporation

Windows Phone

Windows Phone 概要

ユーザー最優先
メトロデザインフレームワーク
ライブタイルハブ

リッチでシンプルなアプリケーションを簡単・スピーディーに開発
 Silverlight / XNA
 Visual Studio 2010
 Expression Blend

16

Microsoft Corporation

Windows Phone

DemoBabel.cam– Windows Azure(Web Role, Worker Role),Blob アクセス, ACS 連携,
MPNS 利用
Windows Azure Toolkit for Windows Phone

Babel.cam–Windows Azure (Web Role / Worker Role)、Blob アクセス、ACS 連携、MPNS 利用
SharedAccessSignature

画像がありますか?
画像処理(Web Role / Worker Role)Windows Azure
アクセス
ログイン
SharedAccessImageのロード
ユーザーの認証
Blob
ストレージへのNotification
送信
トークン
Signature
イメージ保存
翻訳された
テキスト

Microsoft Corporation

Windows
Azure

翻訳された
オリジナルの
テキスト
テキスト
翻訳された
テキスト

Windows Phoneプッシュ通知とデータフロー
2
プッシュ対応サービスへ URI を転送:
"http://notify.live.com/throttledthirdparty/0
1.00/AAFRQHgiiMWNTYrRDXAHQtzAgrNpzcDAwAAAAQOMDAwMDAwMDAwMD
AwMDA"

アプリケーション通知サービス

プッシュ通知を送り出すサービス

3
HTTP POST を利用した

4
プッシュ通知のメッセージ送信

送信1
Push 用のエンドポイント作成
Microsoft
hostedserver

Microsoft Corporation

Windows Phone通知の種類
トースト
 タイル
 Raw


Microsoft CorporationWindows PhoneDemo
スクラッチでのプロジェクト作成

Windows Azure Toolkit for Windows Phone

開発に必要な環境と事前準備Windows Azure Toolkit for Windows Phone

http://watwp.codeplex.com/

Azure AppFabric ACS v2 ネームスペース

フェデレーション 認証に必須、自動的な設定
 Live ID、Google、Yahoo! 等も設定なし
 独自 IdP (Identify Provider) 利用の場合は要設定Windows Azure ストレージ アカウント
ローカル Azure エミュレーター実行の場合は不要

HTTPS 443 と HTTP 10080 ポートの利用確認
Windows Azure Compute Emulator でポート指定 ローカル IIS の当該ポート使用の有無を確認

Microsoft Corporation

Windows Phone

Microsoft Push Notification Services
Push Notifications

Phone と Microsoft Push Notification Service との間の単一のコネクション
 帯域の節約とバッテリ消費の逓減
 配信される保証はない

Push Notifications の種類Raw 単一メッセージを単一アプリケーションに送信

トースト
 単一メッセージをユーザーに送信 (デバイス ID)

タイル イメージ、タイトル、カウントの更新

Microsoft Corporation

Windows PhonePush Notifications
サブスクライブの仕組み
Phone が単一のChannel をオープン
 Phone が Web Roleに URL を送信 Web Role が当該 URLを使い、Notifications
を Push Microsoft Push
Notification Service がPhone に通知Microsoft CorporationWeb
ロール

(3)

MicrosoftPush
Notification
Service(1)(2)(4)

Windows Phone

Windows Azure 展開時の注意点


Windows Azure で利用可能な証明書に変更
初期設定はローカル環境の自己証明書による署名
 Windows Azure のホスト名で証明書 (. cer ファイル) を作成し、ロールのプロパティからその証明書を選択

秘密鍵付き証明書 (. pfx ファイル) 事前 Upload
指定証明書 (. cer ファイル) を Azure 上で利用可能に(HTTPS 接続時、証明書の警告が表示されない状態)



ロール仮想マシン変更


「XS」インスタンス構成 → 自分の契約プランに変更

Windows Phone プロジェクトのコード修正


個別ファイルにハード コード済み EndPoint 等修正

Microsoft Corporation

Windows Phone

v1.3.2 (12月リリース)における改良点
Windows Azure Tools for Visual Studio 1.6 対応
 Windows Phone Developer Tools 7.2 RTM 対応
 Shared Access Signature 等の API の見直し、バグ修正等
 メンバーシップ プロバイダーとしての SQL Azure OData 経由データソースとしての SQL Azure サポート
 Web アプリケーション部分の ASP.NET MVC 3 対応
 Nuget 対応
(参考) v1.2 時点での改良点
Access Control Service 2.0 対応・ツール
Apple Push Notification Services 対応
Windows Azure Storage キュー 対応
Microsoft Corporation

Windows Phone

Windows AzureToolkit for Android

Microsoft Corporation

Windows Phone

開発に必要な環境

Eclipse (Windows/Macintosh/Linux)Windows/Macintosh/Linux)

http://developer.android.com/sdk/index.html

ADT plug–in for Eclipse

http://www.eclipse.org/downloads/

http://developer.android.com/sdk/eclipse-adt.html

Windows Azure Toolkit for Android
https://github.com/microsoft-dpe/wa-toolkit-android

Microsoft Corporation

Windows PhoneAndroid から Blob ストレージへのアクセス

Microsoft Corporation

Windows PhoneAndroid から テーブル ストレージへのアクセス

Microsoft Corporation

Windows PhoneDemoAndroid 環境設定からテーブル / Blob ストレージへのアクセス

Windows Azure Toolkit for Android
Microsoft Corporation

Windows Phone

Windows AzureToolkit for iOS

Microsoft Corporation

Windows Phone

開発に必要な環境 (1) Mac OS, Tools 他
Mac OS (Snow Leopard、Lion) XCode 4Apple Store より入手 (無料)

Windows Azure Toolkit for iOS ver. 1.3
https://github.com/microsoft-dpe/wa-toolkit-ios

Microsoft Corporation

Windows Phone

開発に必要な環境 (2) Visual Studio他
 Parallels Desktop 7（かなりの速度が出ます）


http://www.parallels.com/jp/download/desktop/ (試用版)

Windows 7 及び Visual Studion 2010 (別途入手)
SQL Server Express Edition のインストールに注意！！
SQLEXPRWT_x64_JPN.exe /ACTION=install /SKIPRULES=PerfMonCounterNotCorruptedCheckMicrosoft Corporation

Windows Phone

Version 1.3 における改良点
AppFabric ACS (Access Control Service) 統合
 Apple Push Notification Services が利用可能
 バグ修正 (特にメモリ リークに関して)
 Cloud Ready Packages for Devices の修正
 Configuration Utility
Microsoft Corporation

Windows Phone

Windows Azure 展開に必要なもの


Cloud Ready Packages for Devices

Windows Azure にデプロイするためのパッケージ集
 Windows 7 も cspack コマンド も不要 適切なパッケージをダウンロードし . cscfg ファイルを 更新すれば、Azure 管理ポータル にデプロイできる ACS + APNS
 ACS
 Membership + APNS Membership

Cloud Ready Configuration Utility. cscfg の更新が、Mac 上でも可能なツール (Visual Studio では簡単に可能 ) . cscfg ファイルの生成に加え、
 AppFabric ACS の適切な設定も可能
Microsoft Corporation

Windows Phone

Azure ストレージ内へのTable 作成
Azure Storage Explorer 使用
 http://azurestorageexplorer.codeplex.com
 各種データ格納のための コンテナ追加
 アクセス権をホステッドサービスの Web サイトで管理Microsoft Corporation

Windows Phone

Xcode によるコーディングの準備 (1)ワークスペースの作成とプロジェクトの追加

Microsoft Corporation

Windows Phone

Xcode によるコーディングの準備 (2)Windows Azure Toolkit for iOS ライブラリのプロジェクトへの追加
watoolkit-ioslib.xcodeproj を
ドラッグ&ドロップ

PROJECT - Build Settings

Header Search Paths${BUILT_PRODUCTS_DIR]/usr/include/libxml2

TARGETS - Build Phases

Other Linker Flags-ObjC–all_load
Link Binary with Libraries

Microsoft Corporation
https://github.com/microsoft-dpe/wa-toolkit-ios

libwatoolkits.a
libxml2.2.dylib

Windows Phone

iOS から BLOB ストレージへのアクセス

Microsoft Corporation

Windows Phone

iOS から テーブル ストレージへのアクセス

Microsoft Corporation

Windows PhoneDemo
テーブル / Blob
ストレージアクセス- サンプルアプリ実行
Windows Azure Toolkit for iOS
Microsoft Corporation

Windows Phone

Identity: ACS による認証処理
WebRoleAccess Control
ServiceMicrosoft Corporation

Windows Phone

DemoAccess Control Serviceを利用したサンプル
アプリケーション修正

Windows Azure Toolkit for iOS
Microsoft Corporation

Windows PhoneDemo
iPhone のカメラで撮影した写真のBlob へのアップロード

Windows Azure Toolkit for iOS
Microsoft Corporation

Windows Phoneセッションのまとめ
Session wrap up

 セッションの目的
 Windows Azure Toolkits for Devices のご紹介
 各種デバイス対応アプリケーションと Windows

Azure 上で動作するサービスとの連携を容易にする テンプレートや設定ツールで Azure 連携が簡単

 このセッションで持ち帰って戴きたいモノWindows Azure Toolkits for Devices の各種機能を使って開発することにより Windows Azure との連携が容易

Microsoft Corporation

Windows Phoneリファレンス #1
クラウドならマイクロソフト

http://www.microsoft.com/japan/business/cloud/default.mspx

Windows Azure の製品情報

http://www.microsoft.com/japan/windowsazure

MSDN クラウド開発情報

http://msdn.microsoft.com/ja-jp/default.aspx. NET 開発コード サンプル集 Code Recipe
http://msdn.microsoft.com/ja-jp/samplecode.recipe.aspx
Microsoft Web Platform

http://www.microsoft.com/webMicrosoft CorporationWindows Phoneリファレンス #2
Windows Azure Toolkit for Windows Phone ver. 1.3.1 http://watwp.codeplex.com/
Windows Azure Toolkit for iOS ver. 1.3 -https://github.com/microsoftdpe/wa-toolkit-ios
Windows Azure Toolkit for Android ver. 0.8 -https://github.com/microsoftdpe/wa-toolkit-android
S/N Ratio (Naoki Sato's Blog) -http://satonaoki.wordpress.com/

Virtuoso (Shotaro Suzuki's Blog) http://blogs.msdn.com/b/shosuz/
iOS x Windows Azure 連携アプリケーション開発- Windows Azure Toolkit for iOS を使った基本的な開発方法のご紹介 –http://msdn.microsoft.com/ja-jp/windowsazure/hh697503

Microsoft CorporationWindows Phone

ご清聴ありがとうございました！

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, itshould not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Microsoft Corporation

Windows Phone

Windows Azure Blobs:
Shared Access Signature (1)書き込み/削除等も含めアクセス権を詳細設定可能
ユーザー識別ではなく URL のパラメータ部分で識別パラメータに追加されたもの


”開始時間 & 終了時間 & アクセス権 & 署名”

予めコンテナに設定されたポリシーをベースにする場合”アクセス権 & ポリシー名 & 署名” がパラメータ
権限設定の種類
コンテンツ / リスト / プロパティ / メタデータの読み込み / 書き込み
 削除 リース スナップショット作成
 コンテナ内 Blob の列挙
Microsoft CorporationWindows Phone

Windows Azure Blobs:
Shared Access Signature (2)クライアントはデータにアクセスするための共有アクセス署名を、Web ロールから取得
 クライアントは、Blobにデータを保存
 クライアントはPublicなBlob にデータを直接取りに行くMicrosoft CorporationWebロール

Windows Phone

本 Toolkit における ACS の実装
Windows Azure Toolkit for Windows Phone 7└ WindowsPhoneCloud.ACS

Microsoft Corporation

Windows Phone

WindowsPhoneCloud.ACS で使われている
オリジナルライブラリ


AspProviders: Windows Azure Tables 用の ASP.NET Providers (Membership, Roles, Profileand Session State Store)



System.Data.Services.Client: Windows Phone 用の OData client library(http://odata.codeplex.com )。Azure Tables へのアクセスで使用。

WindowsPhoneCloud.StorageClient: Windows Phone 用の Windows Azure Storage Client
library .



DPE.OAuth: Microsoft DPE OAuth2 library.

SL.Phone.Federation: Microsoft Silverlight ACS sign in control.

Notification Services (MPNS): タイル、トースト、Raw.



WindowsPhone.Recipes.Push.Messages:: Push Notification Server Side Helper Library, apart of the Windows Phone 7 Push Recipe, that provides an easy way to send all three types ofpush notification messages that are currently supported by Microsoft Push

Windows Phone では WIF（Windows Identity Foundation）がサポートされていないため、とても便利！
Microsoft Corporation

Windows Phone

WindowsPhoneCloud.ACS の動き IdP
WP7CloudApp3.Phone
ACS sign in control
で簡単に実装OAuth 2.0

Isolated Storage にクレデンシャルとクレームを格納

http authorization
ヘッダーに入れて送信

REST(OData)
格納
Windows Azure

Windows Live
GoogleYahoo!
FacebookOpenID
AD FS 2.0
信頼サービスへのアクセスを認可

クレーム変換ルール

信頼
Windows Azure AppFabric ACS

WP7CloudApp3.Web
Microsoft Corporation

Windows Phone