microsoft azure mobile serviceによるアプリ構築

49
Windows Azure Mobile Serviceでのアプリ開発 @第8回まどべんよっかいち 2014/3/29 青木 宣明(@kumar0001)

Upload: nobuaki-aoki

Post on 05-Jul-2015

336 views

Category:

Software


4 download

DESCRIPTION

第8回まどべんよっかいちの発表資料です。

TRANSCRIPT

Page 1: Microsoft Azure Mobile Serviceによるアプリ構築

Windows Azure Mobile Serviceでのアプリ開発

@第8回まどべんよっかいち2014/3/29青木 宣明(@kumar0001)

Page 2: Microsoft Azure Mobile Serviceによるアプリ構築

モバイルアプリの開発

• サーバ側システムの開発

• BaaSとは

Page 3: Microsoft Azure Mobile Serviceによるアプリ構築

モバイルアプリ開発の対象

端末側アプ

• Model

• View(ネイティブ or

Web)

サーバ・ア

プリ間通信

•伝送方式

•データ表現

サーバ側シ

ステム

•データストア

•端末側アプリ向けI/F

•認証・アクセス権

•プッシュ通知

既存のサービスを使ったアプリはここだけでよいが

新しいサービスではこれらの設計・開発

も必要に

Page 4: Microsoft Azure Mobile Serviceによるアプリ構築

サーバ側システム開発の事情

端末側アプリ開発以外にリソースを避けない事情

• 開発予算が限られている

• サーバ側のスキルが不足している

• 端末側アプリをリリースできるよう開発に注力したい

• 実験的なサービスのサーバ側システムを素早く構築したい

Page 5: Microsoft Azure Mobile Serviceによるアプリ構築

個人的な背景

TODO管理アプリで自分に適したものが見つからない

• Win8/WP8端末で同期できることが条件

無ければ自分で作ってしまおうか?

•端末間の同期を考えるとサービスを提供するサーバがほしい

•モバイル端末だけでは複雑な処理ができないので、なおさら必要

でも、サーバ側を構築する余力がない

• Webサービス、データベースの経験が浅い

•モバイル端末側のAP開発で手がいっぱい

Page 6: Microsoft Azure Mobile Serviceによるアプリ構築

Baas サーバ側システム開発の省力化

モバイルアプリのサーバ側システムを構築するためのサービス

• Backend As A Serviceの略

• 主要機能を手軽に実装できるサービスを提供する

BaaSを使えばとりあえずサーバ側のプロトタイプを作成して、端末側アプリに注力できるのでは?

Page 7: Microsoft Azure Mobile Serviceによるアプリ構築

BaaSの主な提供機能

BaaS

認証

• SNSアカウント認証を

ベースとした認証

• Twitter・Facebookなど

ストレージ

•サーバ側にデータを格納

アクセス制御

•認証結果にょるストレー

ジアクセスの制御

プッシュ通知

•サーバから端末に通知

Page 8: Microsoft Azure Mobile Serviceによるアプリ構築

BaaSとXaaS

ユーザ準備範囲

ベンダー提供範囲

AP

ミドルウェア

OS

ハードウェア

SaaS PaaS

AP

ミドルウェア

OS

ハードウェア

IaaS

AP

ミドルウェア

OS

ハードウェア

BaaS

AP

ミドルウェア

OS

ハードウェア

モバイルアプリのプラットフォームとしてPaaSにあたる

役割を担う

Page 9: Microsoft Azure Mobile Serviceによるアプリ構築

BaaSのメリット

開発スピード

•データ管理、認証を出来合いの機能で実現できる

•サーバ構築の過程が不要

サーバサイド開発の省力化

•サーバ管理のコストを十分にさけなくてもよい

•サーバ構築のコストが不要

Page 10: Microsoft Azure Mobile Serviceによるアプリ構築

BaaSのデメリット

カスタマイズの限界

• BaaSの提供機能が、機能拡張に不十分な場合がある

ベンダーロックイン

• ベンダーの提供機能に制約されるため、自前サーバや他BaaS

