Azure App Service Mobile Apps SDK for Node.js の最新情報
このポストは、1 月 26 日に投稿された Progress update: Node.js SDK for Azure App Service Mobile Apps の翻訳です。
昨年 9 月 (英語)、Azure App Service Mobile Apps SDK for Node.js の最初のアルファ版の提供が開始されました。この SDK は Azure App Service にモバイル バックエンドを実装するコードを簡略化するものであり、提供以来ご活用いただいたコミュニティの皆様からの多数のフィードバックに基づいて、このソリューションの発展に努めてきました。
Yeoman ジェネレーター
特に Node.js で Web アプリケーション開発を行った経験のある方にとっては、単純なモバイル バックエンドを実装するコードの作成はさほど難しいことではありません。しかし、私たちは基本的なスキャフォールディングの生成プロセスをさらに容易にしたいと考えました。Node.js コミュニティは、プロジェクトのスキャフォールディングを生成する Yeoman (英語) という優れたツールを利用しています。今回、このツール用のプラグインをリリースしました。Azure App Service Mobile Apps の新規プロジェクトを設定するには、以下のコードを使用します。
npm install -g yo generator-azure-mobile-apps
mkdir myproject
cd myproject
git init
yo azure-mobile-apps
Mac または Linux システムの場合は、sudo npm install -g
に変更する必要があります。スキャフォールディングされたプロジェクトには、オフライン同期対応のテーブル コントローラー、API、Azure App Service の認証と承認、プッシュ通知登録のサポートが含まれます。
オフライン開発
今回、オフライン開発の構成サポートを追加しました。認証のテストを行う場合には、Azure App Service に認証を設定する必要がありますが、テーブルや API への認証されていないアクセスは、ローカルの開発環境でも実行することができます。そのために、Azure App Service にアップロードする必要はありません。ローカル開発環境の設定方法については、こちらのドキュメントをご確認ください。
アプリの基本テンプレート
開発プロセスの期間中、データベースの準備が完了する前にトラフィックが処理されるケースが、バックエンドの更新中に確認されました。このため、クライアントには 404 または 500 エラー メッセージが返されます。この問題を緩和するために、要求を処理する前にデータベースを初期化する Promise を提供しました。これにより、クライアント側ではエラーの代わりにタイムアウトが発生し、オフライン対応モバイル クライアントの大半は後で再試行します。新しいテンプレートは以下のようになります。
var express = require('express')(),
azureMobileApps = require('azure-mobile-apps');
var mobile = azureMobileApps();
// テーブルからファイルを直接インポートして /tables API を設定
mobile.tables.import('./tables');
// 要求をリッスンする前にデータベースを初期化
// tables.initialize() メソッドにより、初期化が非同期で実行され、
// Promise が返される。
mobile.tables.initialize()
.then(function () {
express.use(mobile); // Azure Mobile Apps ミドルウェアを登録
express.listen(process.env.PORT || 3000); // 要求をリッスン
});
Azure Mobile Apps のホームページ
コミュニティの一部のメンバーからは、Azure Mobile Apps バックエンドにホームページがないことについて、不満の声が挙がっていました。ホームページは以前、意図的に削除されました。というのも、1 つのテーブル コントローラーを使用して、Web とモバイルを組み合わせたアプリケーションを作成できるようになり、そのようなアプリケーションには既にホームページがあるため、バックエンドにはホームページは必要ないと判断したからです。しかし今回、皆様からのご要望に沿えるように、ホームページを元に戻すことにしました。ホームページを利用できるようにするには、以下のようにコード内でホームページを有効にしてください。
var express = require('express')(),
azureMobileApps = require('azure-mobile-apps');
var mobile = azureMobileApps({
homepage: true
});
認証および承認の更新
Azure Mobile Apps SDK for Node.js の最新のリリースでは、Azure App Service の認証および承認サービスが完全にサポートされるようになりました。このサービスでは、ソーシャル ログイン (Facebook、Twitter、Google、Microsoft アカウントなど)、Azure Active Directory、カスタム認証による認証がサポートされます。認証はテーブル単位で設定されます。
var azureMobileApps = require('azure-mobile-apps');
// 新しいテーブル定義を作成
var table = azureMobileApps.table();
// テーブルのオプションを設定
table.dynamicSchema = true;
table.access = 'authenticated';
// テーブル定義をエクスポート
module.exports = table;
tables サブディレクトリに配置されたテーブル定義が mobile.table.imports()
メソッドによって自動的に選択されます。
その他のサンプル
Azure App Service Mobile Apps の GitHub リポジトリ (英語) では、以下のような一般的なシナリオ向けのサンプルをはじめ、多数のサンプルが提供されています。
また、ローカル開発、オフライン同期、認証をサポートする通常の QuickStart バックエンドのサンプルにコメントを追加したバージョン (英語) も提供されています。
ご協力のお願い
現在、この SDK はベータ版として提供されており、皆様にさまざまな形で改善にご協力いただきたいと考えています。GitHub リポジトリ (英語) の会話に参加したり、GitHub の Issues (英語) に問題を報告したり、Gitter (英語) で開発者とチャットしたりと、ご協力いただける方法はいくつもあります。また、お困りの場合は、Stack Overflow (英語) や MSDN フォーラム (英語) でご質問いただくこともできます。
Azure App Service Mobile Apps の最新情報については、Twitter アカウント (@AzureMobile) をフォローしてください。