Windows Azure: モバイル バックエンド開発に対する大幅なアップデート

Posted: 2013/06/15 カテゴリー: Uncategorized
タグ:, , , , , , , ,

今週、クラウドを使うモバイル アプリケーションの開発を大幅に簡素化する、Windows Azureに対するいくつかの素晴らしいアップデートをリリースしました。新機能は、次の通りです:

  • モバイル サービス: カスタムAPIのサポート
  • モバイル サービス: Gitソース管理のサポート
  • モバイル サービス: Node.js NPMモジュールのサポート
  • モバイル サービス: NuGetを介した.NET API
  • モバイル サービスとWebサイト: モバイル サービスとWebサイト向けの、無料の20MB SQLデータベース
  • モバイル通知ハブ: Androidへのブロードキャスト プッシュ通知のサポート

これらの改善すべては利用可能になっており、今すぐ使うことができます (注: いくつかの機能は、まだプレビューです)。これらに関する詳細は、次の通りです。

モバイルサービス: カスタムAPI、Gitソース管理、NuGet

Windows Azureモバイル サービスは、Windows 8、Windows Phone、iOS、Android、HTML5クライアント アプリケーションをサポートするために使えるモバイル バックエンドを、簡単に立ち上げる機能を提供しています。最初のプレビューから、クラウドのデータ テーブルに対するクライアント側CRUD操作の一部として実行されるサーバー側スクリプトで、データ バックエンド ロジックを簡単に拡張できる機能をサポートしていました。

本日のアップデートで、このサポートをさらに拡張し、モバイル サービスのバックエンドからカスタムAPIを作成/公開し、そのAPIをデータ テーブルに関連付ける必要なしに、そのAPIをモバイル クライアントに簡単に公開できる機能を導入します。この機能によって、一連の新しいシナリオが可能になります。これには、SQLデータベース以外のデータ ソース (テーブル サービスやMongoDBなど) を扱う、サード パーティーAPIの呼び出しを仲介する、Windows Azureキュー/サービス バスと統合する、JSONではないカスタム ペイロード (Windowsの定期的な通知 (英語 / 日本語 (機械翻訳)) など) を扱う、(新しいWindows Azure BizTalkサービスなどで) クライアントからのリクエストをオンプレミスのサービスにルーティングする、あるいは単にデータベース操作に対応しない機能を実装する、などの機能が含まれます。カスタムAPIは、(Node.jsを使って) サーバー側JavaScriptで書くことができ、Node.jsのNPMパッケージを使えます。将来、.NETを使って書かれたカスタムAPIのサポートも追加する予定です。

カスタムAPIの作成

既存のモバイル サービスへのカスタムAPIの追加は、非常に簡単です。Windows Azure管理ポータルを使って、モバイル サービスの「API」タブをクリックし、それから「カスタムAPIの作成」ボタンをクリックして、そのモバイル サービス内でカスタムAPIを新規作成できるようになりました:

1

公開したい好きな名前をAPIに与え、それから、そのAPI内で公開されるHTTPメソッドに対して適用したいセキュリティ アクセス許可を選択します。カスタムAPIのHTTP動詞を、すべてのユーザー、有効なアプリケーション キーを持つユーザー、認証されたユーザーのみ、あるいは管理者のみが利用可能になるように簡単に制限できます。あなたがどんなコードも書く必要なしに、モバイル サービスはこれらのアクセス許可を施行します。

2

OKボタンをクリックすると、API一覧に新しいAPIが表示されます。それを選択すると、プレースホルダ―の機能が含まれている既定のスクリプトを編集できます:

3

本日のリリースでは、Node.jsを使ってカスタムAPIを書くことが可能になりました (将来のリリースで、.NETでカスタムAPIを書くことをサポートする予定です)。カスタムAPIのプログラミング モデルは、HTTPリクエストを処理するために関数をエクスポートする、Node.jsのモジュールの慣習に従っています。

この既定のスクリプトは、HTTP POSTリクエストに対する機能を公開しています。GETをサポートするには、単にそれに応じてexport文を変更します。Windows Azure Node.js API (英語 / 日本語 (機械翻訳)) を使って、Windows Azure テーブル ストレージのデータを読み取って返すためのコード例を、次に示します:

4

変更を保存すると、(Windows 8、Windows Phone、iOS、Android、CORSを使うHTML5を含む) モバイル サービスのクライアント アプリケーションから、このAPIを呼び出せるようになります。

