Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Windows Azure Mobile
Serviceでのアプリ開発
@第8回まどべんよっかいち
2014/3/29
青木 宣明(@kumar0001)
モバイルアプリの開発
• サーバ側システムの開発
• BaaSとは
モバイルアプリ開発の対象
端末側アプ
リ
• Model
• View(ネイティブ or
Web)
サーバ・ア
プリ間通信
•伝送方式
•データ表現
サーバ側シ
ステム
•データストア
•端末側アプリ向けI/F
•認証・アクセス権
•プッシュ通...
サーバ側システム開発の事情
端末側アプリ開発以外にリソースを避
けない事情
• 開発予算が限られている
• サーバ側のスキルが不足している
• 端末側アプリをリリースできるよう開発に
注力したい
• 実験的なサービスのサーバ側システムを素
早...
個人的な背景
TODO管理アプリで自分に適したものが見つからない
• Win8/WP8端末で同期できることが条件
無ければ自分で作ってしまおうか?
• 端末間の同期を考えるとサービスを提供するサーバがほしい
• モバイル端末だけでは複雑な処理が...
Baas サーバ側システム開発の省力化
モバイルアプリのサーバ側システムを
構築するためのサービス
• Backend As A Serviceの略
• 主要機能を手軽に実装できるサービスを提
供する
BaaSを使えばとりあえずサーバ側のプロ...
BaaSの主な提供機能
BaaS
認証
• SNSアカウント認証を
ベースとした認証
• Twitter・Facebookなど
ストレージ
• サーバ側にデータを格納
アクセス制御
• 認証結果にょるストレー
ジアクセスの制御
プッシュ通知
•...
BaaSとXaaS
ユーザ準備範囲
ベンダー提供範囲
AP
ミドルウェア
OS
ハードウェア
SaaS PaaS
AP
ミドルウェア
OS
ハードウェア
IaaS
AP
ミドルウェア
OS
ハードウェア
BaaS
AP
ミドルウェア
OS
ハー...
BaaSのメリット
開発スピード
• データ管理、認証を出来合いの機能で実現できる
• サーバ構築の過程が不要
サーバサイド開発の省力化
• サーバ管理のコストを十分にさけなくてもよい
• サーバ構築のコストが不要
BaaSのデメリット
カスタマイズの限界
• BaaSの提供機能が、機能拡張に不十分な場合がある
ベンダーロックイン
• ベンダーの提供機能に制約されるため、自前サーバや他BaaS
への移行が困難
セキュリティ対策
• 認証などセキュリティ機能...
Windows Azure Mobile Service
(WAMS)とは
• 概要
• 主要機能
Windows Azure Mobile Serviceとは
Windows Azureが提供するBaaS
• バックエンドの主要機能を手軽に構築
• Azureの各機能の利用
通知ハブ、ストレージ、メール送信など
• マルチプラットフォー...
2種類のバックエンド
2種類のバックエンド処理の定義方法
• Node.js版
node.jsライブラリを使ったバックエンド処理
言語はjavascript
• .NET版
ASP.NET Web APIを使ったバックエンド処理
言語...
主要機能
1. 認証
2. ストレージ・アクセス権
3. カスタムAPI
4. プッシュ通知
その他
• Gitでの変更管理
• スケジュール実行
• ロギング
• スケーリング
• プロジェクトテンプレート
(1)認証
外部の認証プロバイダによる認証機能
• Microsoft Account
• Facebook
• Twitter
• Google
• Windows Azure Active Directory
管理ポータル画面に必要な情...
認証の設定画面
認証画面の追加
(2)ストレージ・アクセス権
Node.js
• 管理ポータル画面 or Visual studioでテーブルを定義
• クライアントからテーブルのCRUD用APIでアクセス
• テーブルのCRUD操作ごとのアクセス権限を設定
.NET版
• ...
テーブル定義 (Node.js版)
管理ポータル画面から
テーブル定義 (Node.js版)
Visual Studioから
テーブル定義 (Node.js版)
• 作成後のテーブル
は基本の列だけ
• id
• __createdAt
• __updatedAt
• __version
• Insert/Updateしたと
きにJSONオブジェ
クトに応じて動的
に...
テーブル定義 (Node.js版)
列の動的作成
• モバイルサービスのDynamic Schema機
能をオフにすることで抑止
APIアクセス (Node.js版)
IMobileServiceTable<T>インター
フェースを使ってAPIにアクセス
• OData形式のRESTサービスとしてアクセ
スする
問い合わせ系 検索系 追加・更新 削除
Read Sele...
アクセス権
権限 意味
すべてのユーザ URLにアクセスすれば誰でもアクセス可
能
アプリケーションキーを持つ
すべてのユーザ
APごとのキーをHTTPヘッダ(*)に指定し
た通信について許可される。
IMobileServiceTableによ...
アクセス権(Node.js版)
管理ポータル画面から
アクセス権(Node.js版)
Visual Studioから
.NET版では
テーブル定義
カスタムAPI定義
Node.js版
.NET版
.NET版ではテーブル定義とカスタムAPI定義がない
ASP.NET Web API (.NET版)
Web APIプロジェクトを作成
コントローラクラスにCRUD操作に対
応したHTTP verb毎にメソッドを定義
Web API
Windows Azure Mobile Service •...
Controllerクラス
Web APIのデプロイ
2通りの方法
• Visual Studioから配備
• GitでプロジェクトをPush
Visual Studioから配備
Visual Studioから配備
GitでプロジェクトをPush
ソリューションのフォルダで実施
git init
wget http://www.gitignore.io/api/visualstudio
mv visualstudio .gitignore
git add...
Git Pushでの更新例
APIアクセス (.NET版)
IMobileServiceTable<T>インター
フェースを使ってAPIにアクセス
• OData形式のRESTサービスとしてアクセ
スするのはnode.js版と同じ
問い合わせ系 検索系 追加・更新 削除...
アクセス権(.NET版)
メソッドごとに
変更も可能
(3)カスタムAPI
Node.js版
• サーバスクリプト:テーブル操作をカスタマイズ
• カスタムAPI:独自のAPIを定義
• どちらもjavascriptで記述
.NET版
• Web APIを作成するため、処理内容は自由
サーバスクリプト (Node.js版)
CRUD操作に対応したスクリプト
• 各APIをカスタマイズして、各操作の処理
内容を変更できる
データ検証など
API
Windows Azure Mobile Service • Insert
•...
カスタムAPI (Node.js版)
新しくAPIを定義できる
• テーブル操作に基づかないデータ操作
• 複合的な処理をサーバ側で実装して、端末側APで
複雑な処理を行わない
CRUD操作に対応したHTTP verb毎にスクリ
プトを定義...
複数テーブルへの問い合わせ
IMobileServiceTable<T>インター
フェースにはjoin系のメソッドがない
• 複数の表を結合する操作はサーバ側で実装
して、カスタムAPIを通して端末側から利
用させる
API
Windows ...
(4)プッシュ通知
通知方法は2種類
• 従来のプッシュ通知サービス(WNS/MPNSなど)を使う
 Windows Push Notification Service (Win8)
 Microsoft Push Notificatio...
