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) をフォローしてください。