.NETと新しいInvokeApiAsyncメソッドを使って、Windowsストア アプリケーションから非同期にこのAPIを呼び出し、XAML内で制御するために、結果をデータ バインドするためのコードを、次に示します:

private async void RefreshTodoItems() {
    var results = await App.MobileService.InvokeApiAsync<List<TodoItem>>("todos", HttpMethod.Get, parameters: null);
    ListItems.ItemsSource = new ObservableCollection<TodoItem>(results);
}

モバイル サービスでは、認証/承認のカスタムAPIへの統合が本当に簡単です。データ リクエストと同様に、カスタムAPIリクエストは、(Microsoftアカウント、Google、Facebook、Twitterの認証プロバイダーとの統合を含む) モバイル サービスに組み込まれた同じ認証/承認サポートを活用できます。また、カスタムAPIリクエストは、カスタムAPIのコードを、プッシュ通知、ログ記録、SQLといったモバイル サービスの他の機能と簡単に統合できます。

新しいカスタムAPIサポートについてさらに学ぶには、新しいチュートリアル (英語 / 日本語 (機械翻訳)) を確認し、今日からアプリにカスタムAPIを追加し始めてください。

モバイル サービス: Gitソース管理のサポート

また、モバイルサービスの本日のアップデートでは、Gitとのソース管理の統合も可能になります。新しいソース管理のサポートは、モバイル サービスの一部としてGitリポジトリを提供し、それには、既存のモバイル サービスのスクリプトやアクセス許可のすべてが含まれています。このGitリポジトリをローカル マシンにクローンし、スクリプトに変更を加え、それからGitを使ってモバイル サービスを運用環境に簡単にデプロイできます。これによって、どの開発者マシン (Windows、Mac、Linux) でも機能する、本当に素晴らしい開発者ワークフローが可能になります。

この新機能を使うには、モバイル サービスのダッシュボードに進み、「ソース管理の設定」リンクを選択します:

5

Windows Azureで初めてGitを有効化する場合、リポジトリにアクセスするために使いたい資格情報を入力するよう促されます:

6

一度構成したら、モバイル サービスの「構成」タブに切り替えると、リポジトリを使うために使えるGit URLが表示されます:

7

好みのコマンドラインからこのURLを使って、リポジトリをローカルにクローンできます:


<blockquote>
  git clone https://scottgutodo.scm.azure-mobile.net/ScottGuToDo.git
  

8

リポジトリのディレクトリ構造を、次に示します:

9

見て分かるように、リポジトリには、いくつかのサブフォルダーを持つ「service」フォルダーがあります。カスタムAPIスクリプトと関連するアクセス許可は、それぞれ.jsファイル、.jsonファイルとして、「api」フォルダーに現れます (.jsonファイルは、エンドポイントのセキュリティ設定のJSON表現を永続化したものです)。同様に、テーブル スクリプトとテーブル アクセス許可は、それぞれ.jsファイル、.jsonファイルとして、「table」フォルダーに現れます。テーブル スクリプトはCRUD操作ごとに別なので、「<テーブル名>.<操作名>.js」という命名規則に従います。最後に、スケジュールされたジョブ スクリプトは「scheduler」フォルダーに現れ、複数のスクリプトで共有されるコードや (APNSフィードバック スクリプトのような) 雑多なものを格納するために便利な場所として、「shared」フォルダーが提供されています。

テーブル サービスのクエリの際に例外が発生する場合に、少しだけ良いエラー処理を行うように、テーブル スクリプトのtodos.jsファイルを修正しましょう:

todos.js

tableService.queryEntities(query, function(error, todoItems){ 
    if (error) { 
        console.error(&quot;Error querying table: &quot; + error); 
        response.send(500); 
    } else { 
        response.send(200, todoItems); 
    }<br />
});

変更を保存し、コマンド ラインに戻って、その変更をコミットし、その変更をモバイル サービスにプッシュします:


<blockquote>
  git add .
  git commit –m &quot;better error handling in todos.js&quot;
  git push
  

10

変更のデプロイが完了すると、その変更はすぐに有効化され、ポータルでその変更が反映されていることも確認できます:

11

この新しいソース管理機能で、Windows Azure管理ポータルの使いやすさを犠牲にすることなく、モバイル サービスをローカルで編集し、アトミックな方法で (複数の変更をまとめて) 変更をプッシュすることを、本当に簡単にしました。

