クラウドを利用したwindows ストアアプリ開発 ~ windows azure と連携する ~

32
クラウドを利用した Windows ストアアプリ開発 Windows Azure と連携する 日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 クライアントテクノロジー推進部 エバンジェリスト 大西 彰 (@oniak3) [email protected] http://aka.ms/wsazuredev

Upload: akira-onishi

Post on 01-Dec-2014

1.430 views

Category:

Documents


9 download

DESCRIPTION

 

TRANSCRIPT

Page 1: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

クラウドを利用したWindows ストアアプリ開発~ Windows Azure と連携する ~

日本マイクロソフト株式会社デベロッパー&プラットフォーム統括本部クライアントテクノロジー推進部エバンジェリスト 大西 彰 (@oniak3)[email protected]

http://aka.ms/wsazuredev

Page 2: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイスとサービスを組み合わせる

Windows Azure を知る

シナリオ別の実装方法を知る

Agenda

Page 3: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイスとサービスを組み合わせる

Page 4: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~
Page 5: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

インターネット、グローバル利用の視点で考える

Page 6: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

4 億Email アカウント

約 3 億接続ユーザー

4,800 万

サブスクライバー

200+サービス

24時間 / 7 日稼働

300 PByteBing データ

2.5 億アカウント

約 5,000 万Office Web Apps

ユーザー

55 億サーチ数 / 月

マイクロソフトが提供しているサービスマイクロソフトが提供しているサービス

Page 7: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

クライアントサーバー型の考え方

クライアントからの要求に対して、

何らかのサービスを提供する側のアプリ

そもそも、サーバーって?

Page 8: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

クライアント・サーバー型の構成

Page 9: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

非同期通信の世界

時刻 t0

時刻 t1

リクエスト

レスポンス処理時間

Page 10: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

クライアントとサーバーのデータ交換

時刻 t0

時刻 t1

リクエスト 文字列

レスポンス 文字列処理時間

JSON や XML

Page 11: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

サービスにつながらない状況

Page 12: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイス&サービスこれからの考え方

・常時接続とは限らない

モバイルにおけるタブレット利用

・直接データベースに接続しない

サービスアプリを経由して通信

・文字列でデータ交換

XML :型を明確にするJSON :型を緩やかにする

ちょっと前までとは違った視点で開発

Page 13: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

Windows Azure を知る

Page 14: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~
Page 15: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

Windows Azure

Page 16: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

世界規模のクラウド基盤サーバー/ ネットワーク/ データセンター

北米4カ所、ヨーロッパ2カ所、アジア2カ所、日本2カ所豪州2カ所 + CDN 24 カ所

高度な自動化

統合リソース管理

柔軟性

従量課金

ネットワーク

仮想ネットワーク

トラフィックマネージャー

コンピューティング

仮想マシン

クラウドサービス

Webサイト

モバイルサービス

開発言語

キャッシュ メディア CDN データ分析HPC 統合ID サービスバス

アプリケーション

バックアップ

データ管理

SQLデータベース ビックデータ テーブル BLOB

Page 17: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

シナリオ別の実装方法を知る

Page 18: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

代表的なシナリオ

シナリオ ストアアプリ側 クラウド側

Web ページの表示 WebView Web サイト

RSS / ATOM フィード SyndicationClient Web サイト上のブログ

画像、音楽、ビデオ Image, MediaElement Azure ストレージ

軽量なデータアクセス MobileServiceClient モバイルサービス

軽量なデバイスへの通知 MobileServiceClient モバイルサービス

REST サービスの呼出 HttpClient クラウドサービス

WCF サービスの呼出 サービス参照 クラウドサービス

Page 19: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

<WebView x:Name="myWebView" />

myWebView.Navigate(new Uri("http://8store.azurewebsites.net"));

Web ページの表示

Navigate

LoadCompleted

Page 20: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

RSS / ATOM フィード

async void LoadFeed()

{

var client = new SyndicationClient();var uri = new Uri("http://8store.azurewebsites.net/?feed=rss2");var feed = await client.RetrieveFeedAsync(uri);

}

await client.RetrieveFeedAsync

SyndicationFeed feed

Page 21: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

画像

<Image Source=

"https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/onia3-beer.jpg" />

Source

画像の読み込みは非同期

Page 22: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

画像のダウンロード

async void DownloadImage()

{

var client = new HttpClient();

var uri = new Uri("https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/onia3-beer.jpg");

var stream = await client.GetBufferAsync(uri);

var destination = Path.GetFileName(uri.LocalPath);

StorageFile file =

await KnownFolders.PicturesLibrary.CreateFileAsync(destination, CreationCollisionOption.GenerateUniqueName);

await FileIO.WriteBufferAsync(file, stream);

}

GetBufferAsync

Page 23: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

音楽・ビデオの再生

<MediaElement x:Name="myME" AreTransportControlsEnabled="True" Width="640" Height="400"

Source="https://mediasvc5wm2h8jg564k6.blob.core.windows.net/demo/Windows81intro.mp4"/>

Source

Page 24: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

軽量なデータアクセス

public class TodoItem

{

public int Id { get; set; }

public string Text { get; set; }

public bool Complete { get; set; }

}

async void SaveData()

{

var newItem = new TodoItem {

Text = string.Format("{0} > Developer Camp デモ",

System.DateTime.Now.ToString("hh:mm:ss")) };

await App.MbClient.GetTable<TodoItem>().InsertAsync(newItem);

}

GetTable<TodoItem>().InsertAsync

MbClient はモバイルサービスのクライアント

Page 25: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

軽量なデバイスへの通知Node.js サーバー側

クライアント側

Page 26: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

async Task<string> GetFromWebAPI()

{

var client = new HttpClient();

var uri = new Uri("http://aka.ms/boyacatalog2");

return await client.GetStringAsync(uri);

}

REST サービスの呼び出し

GetStringAsync

string

Page 27: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

async Task<string> PostMyMessage(string message)

{

ServiceReference1.MyServiceClient client =

new ServiceReference1.MyServiceClient();

var echo = await client.EchoAsync(message);

return echo;

}

WCF サービスの呼び出し

EchoAsync

string

Page 28: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイス&サービス考え方の一例

Page 29: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~
Page 30: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイス上でサービスのマッシュアップ

<Windows Azure Web サイト>商品サービス

ASP.NET Web API

<Windows Azure Web サイト>注文モニタ

ASP.NET SignalR

<Windows Azure モバイルサービス>注文サービス

TodoItemテーブル

通信

読み

書き

Page 31: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

デバイス&サービス、これからの開発

デバイスアプリ

Windowsストア、Xamarin

Visual Studio(共通プラットフォーム/共通スキルで開発)

バックエンドサービス

WindowsAzureモバイルサービスなど

構築アプリ

活用サービス

開発ツール

マルチデバイス クラウド

オーダー

オーダー

オーダー

基幹システム

社内システム

リアルタイム/バッチ連携

パッケージ

Page 32: クラウドを利用したWindows ストアアプリ開発 ~ Windows Azure と連携する ~

クラウドを利用したWindows ストアアプリ

・非同期呼び出し

・仕事用も遊び用も

・グローバルリーチ