nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

0円から始めるXamarin.Forms & Azure Mobile Apps でHello, World. (2)

そもそもAzure Mobile Appsとは、mBaaSの一種でモバイルアプリを構築する。。。って意味わかんねぇよ!ってなりません?w
さぁ、「0円から始めるXamarin.Forms & Azure Mobile Apps でHello, World.」の第2回の始まりです。

いやまあ、冒頭の話ですが、言葉の意味は分かりますよ、さすがに。

ただ、自分は基本オンプレミスで業務アプリ作ってる事が多いせいか、いまいちピンとこないんですよね。
特にAzureでは多彩なサービスが提供されているので、初めてAzureを始めようとした人は迷子になると思うんですよね。
どれがどの役割で、サービス間の関係ってどうなってて、課金体系はどうなっての!って。
てか、私はなりました。。。

Azureはサービスのアップデートも早くって、例えばMobile Appsも去年の年末まで?はMobile Servicesって似たのがあって、情報が混在しているせいで余計にそれに拍車をかけている気がします。
初心者に優しくないんす。

某Xamarinハンズオン(XLSoftさんのじゃないです)にも実は参加させてもらったのですが、手順だけ追ってAzureサービス作らされて「はい!動いた~」ってやってるだけなんで、全然理解できねぇよって、私だけですかね?

なので、実際にMobile Appsの設定をする前に、今回はAzure側で「何を作るのか」を説明したいと思います。

レイヤーアーキテクチャについて

いきなり話がぶっ飛ぶんですが、モバイルデバイスでサーバサイド連携のあるシステム(アプリ)を構築したとする場合、そのアーキテクチャは一般的なレイヤーアーキテクチャに置き換えて考えると、クラウド初心者でもわかりやすいかもしれません。

以下は、Microsoftの公開している「アプリケーションアーキテクチャガイド」から抜き出した一般的なレイヤーモデルです。

f:id:nuitsjp:20160318121631p:plain

引用もとはこちら。
非常に参考になるので、.NETエンジニアであれば(ではなくても、アーキテクトであれば)一度は読んでほしいです。
0円だしな!

msdn.microsoft.com

上の図を大雑把に説明すると以下の流れになります。

  1. ユーザはプレゼンテーションレイヤーと対話します。
  2. プレゼンテーションレイヤーは、ビジネスロジックを実行するため、ビジネスレイヤーを呼び出します。
  3. ビジネスレイヤーは永続データの取得や、データの永続化の際、データレイヤーを呼び出します。
  4. データレイヤーは永続データの取得や、データの永続化のために、データソース(DB)へ働きかけます。

これをMobile Appsと関係なく、モバイルデバイス一般の形に置き換えるとこんな感じになるでしょうか?

f:id:nuitsjp:20160318123040p:plain

プレゼンテーションレイヤーからバックグラウンドの呼び出しはインターネットを経由してサービスレイヤーを呼び出します。
リモート接続の仲介をサービスレイヤーが実施して、ビジネスレイヤーを呼び出します。
もっとも.NETの場合、サービスレイヤーはWCFでビジネスのインターフェースを公開するだけなんていう、実態のほとんどない(Thin)なレイヤーになりそうですけど。

レイヤーアーキテクチャでモバイルアプリを構築したら誰がやってもこんな感じになるのではないでしょうか?

さて、それではAzureを利用した場合どうなるでしょうか?

Azureを利用したモバイルアプリケーション開発におけるレイヤーモデル

これは私の勝手な解釈なので、間違っていたりするかもしれませんが、多めに見てください。
あくまで私がわかりやすく書いたらこうなるという図です。
それとあくまでサーバサイドを.NETで開発する場合です。
Node.jsとかはよくわかりません。

f:id:nuitsjp:20160318125919p:plain

まず、バックグラウンド全体の構築先はAzure上にとなります。
この連載?で使う、Azureのサービスは以下の3つになります。
1. Mobile Apps
2. SQL Database
3. Notification Hub

モバイルアプリは、AzureのMobile Apps上に構築されたサービスレイヤーを呼んで・・・
動きは他と変わりませんので割愛します。
上記の3つの簡単な説明と、公式へのリンクを張っておきますね。

Mobile Apps

Mobile Appsは、開発者の作成するサーバーサイドプログラム全体を動作させるためのプラットフォームみたいなものです。
実際のところ、Mobile Apps上で開発するのは、皆さんがASP.netとして開発しているWebアプリケーションとそんなに変わりません。
ASP.netのWebアプリケーションを素で使って作るより、モバイル向けのサービス構築が楽にできるよう、拡張機能がいくつか提供されていると考えれば、そう遠くない気がします。(偉い人に怒られそうですが。。。)

azure.microsoft.com

SQL Database

Azure用のSQL Serverです。
実際、クラウドなのでスケールが容易といった特徴はあるでしょうが、機能的にはSQL Serverとそんなに違いがないようです。
ネットワークの条件が許せば、SQL Server Management Studioから普通につなげます。

azure.microsoft.com

こいつだけ、料金プランを見ると無料コースがないように見えますが、安心してください。
ちゃんと無料プランありますので、それは次回以降説明します。
大丈夫、大丈夫、まだ私のカードから引き落としはありません。

Notification Hub

iPhoneAndroidWindows MobileWindowsなどに通知を行うためのサービスです。
通知の実装を楽に、動作を拘束にといった特徴があります。

azure.microsoft.com

さいごに

とりあえず今回は以上になります。 次回は実際にMobile Apps上にサービス構築をしたいと思います! ではまた。