モバイル サービス: NPMモジュールのサポート

また、モバイル サービスの新しいソース管理のサポートによって、モバイル サービスが提供する固定のモジュールを超えて、スクリプトで必要な任意のNode.jsモジュールを追加できます。たとえば、前述の例で、Windows Azureテーブルの代わりにMongoDBを使うよう、簡単に切り替えられます。Windows Azureストアを介して (MongoDBをサービスとして提供している) MongoLabのサブスクリプション (英語 / 日本語 (機械翻訳))を購入するか、または (WindowsかLinuxの) 仮想マシン上に自分で設定することで、MongoDBを設定します。それから、ローカルGirリポジトリの「service」フォルダーに移動し、次のコマンドを実行します:


<blockquote>
  npm install mongoose
  

これによって、モバイル サービス スクリプトにMongooseモジュールが追加されます。追加後は、カスタムAPIスクリプトでMongoDBにアクセスするために、Mongooseモジュールを使用/参照できます:

var mongoose = require('mongoose');
var schema = mongoose.Schema({ text: String, completed: Boolean });

exports.get = function (request, response) {
    mongoose.connect('<MongoDB接続文字列>');
    TodoItemModel = mongoose.model('todoitem', schema);
    TodoItemModel.find(function (err, items) {
        if (err) {
            console.log('error:' + err);
            return response.send(500);
        }
        response.send(200, items);
    });
};

完了したら、変更をモバイル サービスにプッシュすることを忘れないようにします。


<blockquote>
  git add .
  git commit –m &quot;Switched to use MongoLab&quot;
  git push
  

これで、モバイル サービスのアプリがMongoDBを使うようになりました!

本日のアップデートでは、カスタムのNode.jsモジュールの使用は、カスタムAPIスクリプトだけに制限されていることに注意してください。近いうちに、(データやカスタムCRONタスクを含む) すべてのスクリプトでこれを有効化する予定です。

.NET 4.5サポートを含む、新しいモバイル サービスNuGetパッケージ

数か月前、ポータブル クラス ライブラリ (PCL) をベースにした、モバイル サービス クライアントSDKの新しいプレリリース バージョンを発表しました。

本日、この新しいライブラリがモバイル サービス向けの安定した.NETクライアントSDKになり、もはやプレリリース パッケージではなくなったことを発表できて興奮しています。本日のアップデートには、Windowsストア、Windows Phone 7.x、(開発者がASP.NETやWPFのアプリケーションからモバイル サービスを使えるようする) .NET 4.5の完全なサポートが含まれています。

NuGetを介して、このパッケージをインストールして使用できます。

モバイル サービスとWebサイト: モバイル サービスとWebサイト向けの、無料の20MBデータベース

本日から、Windows Azureのすべてのお客様には、Webサイトとモバイル サービスとともに12か月間無料で使える (開発/テストと運用の両方向けの) 無料の20MBデータベースが1つ提供されます。

モバイル サービスやWebサイトの作成時に、単に新しい「無料の20MB SQLデータベースの作成」オプションを選択して、これを活用します:

12

この無料SQLデータベースを、Windows Azureサブスクリプションで提供されている10個の無料Webサイトと10個の無料モバイル サービスとともに使うことも、他の任意のWindows Azure仮想マシン/クラウド サービスから使うこともできます。

通知ハブ: Androidへのブロードキャスト プッシュ通知のサポート

今年、大規模にブロードキャスト プッシュ通知を送信するためのWindows Azureの新機能「通知ハブ」を導入しました (英語 / 日本語 (機械翻訳))。

通知ハブの最初のプレビューでは、iOSとWindowsのデバイスに対してこの機能を使えました。本日、Androidデバイスにもプッシュ通知を送信するための通知ハブの新機能を発表できて興奮しています。

プッシュ通知は、モバイル アプリケーションの重要なコンポーネントです。プッシュ通知がアプリのエンゲージメントと使用を増やすために使われるコンシューマー アプリだけでなく、最新情報が業務上の出来事への社員の応答性を高めるエンタープライズ アプリでも、プッシュ通知は重要です。あらゆる種類のアプリ (モバイル サービス、Webサイト、クラウド サービス、仮想マシン) からデバイスにプッシュ通知を送信するために、通知ハブを使えます。

