ASP.NET の開発者が Azure Mobile Services に関心を持つべき理由
このポストは、7 月 11 日に投稿した Azure Mobile Services: why should ASP.NET developers care? の翻訳です。
Azure Mobile Services (英語) では、モバイル開発者は、クラウドでホストされたバックエンドをターンキー型の手法でアプリに追加できます。現在このサービスは、ASP.NET Web API を使用したバックエンド ロジックの記述を完全にサポートしています。Mobile Services には、ASP.NET でモバイル対応の API を構築する開発者向けに、次のような魅力的な機能が用意されています。
- クライアント SDK による、 あらゆるモバイルプラットフォームで利用できるターンキーバックエンド : Mobile Services では、すべての機能を備えたバックエンドを iOS、Android、Windows、Windows Phone、または HTML アプリにすばやく追加できます。また、Xamarin、Sencha、PhoneGap などのクロスプラットフォームのフレームワークを使用することも可能です。これらの各プラットフォームに対応するクライアント SDK が提供されているので、開発者はクラウドでホストされたバックエンドに各自のアプリケーションを簡単に接続できます。
- ご利用のモバイル API に適したトップクラスのホスティング : Mobile Services は Web API を使用して構築され、開発者はあらゆる Web API コントローラーをサービスに公開できます。Mobile Services と他のコンピューティング環境との違いは、マイクロソフトがお客様に代わって Web API コントローラーを監視および管理していることです。Web API ランタイムまたは拡張機能に問題があれば、マイクロソフトが修正プログラムを適用するので心配はご無用です。また、問題がお客様のコントローラーのコードに関係すると考えられる場合はご連絡いたします。
- 高付加価値のモバイルバックエンド機能 : Mobile Services には、数多くの機能がありますが、これらの機能はお客様の Web API ですぐにご利用いただけます。機能の例として、モバイル プッシュ通知、SignalR によるリアルタイム通知 (自動スケール アウト) 、お客様のコンシューマー アプリで利用できるソーシャル認証、一時的な接続シナリオでのオフライン データ同期などがあります。
- 企業向けシステムへの接続 : アプリの利用者が Active Directory を使用してログインできる機能や、SharePoint や Office 365 などの企業資産にアクセスできる機能が利用できる点は、企業の開発者の方にとっては価値のあることでしょう。さらに、オンプレミス環境の資産へのシームレスな接続が実現されているので、インターネット上に公開されていないデータベースおよび Web サービスへのアクセスが可能です。
- Visual Studio との統合: 普段使用している IDE に、Mobile Services 向けの専用のプロジェクト テンプレートおよびスキャフォールディングが含まれています。さらに、公開とリモート デバッグに関する最高レベルのサポートを提供しています。
クライアント SDK による、あらゆるモバイル プラットフォームで利用できるターンキー バックエンド
任意の環境で、容易に Mobile Services の利用を開始できます。いつものように Microsoft Azure 管理ポータルにアクセスし、Mobile Services を新たに作成します。ウィザードの最初の画面で、バックエンドに [.NET] を選択します。サービスを作成したら、[Quickstart] タブへと進み、対象とするクライアント プラットフォームのスターター プロジェクトをダウンロードします。
Visual Studio で利用を開始したい場合には、まずローカル プロジェクトを作成します。Mobile Services は、後でプロジェクトを公開するときに作成できます。ただし、この方法には Visual Studio 2013 Update 2 以降が必要です。
どちらの方法でも、Mobile Services .NET テンプレート プロジェクトを取得します。なおこれは、追加の NuGet パッケージがほとんど使用されていない Web API プロジェクトです。
TodoItemController.cs コントローラー ファイルを開いて内容を確認します。GetAllTodoitems() メソッド内にブレークポイントを設定します。このコントローラーは、Mobile Services .NET サポートを使用してデータを扱う方法を示しています。
public class TodoItemController : TableController<TodoItem>
{
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
csharp_testContext context = new csharp_testContext();
DomainManager = new EntityDomainManager<TodoItem>(context, Request, Services);
}
// テーブルの取得/TodoItem
public IQueryable<TodoItem> GetAllTodoItems()
{
return Query();
}
// テーブルの取得/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public SingleResult<TodoItem> GetTodoItem(string id)
{
return Lookup(id);
}
// テーブルの修正/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
{
return UpdateAsync(id, patch);
}
// テーブルの作成/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
TodoItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
// テーブルの削除/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task DeleteTodoItem(string id)
{
return DeleteAsync(id);
}
}
ここで既に、TodoItem リソースで使用できるすべての主要な CRUD メソッドをスキャフォールディングしています。お気付きかと思いますが、このコントローラーは、既定で EntityDomainManager を使用しています。これは、Entity Framework モデルの上部にあるシン ラッパーです。代わりに次のデータ ストアを使用するように切り替えるのも簡単にできます。
- MongoDB: WindowsAzure.MobileServices.Backend.Mongo (英語) NuGet パッケージから、MongoDomainManager を使用します。詳しくは、こちらのブログ記事 (英語) を参照してください。
- Azure Table Storage: WindowsAzure.MobileServices.Backend.Storage (英語) NuGet パッケージから StorageDomainManager を使用します。詳細については、こちらのチュートリアル (英語) を参照してください。
Mobile Services .NET サポートを利用すると、Mobile Services バックエンドをローカルで実行して、バックエンド ロジックをデバッグできます。F5 キーをクリックして、既定のページで [try it out] を選択します。ご期待どおり、Mobile Services .NET サポートには、ご利用の Web API 用のヘルプ ページが含まれます。 [GET tables/TodoItem] をクリックして、メソッド ドキュメントとテスト クライアントを呼び出します。[try this out] リンクをクリックし、次に [send] をクリックして GetAllTodoItems() メソッドを呼び出します。ご想像のとおり、先ほど設定したブレークポイントで停止します。
バックエンド API の開発が終わったら、Web API を Mobile Services に公開できます。公開のサポート機能が Visual Studio に組み込まれているので、操作はプロジェクトを右クリックして [Publish] を選択するだけです。既存の Mobile Services を選択するか、または Visual Studio で直接新規に作成できます。このとき Azure ポータルに移動する必要はありません。
既存の Web API ソリューションはいずれも Mobile Services に公開可能で、Web API の管理およびモニタリングをすばやく Azure に移行することができます。
Mobile Services .NET サポートの詳細については、次のチュートリアルを参照してください。
- Mobile Services .NET の利用を開始する (英語)
- Mobile Services .NET でデータの利用を開始する (英語)
- Mobile Services .NET で認証の利用を開始する (英語)
- Mobile Services .NET でプッシュ通知の利用を開始する (英語)
ご利用のモバイル API に適したトップ クラスのホスティング
経験のある Web API 開発者なら、API を Mobile Services に公開して、どんな付加価値が得られるのだろうかかと疑問に感じていらっしゃるかもしれません。何しろ、Web API を Azure とオンプレミスの両方でホストする簡単な方法はたくさんあります。では、Mobile Services により無料で利用できる、付加価値のある機能を見ていきましょう。次のようなものがあります。
- 監視と診断: Mobile Services では、インストルメンテーションと監視の機能に支えられた 99.9% の SLA を提供しています。これらの機能は、API の正常な実行を維持するために組み込まれているものです。マイクロソフトは、提供する有料のサービス レベルにおいて、サービスの HTTP トラフィックおよび SQL 接続を監視し、エラーの発生率が高くなり始めたらお客様にご連絡いたします。これは、エンドポイントの監視およびアラートを始めとする、さまざまな優れたセルフサービス型機能に加えて提供されています。
- 修正プログラムの自動適用: マイクロソフトは、毎週新しいコードをホスティング環境にデプロイしています。お客様がご利用のアプリをデプロイし直す必要はありません。修正される不具合が Mobile Services のランタイムに関するものなのか、Azure の依存関係に関するものなのか、または、新機能に関するものなのかに関わらず、お客様の Mobile Services に展開される変更は、サービスを中断することなく、透過的に行われます。もちろん、マイクロソフトは大幅な変更のデプロイは行いません。行われる変更はすべて、下位互換性が確保されています。
- クラウド資産の自動プロビジョニング: お客様が Mobile Services を作成する際に、お客様のサービス用の SQL Database と通知ハブ (マイクロソフトのプッシュ通知エンジン) のプロビジョニングおよび構成をマイクロソフトが行い、すべての関連する接続文字列が構成済みであることを確認します。さらに、スケジュールされたジョブとハイブリッド接続 (オンプレミス接続の場合) の作成は、クラウド環境でほんの数クリックで簡単に行うことができます。Mobile Services は、ご利用のサービスに適切なすべての関連クラウド資産へ接続する、動作の速いゲートウェイを提供します。
高付加価値のモバイル バックエンド機能
Mobile Services を使用したアプリの開発を始めれば、数多くの必要な機能をすぐに利用できることに気付かれるでしょう。これにより、製品化に要する時間を大幅に短縮できます。次のような機能がすぐにご利用いただけます。
- ターンキー型の認証: Mobile Services には、一般的なほとんどの認証シナリオで必要な、すべてのクラウド資産およびフレームワーク コードが含まれています。Microsoft アカウント、Facebook、Twitter、または Google を利用したソーシャル ログイン、および AAD を利用したエンタープライズ ログインを容易に有効化できます。フレームワークの構成に必要なものがすべて揃っているため OAuth の専門家になる必要がなく、構成設定をいくつか指定するだけで、後の作業は Mobile Services に任せておけます。詳しくは、こちらのチュートリアル (英語) を参照してください。
- 拡張性の高いプッシュ通知: Mobile Services は、クラウドでホストされたプッシュ エンジンを備えています。これにより、主要なデバイス プラットフォーム (Windows、iOS、Android、Kindle) すべてにわたる、大量の通知を送信できます。必要なのは、接続されている無数のデバイスへと通知を行う API を 1 つ呼び出すことだけです。また、タグ付けとタグ式がサポートされるているので、ユーザーを容易に区分できます。他にも、デバイス上で通知のカスタマイズを可能にするテンプレートもサポートされます。詳しい手順については、こちらのドキュメント (英語) を参照してください。
- オフライン同期: 現在お客様から、ネットワーク接続が利用できないときでもモバイル アプリの動作を継続させたいという要望をいただいています。Mobile Services では、主要なクライアント プラットフォームすべてにわたって、組み込み型のオフライン SQLite ベースの同期をサポートしています。詳しくは、こちらのページ (英語) をご覧ください
- リアルタイム: プッシュ通知機能は、お客様のアプリに対する顧客エンゲージメントの強化に効果的ですが、お客様のアプリで拡張性に優れた、高帯域幅かつ低レイテンシの接続を提供するには、別のツール セットが必要です。Mobile Services では、WebSocket および SignalR に基づく、組み込み型のリアルタイム サポートを提供します。これにより、お客様のアプリとの双方向のメッセージングが可能になります。このサービスには、組み込み型のメッセージ バス (バックプレーン) が含まれており、お客様のアプリの拡張に伴い、シームレスにスケールアウトできます。また、お客様が利用するその他のサービスと同じ認証パイプラインとの統合により、ユーザーの認証および承認が容易です。詳しくは、こちらのブログ記事 (英語) を参照してください。
企業向けシステムへの接続
.NET は、企業で一般的な選択肢となるプラット フォームです。そのためマイクロソフトでは、.NET 言語をサポートすることで、ビジネス アプリケーションの開発者を支援できる数多くのシナリオを推進してきました。こちらのページでは、詳しい情報と動画を参照できます。
- Active Directory ログインおよび代理アクセス機能: 企業向けシナリオでは、ドメイン ID を使用してアプリ ユーザーをログインできるようにすることは重要な要件です。これにより、アカウント ライフタイムの管理をシンプルに行え、また SharePoint Online や Office 365 などの Active Directory によって保護されているクラウド資産にユーザーがアクセスできるようになります。Active Directory 認証に対応するアプリの構成に関する詳細は、こちらのチュートリアル (英語) を参照してください。代理アクセスの構成方法については、こちらの動画 (英語) をご覧ください。
- オンプレミス接続: データベースや Web サービスなどの一部の企業資産は、機密データが含まれているため、またはクラウドに移行できない他の理由のために、オンプレミスで保持する必要があります。それでも、「ハイブリッド接続」機能を通じて、これらの資産を Mobile Services で活用することは可能です。これにより、オンプレミスのトラフィックをクラウドに中継できます。こちらの動画による説明 (英語) およびチュートリアル (英語) を参照してください。
- Xamarin SDK: Xamarin では、クライアント側のフレームワーク、および C# を使用してクロスプラットフォームのアプリ (Android、iOS など) を作成できるツールセットを提供します。他のプラットフォームで培ったスキルを応用できるので、マイクロソフト製品に慣れた開発者は効率的に開発を行えます。Mobile Services では、Xamarin ベースのアプリ構築に役立つ SDK と優れたリソース (英語) を利用できます。
- アクセラレータ: 利用を開始する際に良い参考となる実装例がある場合は、シナリオの実装を検討するのが最も簡単な方法です。チームは最近、一連の「アクセラレータ」の構築に注力してきました。これは、一般的なユーザーの業界のニーズを満たし、Mobile Services を使用した対処方法を示す、洗練されたアプリです。これらのアプリは Windows ストアで公開され、ソース コードを使用または変更することができます。詳細については、こちらのページ (英語) を参照してください。現在のところ、2 つのアクセラレータ (フィールド エンジニアおよび販売員のシナリオ) が利用可能ですが、他のものも間もなく公開される予定です。
Visual Studio との統合
Visual Studio には、上記の機能の他にも Mobile Services の開発およびデバッグに使用できる便利なツールが含まれています。スキャフォールディング機能が利用可能になったので、これを使用してテーブル コントローラー (関連データの格納用)、ユーザー定義コントローラー (任意の HTTP API の構築用)、およびスケジュールされたジョブを作成できます。
また、リモート デバッグがサポートされており、デバッグについても快適なエクスペリエンスを利用できます。操作は、サーバー エクスプローラーで該当の Mobile Services を右クリックし、[Attach Debugger] を選択するだけです。この機能を最大限に活用するために、ぜひお客様のサービス コードのデバッグ ビルドを公開してください。
サーバー エクスプローラーのもう 1 つの優れた機能は「View Logs」コマンドです。これを使用すると、クラウド上の Mobile Services から出力された、エラー メッセージやスタック トレースなどのログを閲覧できます。
マイクロソフトは、この新しい機能群がきっかけとなり、お客様の次のプロジェクトで、Mobile Services をお試しいただけることを願っております。ご不明な点やフィードバックがある場合は、どうぞお気軽に Twitter アカウント @theYavor までお寄せください。