への移行が困難

セキュリティ対策

• 認証などセキュリティ機能が基本的な機能に限定される

Page 11: Microsoft Azure Mobile Serviceによるアプリ構築

Windows Azure Mobile Service (WAMS)とは

• 概要

• 主要機能

Page 12: Microsoft Azure Mobile Serviceによるアプリ構築

Windows Azure Mobile Serviceとは

Windows Azureが提供するBaaS

• バックエンドの主要機能を手軽に構築

• Azureの各機能の利用

通知ハブ、ストレージ、メール送信など

• マルチプラットフォームに対応

WP8やWin8ストアアプリだけではない

Page 13: Microsoft Azure Mobile Serviceによるアプリ構築

2種類のバックエンド

2種類のバックエンド処理の定義方法

• Node.js版

node.jsライブラリを使ったバックエンド処理

言語はjavascript

• .NET版

ASP.NET Web APIを使ったバックエンド処理

言語はC#もしくはVB.NET

.NET版は2014/2にプレビュー提供

Page 14: Microsoft Azure Mobile Serviceによるアプリ構築

主要機能

1. 認証2. ストレージ・アクセス権3. カスタムAPI4. プッシュ通知

その他• Gitでの変更管理• スケジュール実行• ロギング• スケーリング• プロジェクトテンプレート

Page 15: Microsoft Azure Mobile Serviceによるアプリ構築

(1)認証

外部の認証プロバイダによる認証機能

• Microsoft Account

• Facebook

• Twitter

• Google

• Windows Azure Active Directory

管理ポータル画面に必要な情報を設定するだけでよい

Page 16: Microsoft Azure Mobile Serviceによるアプリ構築

認証の設定画面

Page 17: Microsoft Azure Mobile Serviceによるアプリ構築

認証画面の追加

Page 18: Microsoft Azure Mobile Serviceによるアプリ構築

(2)ストレージ・アクセス権

Node.js

• 管理ポータル画面 or Visual studioでテーブルを定義

• クライアントからテーブルのCRUD用APIでアクセス

• テーブルのCRUD操作ごとのアクセス権限を設定

.NET版

• ASP.NET Web APIとしてAPIを定義⇒モバイルサービスに配備

• Web APIから任意のストレージを利用

• クライアントからWeb APIにアクセス

Page 19: Microsoft Azure Mobile Serviceによるアプリ構築

テーブル定義 (Node.js版)管理ポータル画面から

Page 20: Microsoft Azure Mobile Serviceによるアプリ構築

テーブル定義 (Node.js版)

Visual Studioから

Page 21: Microsoft Azure Mobile Serviceによるアプリ構築

テーブル定義 (Node.js版)

• 作成後のテーブルは基本の列だけ

• id

• __createdAt

• __updatedAt

• __version

• Insert/UpdateしたときにJSONオブジェクトに応じて動的に列を作成

Page 22: Microsoft Azure Mobile Serviceによるアプリ構築

テーブル定義 (Node.js版)

列の動的作成

• モバイルサービスのDynamic Schema機能をオフにすることで抑止

Page 23: Microsoft Azure Mobile Serviceによるアプリ構築

APIアクセス (Node.js版)

IMobileServiceTable<T>インターフェースを使ってAPIにアクセス• OData形式のRESTサービスとしてアクセスする

問い合わせ系 検索系 追加・更新 削除

Read Select Insert Delete

Lookup Skip Update

Take

ThenBy

ThenByDescending

OrderBy

Where

Page 24: Microsoft Azure Mobile Serviceによるアプリ構築

アクセス権

権限 意味

すべてのユーザ URLにアクセスすれば誰でもアクセス可能

アプリケーションキーを持つすべてのユーザ

APごとのキーをHTTPヘッダ(*)に指定した通信について許可される。IMobileServiceTableによるアクセスで自動的に設定される。

(*) X-ZUMO-APPLICATION

認証済みユーザのみ 認証トークンをHTTPヘッダ(*)に指定した通信について許可される。