通知ハブは、次の機能を提供します:

  • クロスプラットフォームのプッシュ通知のサポート。通知ハブは、iOS、Android、Windowsストア アプリにプッシュ通知を同時に送信するための、共通APIを提供します。プラットフォーム固有のフォーマットで、またはプラットフォーム独立の方法で、アプリが通知を送信できます。
  • 効率的なマルチキャスト。通知ハブは、数千、あるいは数百万のデバイスに対する、低い待機時間のプッシュ通知ブロードキャストを可能にするために最適化されています。あなたのサーバー バックエンドが通知ハブに1つのメッセージを送信すると、数百万のプッシュ通知がユーザーに自動的に配信されます。デバイスとアプリは、通知ハブへの登録時に、多数のユーザー別タグを指定できます。タグを事前プロビジョニングしたり破棄したりする必要はなく、タグは、1回のAPI呼び出しで無限のユーザー/デバイスに対してフィルターされた通知を送信する、極めて簡単な方法を提供します。
  • 極めてスケーラブル。通知ハブによって、あなたがアプリケーションのアーキテクチャを再設計したりアプリケーションをシャーディングしたりする必要なしに、数百万のデバイスにリーチできるようになります。Pub/Subルーティング メカニズムによって、極めて効率的な方法で通知をブロードキャストできるようになります。これによって、独自のルーティング インフラストラクチャを構築する必要なしに、数百万のユーザーに通知メッセージをルーティング/配信するのが、信じられないほど簡単になります。
  • 任意のバックエンド アプリから使用可能。通知ハブは、モバイル サービス、Webサイト、クラウド サービス、IaaS仮想マシンのどれであっても、任意のバックエンド サーバー アプリに簡単に統合できます。

Androidにプッシュ通知を送信するように通知ハブを構成するのは、簡単です。Windows Azure管理ポータルで通知ハブを新規作成します (「新規」>「アプリ サービス」>「Service Bus」>「通知ハブ」):

13

それから、https://code.google.com/apis/console を使ってGoogle Cloud Messagingに登録し、APIキーを取得し、通知ハブ管理ページの「構成」タブの「Google Cloud Messaging設定」で、そのキーを貼り付けます:

14

それから、デバイスを通知ハブに登録するために、AndroidアプリのMainActivityクラスのOnCreateメソッドに、次のコードを追加します:

gcm = GoogleCloudMessaging.getInstance(this);
String connectionString = "<リッスン アクセスの接続文字列>";
hub = new NotificationHub("<通知ハブ名>", connectionString, this);
String regid = gcm.register(SENDER_ID);
hub.register(regid, "myTag");

これで、1回のAPI呼び出しで、.NET (またはNode.js、Java、PHP)のバックエンドから、「myTag」タグに登録されたすべてのWindowsストア、Android、iOSのデバイスに対して、通知をブロードキャストできます (たった1回のAPI呼び出しで、登録済みの数百万のクライアントにメッセージを「文字通り」ブロードキャストできます):

var hubClient = NotificationHubClient.CreateClientFromConnectionString( 
                  “<フル アクセスの接続文字列>”, 
                  "<通知ハブ名>");
hubClient.SendGcmNativeNotification("{ 'data' : {'msg' : 'Hello from Windows Azure!' } }", "myTag”);

通知ハブは、数百万のモバイル ユーザーとデバイスにプッシュ通知メッセージを効率的にルーティングすることを可能にする、極めてスケーラブルでクロスプラットフォームのプッシュ通知インフラストラクチャを提供します。通知ハブは、プッシュ通知ロジックを大幅に簡素化し、よりスケーラブルにして、あなたが通知ハブを使ってずっと優れたアプリを構築できるようにします。

MSDN (英語 / 日本語 (機械翻訳) / 日本語 (未アップデート)) で、通知ハブに関してさらに学んでください。

まとめ

前述の機能は利用可能になっており、今すぐ使い始められます (注: いくつかのサービスは、まだプレビューです)。Windows Azureアカウントをすでにお持ちでない場合は、無料評価版に登録して、今日から使い始めることができます。Windows Azure開発者センター (英語 / 日本語 (機械翻訳)) にアクセスして、アプリの構築方法についてさらに学んでください。

関連情報

コメント
  1. […] API 機能を発表 (英語) (翻訳:SATO Naoki ブログ Windows Azure: モバイル バックエンド開発に対する大幅なアップデート を参照ください) […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中