従来のプッシュ通知のデメリット
WNS/MPNSを使う場合、APIからPNSへのプッシュ通知
要求はプッシュ通知のプラットフォーム毎に行う必要が
ある
プッシュ通知のプラットフォームが増えるとAPI側のロ
ジックを修正する必要がある
API...
Notification Hubのメリット
Notification Hubを使うと、APIからはHubに1回要求
すればよい。
各プッシュ通知プラットフォームへの通知要求は
Notification Hubが行う。
• スケーリングにもハ...
WAMSのメリット
•管理ポータル画面からサービス側を定義するだけで構築可能
•プロジェクトテンプレートから端末側APのプロトタイプを作成可能
開発スピード
•Azureでサーバ管理の面倒を見てくれる
•Node.jsもしくはWeb APIで開...
まとめ
サーバ側システム(バックエンド)の開発を省力化するBaaS
• バックエンドを短期間で立ち上げられる
• 限られた開発リソースを端末側のアプリ開発により多く充てられる
WAMSでAzureを活用したバックエンドの構築
• Azureのサ...
WAMSその他機能
• プロジェクトテンプレート
• 料金
プロジェクトテンプレート
Node.js .NET
Windows Phone 8 ○ ○
Windows 8.x ストアアプリ ○ ○
iOS ○ ○
Android ○ ー
Web AP(HTML/JavaScript) ○ ー
Xamar...
料金体系
最初の12か月間のみ
1ジョブ
1時間あたり1回
10ジョブ
50,000回
10ジョブ
500,000回
Mobile Service
料金体系
通知ハブ
Upcoming SlideShare
Loading in …5
×