(*) X-ZUMO-AUTH

スクリプトと管理者のみ 内部のスクリプトからのアクセス、もしくは管理者としてのアクセス(*)の場合に許可される。(*) X-ZUMO-MASTERヘッダ

Page 25: Microsoft Azure Mobile Serviceによるアプリ構築

アクセス権(Node.js版)管理ポータル画面から

Page 26: Microsoft Azure Mobile Serviceによるアプリ構築

アクセス権(Node.js版)

Visual Studioから

Page 27: Microsoft Azure Mobile Serviceによるアプリ構築

.NET版では

テーブル定義カスタムAPI定義

Node.js版

.NET版

.NET版ではテーブル定義とカスタムAPI定義がない

Page 28: Microsoft Azure Mobile Serviceによるアプリ構築

ASP.NET Web API (.NET版)

Web APIプロジェクトを作成

コントローラクラスにCRUD操作に対応したHTTP verb毎にメソッドを定義

Web API

Windows Azure Mobile Service • POST• GET• PUT / PATCH• DELETE

Page 29: Microsoft Azure Mobile Serviceによるアプリ構築

Controllerクラス

Page 30: Microsoft Azure Mobile Serviceによるアプリ構築

Web APIのデプロイ

2通りの方法

• Visual Studioから配備

• GitでプロジェクトをPush

Page 31: Microsoft Azure Mobile Serviceによるアプリ構築

Visual Studioから配備

Page 32: Microsoft Azure Mobile Serviceによるアプリ構築

Visual Studioから配備

Page 33: Microsoft Azure Mobile Serviceによるアプリ構築

GitでプロジェクトをPush

ソリューションのフォルダで実施git initwget http://www.gitignore.io/api/visualstudiomv visualstudio .gitignoregit add .git commit –m “comment”git remote add origin https://madoben201403-net.scm.azure-mobile.net/madoben201403-net.gitgit push origin master

Page 34: Microsoft Azure Mobile Serviceによるアプリ構築

Git Pushでの更新例

Page 35: Microsoft Azure Mobile Serviceによるアプリ構築

APIアクセス (.NET版)

IMobileServiceTable<T>インターフェースを使ってAPIにアクセス• OData形式のRESTサービスとしてアクセスするのはnode.js版と同じ

問い合わせ系 検索系 追加・更新 削除

Read Select Insert Delete

Lookup Skip Update

Take

ThenBy

ThenByDescending

OrderBy

Where

Page 36: Microsoft Azure Mobile Serviceによるアプリ構築

アクセス権(.NET版)

メソッドごとに変更も可能

Page 37: Microsoft Azure Mobile Serviceによるアプリ構築

(3)カスタムAPI

Node.js版

•サーバスクリプト:テーブル操作をカスタマイズ

•カスタムAPI:独自のAPIを定義

•どちらもjavascriptで記述

.NET版

• Web APIを作成するため、処理内容は自由

Page 38: Microsoft Azure Mobile Serviceによるアプリ構築

サーバスクリプト (Node.js版)

CRUD操作に対応したスクリプト

• 各APIをカスタマイズして、各操作の処理内容を変更できる

データ検証など

API

Windows Azure Mobile Service • Insert• Read• Update• Delete

例• 端末からのデータの検証• 独自のアクセス制限

Page 39: Microsoft Azure Mobile Serviceによるアプリ構築

カスタムAPI (Node.js版)

新しくAPIを定義できる• テーブル操作に基づかないデータ操作• 複合的な処理をサーバ側で実装して、端末側APで複雑な処理を行わない

CRUD操作に対応したHTTP verb毎にスクリプトを定義

API

Windows Azure Mobile Service • POST• GET• PUT / PATCH• DELETE

端末側からはInvokeAPIAsyncメソッドで呼び出す

Page 40: Microsoft Azure Mobile Serviceによるアプリ構築

複数テーブルへの問い合わせ

IMobileServiceTable<T>インターフェースにはjoin系のメソッドがない

• 複数の表を結合する操作はサーバ側で実装して、カスタムAPIを通して端末側から利用させる