Windows Azure Mobile Servicesによるアプリ構築

1,843 views

Published on

第8回まどべんよっかいちでの発表内容です。Windows Azureのモバイルサービスで提供される機能を紹介しています。

Published in: Mobile
  • Be the first to comment

  • Be the first to like this

Windows Azure Mobile Servicesによるアプリ構築

  1. 1. Windows Azure Mobile Serviceでのアプリ開発 @第8回まどべんよっかいち 2014/3/29 青木 宣明(@kumar0001)
  2. 2. モバイルアプリの開発 • サーバ側システムの開発 • BaaSとは
  3. 3. モバイルアプリ開発の対象 端末側アプ リ • Model • View(ネイティブ or Web) サーバ・ア プリ間通信 •伝送方式 •データ表現 サーバ側シ ステム •データストア •端末側アプリ向けI/F •認証・アクセス権 •プッシュ通知 既存のサービスを使った アプリはここだけでよいが 新しいサービスでは これらの設計・開発 も必要に
  4. 4. サーバ側システム開発の事情 端末側アプリ開発以外にリソースを避 けない事情 • 開発予算が限られている • サーバ側のスキルが不足している • 端末側アプリをリリースできるよう開発に 注力したい • 実験的なサービスのサーバ側システムを素 早く構築したい
  5. 5. 個人的な背景 TODO管理アプリで自分に適したものが見つからない • Win8/WP8端末で同期できることが条件 無ければ自分で作ってしまおうか? • 端末間の同期を考えるとサービスを提供するサーバがほしい • モバイル端末だけでは複雑な処理ができないので、なおさら必要 でも、サーバ側を構築する余力がない • Webサービス、データベースの経験が浅い • モバイル端末側のAP開発で手がいっぱい
  6. 6. Baas サーバ側システム開発の省力化 モバイルアプリのサーバ側システムを 構築するためのサービス • Backend As A Serviceの略 • 主要機能を手軽に実装できるサービスを提 供する BaaSを使えばとりあえずサーバ側のプロトタイプを 作成して、端末側アプリに注力できるのでは?
  7. 7. BaaSの主な提供機能 BaaS 認証 • SNSアカウント認証を ベースとした認証 • Twitter・Facebookなど ストレージ • サーバ側にデータを格納 アクセス制御 • 認証結果にょるストレー ジアクセスの制御 プッシュ通知 • サーバから端末に通知
  8. 8. BaaSとXaaS ユーザ準備範囲 ベンダー提供範囲 AP ミドルウェア OS ハードウェア SaaS PaaS AP ミドルウェア OS ハードウェア IaaS AP ミドルウェア OS ハードウェア BaaS AP ミドルウェア OS ハードウェア モバイルアプリのプラット フォームとしてPaaSにあたる 役割を担う
  9. 9. BaaSのメリット 開発スピード • データ管理、認証を出来合いの機能で実現できる • サーバ構築の過程が不要 サーバサイド開発の省力化 • サーバ管理のコストを十分にさけなくてもよい • サーバ構築のコストが不要
  10. 10. BaaSのデメリット カスタマイズの限界 • BaaSの提供機能が、機能拡張に不十分な場合がある ベンダーロックイン • ベンダーの提供機能に制約されるため、自前サーバや他BaaS への移行が困難 セキュリティ対策 • 認証などセキュリティ機能が基本的な機能に限定される
  11. 11. Windows Azure Mobile Service (WAMS)とは • 概要 • 主要機能
  12. 12. Windows Azure Mobile Serviceとは Windows Azureが提供するBaaS • バックエンドの主要機能を手軽に構築 • Azureの各機能の利用 通知ハブ、ストレージ、メール送信など • マルチプラットフォームに対応 WP8やWin8ストアアプリだけではない
  13. 13. 2種類のバックエンド 2種類のバックエンド処理の定義方法 • Node.js版 node.jsライブラリを使ったバックエンド処理 言語はjavascript • .NET版 ASP.NET Web APIを使ったバックエンド処理 言語はC#もしくはVB.NET .NET版は2014/2に プレビュー提供
  14. 14. 主要機能 1. 認証 2. ストレージ・アクセス権 3. カスタムAPI 4. プッシュ通知 その他 • Gitでの変更管理 • スケジュール実行 • ロギング • スケーリング • プロジェクトテンプレート
  15. 15. (1)認証 外部の認証プロバイダによる認証機能 • Microsoft Account • Facebook • Twitter • Google • Windows Azure Active Directory 管理ポータル画面に必要な情報を設定 するだけでよい
  16. 16. 認証の設定画面
  17. 17. 認証画面の追加
  18. 18. (2)ストレージ・アクセス権 Node.js • 管理ポータル画面 or Visual studioでテーブルを定義 • クライアントからテーブルのCRUD用APIでアクセス • テーブルのCRUD操作ごとのアクセス権限を設定 .NET版 • ASP.NET Web APIとしてAPIを定義⇒モバイルサービスに配備 • Web APIから任意のストレージを利用 • クライアントからWeb APIにアクセス
  19. 19. テーブル定義 (Node.js版) 管理ポータル画面から
  20. 20. テーブル定義 (Node.js版) Visual Studioから
  21. 21. テーブル定義 (Node.js版) • 作成後のテーブル は基本の列だけ • id • __createdAt • __updatedAt • __version • Insert/Updateしたと きにJSONオブジェ クトに応じて動的 に列を作成
  22. 22. テーブル定義 (Node.js版) 列の動的作成 • モバイルサービスのDynamic Schema機 能をオフにすることで抑止
  23. 23. APIアクセス (Node.js版) IMobileServiceTable<T>インター フェースを使ってAPIにアクセス • OData形式のRESTサービスとしてアクセ スする 問い合わせ系 検索系 追加・更新 削除 Read Select Insert Delete Lookup Skip Update Take ThenBy ThenByDescending OrderBy Where
  24. 24. アクセス権 権限 意味 すべてのユーザ URLにアクセスすれば誰でもアクセス可 能 アプリケーションキーを持つ すべてのユーザ APごとのキーをHTTPヘッダ(*)に指定し た通信について許可される。 IMobileServiceTableによるアクセスで自動 的に設定される。 (*) X-ZUMO-APPLICATION 認証済みユーザのみ 認証トークンをHTTPヘッダ(*)に指定した 通信について許可される。 (*) X-ZUMO-AUTH スクリプトと管理者のみ 内部のスクリプトからのアクセス、もし くは管理者としてのアクセス(*)の場合に 許可される。 (*) X-ZUMO-MASTERヘッダ
  25. 25. アクセス権(Node.js版) 管理ポータル画面から
  26. 26. アクセス権(Node.js版) Visual Studioから
  27. 27. .NET版では テーブル定義 カスタムAPI定義 Node.js版 .NET版 .NET版ではテーブル定義とカスタムAPI定義がない
  28. 28. ASP.NET Web API (.NET版) Web APIプロジェクトを作成 コントローラクラスにCRUD操作に対 応したHTTP verb毎にメソッドを定義 Web API Windows Azure Mobile Service • POST • GET • PUT / PATCH • DELETE
  29. 29. Controllerクラス
  30. 30. Web APIのデプロイ 2通りの方法 • Visual Studioから配備 • GitでプロジェクトをPush
  31. 31. Visual Studioから配備
  32. 32. Visual Studioから配備
  33. 33. GitでプロジェクトをPush ソリューションのフォルダで実施 git init wget http://www.gitignore.io/api/visualstudio mv visualstudio .gitignore git add . git commit –m “comment” git remote add origin https://madoben201403-net.scm.azure- mobile.net/madoben201403-net.git git push origin master
  34. 34. Git Pushでの更新例
  35. 35. APIアクセス (.NET版) IMobileServiceTable<T>インター フェースを使ってAPIにアクセス • OData形式のRESTサービスとしてアクセ スするのはnode.js版と同じ 問い合わせ系 検索系 追加・更新 削除 Read Select Insert Delete Lookup Skip Update Take ThenBy ThenByDescending OrderBy Where
  36. 36. アクセス権(.NET版) メソッドごとに 変更も可能
  37. 37. (3)カスタムAPI Node.js版 • サーバスクリプト:テーブル操作をカスタマイズ • カスタムAPI:独自のAPIを定義 • どちらもjavascriptで記述 .NET版 • Web APIを作成するため、処理内容は自由
  38. 38. サーバスクリプト (Node.js版) CRUD操作に対応したスクリプト • 各APIをカスタマイズして、各操作の処理 内容を変更できる データ検証など API Windows Azure Mobile Service • Insert • Read • Update • Delete 例 • 端末からのデータの検証 • 独自のアクセス制限
  39. 39. カスタムAPI (Node.js版) 新しくAPIを定義できる • テーブル操作に基づかないデータ操作 • 複合的な処理をサーバ側で実装して、端末側APで 複雑な処理を行わない CRUD操作に対応したHTTP verb毎にスクリ プトを定義 API Windows Azure Mobile Service • POST • GET • PUT / PATCH • DELETE 端末側からは InvokeAPIAsyncメソッドで 呼び出す
  40. 40. 複数テーブルへの問い合わせ IMobileServiceTable<T>インター フェースにはjoin系のメソッドがない • 複数の表を結合する操作はサーバ側で実装 して、カスタムAPIを通して端末側から利 用させる API Windows Azure Mobile Service • POST • GET • PUT / PATCH • DELETE 端末側はサーバ側の 処理結果を利用する だけに留めるテーブルのJOINは サーバ側で実施
  41. 41. (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 ⑤プッシュ通知 ①通知サービスのチャ ネル確立 ④プッシュ通知を要求 ②チャネルを通知 ③通知イベント発生
  42. 42. 従来のプッシュ通知のデメリット WNS/MPNSを使う場合、APIからPNSへのプッシュ通知 要求はプッシュ通知のプラットフォーム毎に行う必要が ある プッシュ通知のプラットフォームが増えるとAPI側のロ ジックを修正する必要がある API Windows Azure Mobile Service ⑤プッシュ通知 ①通知サービスのチャ ネル確立 ④プッシュ通知を要求 ②チャネルを通知 ③通知イベント発生 WNS ⑤プッシュ通知 ①通知サービスのチャ ネル確立 ②チャネルを通知MPNS
  43. 43. Notification Hubのメリット Notification Hubを使うと、APIからはHubに1回要求 すればよい。 各プッシュ通知プラットフォームへの通知要求は Notification Hubが行う。 • スケーリングにもハブ側で対応できる。 API Windows Azure Mobile Service ⑥プッシュ通知 ①通知サービスのチャ ネル確立 ④プッシュ通知を 要求 ②チャネルを通知 ③通知イベント発生 WNS ⑥プッシュ通知 ①通知サービスのチャ ネル確立 ②チャネルを通知MPNS 通知ハブ ⑤プッシュ通知を 要求
  44. 44. WAMSのメリット •管理ポータル画面からサービス側を定義するだけで構築可能 •プロジェクトテンプレートから端末側APのプロトタイプを作成可能 開発スピード •Azureでサーバ管理の面倒を見てくれる •Node.jsもしくはWeb APIで開発できるので、参考情報が多い •スケーリングにも対応しやすい サーバサイド開発の省力化 •.NETバックエンドであればデプロイし直せば済むはず •Node.jsバックエンドのデータベースはSQL Serverなので、データ移 行も容易 自前サーバへの移行が容易
  45. 45. まとめ サーバ側システム(バックエンド)の開発を省力化するBaaS • バックエンドを短期間で立ち上げられる • 限られた開発リソースを端末側のアプリ開発により多く充てられる WAMSでAzureを活用したバックエンドの構築 • Azureのサービス、スケーラビリティを利用できる • バックエンドはNode.js/ASP.NET Web APIで開発できるので、既存の ノウハウを応用できる
  46. 46. WAMSその他機能 • プロジェクトテンプレート • 料金
  47. 47. プロジェクトテンプレート Node.js .NET Windows Phone 8 ○ ○ Windows 8.x ストアアプリ ○ ○ iOS ○ ○ Android ○ ー Web AP(HTML/JavaScript) ○ ー Xamarin ○ ー PhoneGap ○ ー
  48. 48. 料金体系 最初の12か月間のみ 1ジョブ 1時間あたり1回 10ジョブ 50,000回 10ジョブ 500,000回 Mobile Service
  49. 49. 料金体系 通知ハブ

×