API

Windows Azure Mobile Service

• POST• GET• PUT / PATCH• DELETE

端末側はサーバ側の処理結果を利用するだけに留めるテーブルのJOINは

サーバ側で実施

Page 41: Microsoft Azure Mobile Serviceによるアプリ構築

(4)プッシュ通知

通知方法は2種類• 従来のプッシュ通知サービス(WNS/MPNSなど)を使う

Windows Push Notification Service (Win8) Microsoft Push Notification Service (WP8) Apple Push Notification Service (iOS)+その他

• Windows AzureのNotification Hubを使う

API

Windows Azure Mobile Service

PNS ⑤プッシュ通知

①通知サービスのチャネル確立

④プッシュ通知を要求

②チャネルを通知

③通知イベント発生

Page 42: Microsoft Azure Mobile Serviceによるアプリ構築

従来のプッシュ通知のデメリット

WNS/MPNSを使う場合、APIからPNSへのプッシュ通知要求はプッシュ通知のプラットフォーム毎に行う必要がある

プッシュ通知のプラットフォームが増えるとAPI側のロジックを修正する必要がある

API

Windows Azure Mobile Service

⑤プッシュ通知

①通知サービスのチャネル確立

④プッシュ通知を要求

②チャネルを通知

③通知イベント発生

WNS⑤プッシュ通知

①通知サービスのチャネル確立

②チャネルを通知MPNS

Page 43: Microsoft Azure Mobile Serviceによるアプリ構築

Notification Hubのメリット

Notification Hubを使うと、APIからはHubに1回要求すればよい。

各プッシュ通知プラットフォームへの通知要求はNotification Hubが行う。• スケーリングにもハブ側で対応できる。

API

Windows Azure Mobile Service

⑥プッシュ通知

①通知サービスのチャネル確立

④プッシュ通知を要求

②チャネルを通知

③通知イベント発生

WNS⑥プッシュ通知

①通知サービスのチャネル確立

②チャネルを通知MPNS通知ハブ

⑤プッシュ通知を要求

Page 44: Microsoft Azure Mobile Serviceによるアプリ構築

WAMSのメリット

•管理ポータル画面からサービス側を定義するだけで構築可能

•プロジェクトテンプレートから端末側APのプロトタイプを作成可能開発スピード

•Azureでサーバ管理の面倒を見てくれる

•Node.jsもしくはWeb APIで開発できるので、参考情報が多い

•スケーリングにも対応しやすい

サーバサイド開発の省力化

•.NETバックエンドであればデプロイし直せば済むはず

•Node.jsバックエンドのデータベースはSQL Serverなので、データ移

行も容易

自前サーバへの移行が容易

Page 45: Microsoft Azure Mobile Serviceによるアプリ構築

まとめ

サーバ側システム(バックエンド)の開発を省力化するBaaS

• バックエンドを短期間で立ち上げられる

•限られた開発リソースを端末側のアプリ開発により多く充てられる

WAMSでAzureを活用したバックエンドの構築

• Azureのサービス、スケーラビリティを利用できる

•バックエンドはNode.js/ASP.NET Web APIで開発できるので、既存の

ノウハウを応用できる

Page 46: Microsoft Azure Mobile Serviceによるアプリ構築

WAMSその他機能

• プロジェクトテンプレート

• 料金

Page 47: Microsoft Azure Mobile Serviceによるアプリ構築

プロジェクトテンプレート

Node.js .NET

Windows Phone 8 ○ ○

Windows 8.x ストアアプリ ○ ○

iOS ○ ○

Android ○ ー

Web AP(HTML/JavaScript) ○ ー

Xamarin ○ ー

PhoneGap ○ ー

Page 48: Microsoft Azure Mobile Serviceによるアプリ構築

料金体系

最初の12か月間のみ1ジョブ1時間あたり1回

10ジョブ50,000回

10ジョブ500,000回

Mobile Service

Page 49: Microsoft Azure Mobile Serviceによるアプリ構築

料金体系

通知ハブ