Mobile Apps Node.js SDK の使用方法How to use the Mobile Apps Node.js SDK

この記事では、Azure App Service の Mobile Apps 機能で Node.js バックエンドを使用する方法についての詳細な情報と例を提供します。This article provides detailed information and examples that show how to work with a Node.js back end in the Mobile Apps feature of Azure App Service.

はじめにIntroduction

Mobile Apps は、Web アプリケーションにモバイルに最適化されたデータ アクセス Web API を追加する機能を提供します。Mobile Apps provides the capability to add a mobile-optimized data access Web API to a web application. Mobile Apps SDK は、ASP.NET と Node.js の Web アプリケーション向けに用意されています。The Mobile Apps SDK is provided for ASP.NET and Node.js web applications. この SDK を使用すると、次の処理を実行できます。The SDK provides the following operations:

  • データ アクセスのためのテーブル操作 (読み取り、挿入、更新、削除)Table operations (read, insert, update, delete) for data access
  • カスタム API 操作Custom API operations

どちらの操作も、Azure App Service が許可するすべての ID プロバイダーに認証を提供します。Both operations provide for authentication across all identity providers that Azure App Service allows. このようなプロバイダーには、Facebook、Twitter、Google、Microsoft などのソーシャル ID プロバイダー、エンタープライズ ID のための Azure Active Directory などがあります。These providers include social identity providers such as Facebook, Twitter, Google, and Microsoft, as well as Azure Active Directory for enterprise identity.

各ユース ケースのサンプルは、 GitHub の samples ディレクトリにあります。You can find samples for each use case in the samples directory on GitHub.

サポートされるプラットフォームSupported platforms

Mobile Apps Node.js SDK は、Node の現在の LTS リリース以降をサポートします。The Mobile Apps Node.js SDK supports the current LTS release of Node and later. 現在、最新の LTS バージョンは Node v4.5.0 です。Currently, the latest LTS version is Node v4.5.0. Node の他のバージョンが動作する場合もありますが、サポートされているわけではありません。Other versions of Node might work but are not supported.

Mobile Apps Node.js SDK は、次の 2 つのデータベース ドライバーをサポートしています。The Mobile Apps Node.js SDK supports two database drivers:

  • node-mssql ドライバーは、Azure SQL Database とローカルの SQL Server インスタンスをサポートしています。The node-mssql driver supports Azure SQL Database and local SQL Server instances.
  • sqlite3 ドライバーは、単一のインスタンスでのみ、SQLite データベースをサポートします。The sqlite3 driver supports SQLite databases on a single instance only.

コマンド ラインを使用して基本的な Node.js バックエンドを作成するCreate a basic Node.js back end by using the command line

Mobile Apps Node.js バックエンドはすべて ExpressJS アプリケーションとして開始されます。Every Mobile Apps Node.js back end starts as an ExpressJS application. ExpressJS は、Node.js で使用可能な最も人気のある Web サービス フレームワークです。ExpressJS is the most popular web service framework available for Node.js. 次のように、基本的な Express アプリケーションを作成できます。You can create a basic Express application as follows:

  1. コマンド ウィンドウまたは PowerShell ウィンドウで、プロジェクトのディレクトリを作成します。In a command or PowerShell window, create a directory for your project:

     mkdir basicapp
    
  2. npm init を実行して、パッケージの構造を初期化します。Run npm init to initialize the package structure:

     cd basicapp
     npm init
    

    npm init コマンドでは、プロジェクトを初期化するための一連の質問が示されます。The npm init command asks a set of questions to initialize the project. 次の出力例を参照してください。See the example output:

    npm init の出力

  3. npm リポジトリから express ライブラリと azure-mobile-apps ライブラリをインストールします。Install the express and azure-mobile-apps libraries from the npm repository:

     npm install --save express azure-mobile-apps
    
  4. app.js ファイルを作成して、基本的なモバイル サーバーを実装します。Create an app.js file to implement the basic mobile server:

    var express = require('express'),
        azureMobileApps = require('azure-mobile-apps');
    
    var app = express(),
        mobile = azureMobileApps();
    
    // Define a TodoItem table.
    mobile.tables.add('TodoItem');
    
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);
    
    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
    

このアプリケーションは、単一のエンドポイント (/tables/TodoItem) でモバイルに最適化された Web API を作成します。この Web API は、動的スキーマを使用して基になる SQL データ ストアへの認証されていないアクセスを可能にします。This application creates a mobile-optimized Web API with a single endpoint (/tables/TodoItem) that provides unauthenticated access to an underlying SQL data store by using a dynamic schema. 次のクライアント ライブラリのクイックスタートに従う場合に適しています。It is suitable for following the client library quickstarts:

この基本的なアプリケーションのコードは、 GitHub の basicapp サンプルにあります。You can find the code for this basic application in the basicapp sample on GitHub.

Visual Studio 2015 を使用して Node.js バックエンドを作成するCreate a Node.js back end by using Visual Studio 2015

Visual Studio 2015 には、IDE 内で Node.js アプリケーションを開発するための拡張機能が必要です。Visual Studio 2015 requires an extension to develop Node.js applications within the IDE. まず、 Node.js Tools 1.1 for Visual Studioをインストールします。To start, install the Node.js Tools 1.1 for Visual Studio. インストールが完了したら、Express 4.x アプリケーションを作成します。When you finish the installation, create an Express 4.x application:

  1. [新しいプロジェクト] ダイアログ ボックスを開きます ( [ファイル] > [新規作成] > [プロジェクト] の順にクリックします)。Open the New Project dialog box (from File > New > Project).

  2. [テンプレート] > [JavaScript] > [Node.js] の順に展開します。Expand Templates > JavaScript > Node.js.

  3. [Basic Azure Node.js Express 4 Application] を選択します。Select Basic Azure Node.js Express 4 Application.

  4. プロジェクト名を入力します。Fill in the project name. [OK] を選択します。Select OK.

    Visual Studio 2015 の新しいプロジェクト

  5. npm ノードを右クリックし、 [新しい npm パッケージのインストール] を選択します。Right-click the npm node and select Install New npm packages.

  6. 最初の Node.js アプリケーションを作成した後に、npm カタログの更新が必要になる場合があります。You might need to refresh the npm catalog after you create your first Node.js application. 必要に応じて、 [最新の情報に更新] を選択します。Select Refresh if necessary.

  7. 検索ボックスに「 azure-mobile-apps 」と入力します。Enter azure-mobile-apps in the search box. azure-mobile-apps 2.0.0 パッケージを選択し、 [パッケージのインストール] を選択します。Select the azure-mobile-apps 2.0.0 package, and then select Install Package.

    新しい npm パッケージのインストール

  8. [閉じる] を選択します。Select Close.

  9. app.js ファイルを開き、Mobile Apps SDK のサポートを追加します。Open the app.js file to add support for the Mobile Apps SDK. ライブラリの require ステートメントの下の 6 行目に、次のコードを追加します。At line 6 at the bottom of the library require statements, add the following code:

    var bodyParser = require('body-parser');
    var azureMobileApps = require('azure-mobile-apps');
    

    他の app.use ステートメントの後の約 27 行目に、次のコードを追加します。At approximately line 27 after the other app.use statements, add the following code:

    app.use('/users', users);
    
    // Mobile Apps initialization
    var mobile = azureMobileApps();
    mobile.tables.add('TodoItem');
    app.use(mobile);
    

    ファイルを保存します。Save the file.

  10. アプリケーションをローカルで実行するか (API は http://localhost:3000 で動作します)、Azure に発行します。Either run the application locally (the API is served on http://localhost:3000) or publish to Azure.

Azure Portal を使用して Node.js バックエンドを作成するCreate a Node.js back end by using the Azure portal

Mobile Apps バックエンドは、Azure Portal ですぐに作成できます。You can create a Mobile Apps back end right in the Azure portal. 次の手順を実行するか、モバイル アプリの作成のチュートリアルに従ってクライアントとサーバーをまとめて作成することもできます。You can either complete the following steps or create a client and server together by following the Create a mobile app tutorial. このチュートリアルにはこれらの手順の簡略化されたバージョンが含まれており、プロジェクトの概念の実証に最適です。The tutorial contains a simplified version of these instructions and is best for proof-of-concept projects.

  1. Azure Portal にサインインします。Sign in at the Azure portal.

  2. [+ 新規] > [Web + モバイル] > [モバイル アプリ] の順に選択し、Mobile Apps バックエンドの名前を入力します。Select +NEW > Web + Mobile > Mobile App, and then provide a name for your Mobile Apps back end.

  3. [リソース グループ] で、既存のリソース グループを選択するか、新しく作成します (アプリと同じ名前を使用)。For Resource Group, select an existing resource group, or create a new one (by using the same name as your app).

  4. [App Service プラン] では、既定のプラン (Standard レベル) が選択されています。For App Service plan, the default plan (in the Standard tier) is selected. 別のプランを選択することも、新しいプランを作成することもできます。You can also select a different plan, or create a new one.

    App Service プランの設定により、アプリに関連付けられる場所、機能、コスト、コンピューティング リソースが決まります。The App Service plan's settings determine the location, features, cost, and compute resources associated with your app. App Services プランの詳細と、さまざまな価格レベルおよび目的の場所で新しいプランを作成する方法については、「Azure App Service プランの概要」を参照してください。For more about App Service plans and how to create a new plan in a different pricing tier and in your desired location, see Azure App Service plans in-depth overview.

  5. 作成 を選択します。Select Create. この手順により、Mobile Apps バックエンドが作成されます。This step creates the Mobile Apps back end.

  6. 新しい Mobile Apps バックエンドの [設定] ウィンドウで、 [クイック スタート] > お使いのクライアント アプリ プラットフォーム > [データベースの接続] の順に選択します。In the Settings pane for the new Mobile Apps back end, select Quick start > your client app platform > Connect a database.

    データベース接続のための選択

  7. [データ接続の追加] ウィンドウで、 [SQL Database] > [新しいデータベースの作成] の順に選択します。In the Add data connection pane, select SQL Database > Create a new database. データベース名を入力し、価格レベルを選択して、 [サーバー] を選択します。Enter the database name, choose a pricing tier, and then select Server. この新しいデータベースは再利用できます。You can reuse this new database. 同じ場所に既にデータベースを所有している場合は、代わりに [既存のデータベースの使用] を選択することもできます。If you already have a database in the same location, you can instead choose Use an existing database. 別の場所にあるデータベースを使用することはお勧めしません。このようなデータベースを使用すると、帯域幅コストと待機時間が増加します。We don't recommend the use of a database in a different location, due to bandwidth costs and higher latency.

    データベースの選択

  8. [新しいサーバー] ウィンドウで、 [サーバー名] ボックスに一意のサーバー名を入力し、ログインとパスワードを指定して、 [Azure サービスにサーバーへのアクセスを許可する][OK] の順に選択します。In the New server pane, enter a unique server name in the Server name box, provide a login and password, select Allow Azure services to access server, and select OK. この手順により、新しいデータベースが作成されます。This step creates the new database.

  9. [データ接続の追加] ウィンドウに戻り、 [接続文字列] を選択し、データベースのログインとパスワードの値を入力して、 [OK] を選択します。Back in the Add data connection pane, select Connection string, enter the login and password values for your database, and select OK.

    データベースが正常にデプロイされるまで数分待ってから、次の手順に進んでください。Wait a few minutes for the database to be deployed successfully before you proceed.

[テーブル API の作成][はじめに] ウィンドウに戻り、バックエンド言語として [Node.js] を選択します。Back in the Get started pane, under Create a table API, choose Node.js as your back-end language. [これにより、すべてのサイト コンテンツが上書きされることを確認しました。] のボックスをオンにし、 [TodoItem テーブルを作成する] を選択します。Select the box for I acknowledge that this will overwrite all site contents, and then select Create TodoItem table.

Git を使用して Node.js バックエンド クイックスタート コード プロジェクトをダウンロードするDownload the Node.js back-end quickstart code project by using Git

ポータルの [クイック スタート] ウィンドウを使用して Node.js Mobile Apps バックエンドを作成すると、Node.js プロジェクトが自動的に作成され、サイトにデプロイされます。When you create a Node.js Mobile Apps back end by using the portal's Quick start pane, a Node.js project is created for you and deployed to your site. ポータルでは、テーブルと API を追加し、Node.js バックエンドのコード ファイルを編集することができます。In the portal, you can add tables and APIs, and edit code files for the Node.js back end. また、さまざまなデプロイ ツールを使用してバックエンド プロジェクトをダウンロードすると、テーブルと API を追加または変更した後でプロジェクトを再発行できます。You can also use various deployment tools to download the back-end project so that you can add or modify tables and APIs, and then republish the project. 詳細については、Azure App Service のデプロイ ガイドに関するページを参照してください。For more information, see the Azure App Service deployment guide.

次の手順では、Git リポジトリを使用して、クイック スタート プロジェクトのコードをダウンロードします。The following procedure uses a Git repository to download the quickstart project code:

  1. Git をまだインストールしていない場合はインストールします。Install Git, if you haven't already done so. Git をインストールするために必要な手順は、オペレーティング システムによって異なります。The steps required to install Git vary between operating systems. オペレーティング システム固有の配布とインストールのガイダンスについては、Git のインストールに関するページを参照してください。For operating system-specific distributions and installation guidance, see Installing Git.

  2. バックエンド サイトの Git リポジトリを有効にする方法については、「リポジトリを準備する」を参照してください。See Prepare your repository to enable the Git repository for your back-end site. デプロイ用のユーザー名とパスワードをメモしておきます。Make a note of the deployment username and password.

  3. Mobile Apps バックエンドのウィンドウで、 [Git クローン URL] の設定をメモしておきます。In the pane for your Mobile Apps back end, make a note of the Git clone URL setting.

  4. Git クローン URL を使用して git clone コマンドを実行します。Execute the git clone command by using the Git clone URL. 次の例のように、必要に応じてパスワードを入力します。Enter your password when required, as in the following example:

     $ git clone https://username@todolist.scm.azurewebsites.net:443/todolist.git
    
  5. ローカル ディレクトリ (前の例では /todolist) を参照し、プロジェクト ファイルがダウンロードされていることを確認します。Browse to the local directory (/todolist in the preceding example), and notice that project files have been downloaded. /tables ディレクトリ内にある todoitem.json ファイルを見つけます。Locate the todoitem.json file in the /tables directory. このファイルでは、テーブルに対するアクセス許可を定義します。This file defines permissions on the table. 同じディレクトリ内にある todoitem.js ファイルも見つけます。Also find the todoitem.js file in the same directory. このファイルには、テーブルの CRUD 操作スクリプトが定義されています。It defines the CRUD operation scripts for the table.

  6. プロジェクト ファイルを変更した後、次のコマンドを実行して変更を追加してコミットし、サイトにアップロードします。After you make changes to project files, run the following commands to add, commit, and then upload the changes to the site:

     $ git commit -m "updated the table script"
     $ git push origin master
    

    新しいファイルをプロジェクトに追加する場合は、最初に git add . コマンドを実行する必要があります。When you add new files to the project, you first need to run the git add . command.

一連の新しいコミットがサイトにプッシュされるたびに、そのサイトは再発行されます。The site is republished every time a new set of commits is pushed to the site.

Azure に Node.js バックエンドを発行するPublish your Node.js back end to Azure

Microsoft Azure では、Azure サービスに Mobile Apps Node.js バックエンドを発行するための多数のメカニズムが提供されます。Microsoft Azure provides many mechanisms for publishing your Mobile Apps Node.js back end to the Azure service. これらのメカニズムには、Visual Studio に統合されたデプロイ ツール、コマンドライン ツール、ソース管理に基づく継続的なデプロイ オプションも含まれます。These mechanisms include deployment tools integrated into Visual Studio, command-line tools, and continuous deployment options based on source control. 詳細については、Azure App Service のデプロイ ガイドに関するページを参照してください。For more information, see the Azure App Service deployment guide.

Azure App Service には、バックエンドを公開する前に確認する必要がある Node.js アプリケーションに関する具体的なアドバイスがあります。Azure App Service has specific advice for Node.js applications that you should review before you publish the back end:

アプリケーションのホーム ページを有効にするEnable a home page for your application

多くのアプリケーションは、Web アプリとモバイル アプリの組み合わせです。Many applications are a combination of web and mobile apps. ExpressJS フレームワークを使用すると、2 つのファセットを結合することができます。You can use the ExpressJS framework to combine the two facets. ただし、モバイル インターフェイスのみを実装する場合もあります。Sometimes, however, you might want to only implement a mobile interface. アプリ サービスを確実に稼動させるために、ホーム ページを用意すると便利です。It's useful to provide a home page to ensure that the app service is up and running. ホーム ページを指定するか、一時的なホーム ページを有効にします。You can either provide your own home page or enable a temporary home page. 一時的なホーム ページを有効にするには、次のコードを使用して Mobile Apps をインスタンス化します。To enable a temporary home page, use the following code to instantiate Mobile Apps:

var mobile = azureMobileApps({ homePage: true });

ローカルで開発するときにのみ、このオプションを利用する場合は、この設定を azureMobile.js ファイルに追加します。If you only want this option available when developing locally, you can add this setting to your azureMobile.js file.

テーブル操作Table operations

azure-mobile-apps Node.js Server SDK では、Web API として Azure SQL Database に格納されたデータ テーブルを公開するためのメカニズムが提供されます。The azure-mobile-apps Node.js Server SDK provides mechanisms to expose data tables stored in Azure SQL Database as a Web API. 以下の 5 つの操作が提供されます。It provides five operations:

OperationOperation 説明Description
GET /tables/tablenameGET /tables/tablename テーブルのすべてのレコードを取得します。Get all records in the table.
GET /tables/tablename/:idGET /tables/tablename/:id テーブルの特定のレコードを取得します。Get a specific record in the table.
POST /tables/tablenamePOST /tables/tablename テーブルのレコードを作成します。Create a record in the table.
PATCH /tables/tablename/:idPATCH /tables/tablename/:id テーブルのレコードを更新します。Update a record in the table.
DELETE /tables/tablename/:idDELETE /tables/tablename/:id テーブルのレコードを削除します。Delete a record in the table.

この Web API は OData をサポートし、テーブル スキーマを拡張してオフライン データ同期をサポートします。This Web API supports OData and extends the table schema to support offline data sync.

動的スキーマを使用してテーブルを定義するDefine tables by using a dynamic schema

テーブルを使用する前に、テーブルを定義する必要があります。Before you can use a table, you must define it. 静的スキーマで (スキーマ内の列を定義する場合)、または動的に (SDK が受信要求に基づいてスキーマを制御する場合) テーブルを定義できます。You can define tables by using a static schema (where you define the columns in the schema) or dynamically (where the SDK controls the schema based on incoming requests). さらに、定義に JavaScript コードを追加することで、Web API の特定の側面を制御できます。In addition, you can control specific aspects of the Web API by adding JavaScript code to the definition.

ベスト プラクティスとして、tables ディレクトリ内の JavaScript ファイルに各テーブルを定義し、tables.import() メソッドを使用してテーブルをインポートする必要があります。As a best practice, you should define each table in a JavaScript file in the tables directory, and then use the tables.import() method to import the tables. basic-app サンプルを拡張して、app.js ファイルを次のように調整します。Extending the basic-app sample, you would adjust the app.js file:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Define the database schema that is exposed.
mobile.tables.import('./tables');

// Provide initialization of any tables that are statically defined.
mobile.tables.initialize().then(function () {
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);

    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
});

次のように ./tables/TodoItem.js にテーブルを定義します。Define the table in ./tables/TodoItem.js:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Additional configuration for the table goes here.

module.exports = table;

テーブルでは、既定で動的スキーマが使用されます。Tables use a dynamic schema by default. 動的スキーマをグローバルに無効にするには、Azure Portal で MS_DynamicSchema アプリ設定を false に設定します。To turn off the dynamic schema globally, set the MS_DynamicSchema app setting to false in the Azure portal.

完全な例は GitHub の todo サンプルにあります。You can find a complete example in the todo sample on GitHub.

静的スキーマを使用してテーブルを定義するDefine tables by using a static schema

Web API を使用して公開する列を明示的に定義することができます。You can explicitly define the columns to expose via the Web API. azure-mobile-apps Node.js SDK では、オフライン データ同期に必要なその他の列が指定したリストに自動的に追加されます。The azure-mobile-apps Node.js SDK automatically adds any extra columns required for offline data sync to the list that you provide. たとえば、クイックスタート クライアント アプリケーションには、text (文字列) と complete (ブール値) という 2 つの列を持つテーブルが必要になります。For example, the quickstart client applications require a table with two columns: text (a string) and complete (a Boolean).
このテーブルは、次のように、(tables ディレクトリにある) テーブル定義 JavaScript ファイルで定義できます。The table can be defined in the table definition JavaScript file (located in the tables directory) as follows:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

module.exports = table;

静的にテーブルを定義する場合は、tables.initialize() メソッドを呼び出して起動時にデータベース スキーマを作成する必要もあります。If you define tables statically, you must also call the tables.initialize() method to create the database schema on startup. Web サービスがデータベースの初期化前に要求を処理しないように、tables.initialize() メソッドは promise を返します。The tables.initialize() method returns a promise so that the web service does not serve requests before the database is initialized.

ローカル コンピューター上で開発データ ストアとして SQL Server Express を使用するUse SQL Server Express as a development data store on your local machine

Mobile Apps Node.js SDK には、すぐに利用できるデータを提供する 3 つのオプションが用意されています。The Mobile Apps Node.js SDK provides three options for serving data out of the box:

  • メモリ ドライバーを使用して、非永続ストアの例を提供します。Use the memory driver to provide a non-persistent example store.
  • mssql ドライバーを使用して、開発用の SQL Server Express データ ストアを提供します。Use the mssql driver to provide a SQL Server Express data store for development.
  • mssql ドライバーを使用して、運用環境の Azure SQL Database データ ストアを提供します。Use the mssql driver to provide an Azure SQL Database data store for production.

Mobile Apps Node.js SDK では mssql Node.js パッケージ を使用して、SQL Server Express と SQL Database 両方への接続を確立および使用します。The Mobile Apps Node.js SDK uses the mssql Node.js package to establish and use a connection to both SQL Server Express and SQL Database. このパッケージでは、SQL Server Express インスタンスで TCP 接続を有効にする必要があります。This package requires that you enable TCP connections on your SQL Server Express instance.

ヒント

メモリ ドライバーでは、テスト用の完全な機能セットは提供されません。The memory driver does not provide a complete set of facilities for testing. ローカルでバックエンドをテストする場合は、SQL Server Express データ ストアと mssql ドライバーを使用することをお勧めします。If you want to test your back end locally, we recommend the use of a SQL Server Express data store and the mssql driver.

  1. Microsoft SQL Server 2014 Expressをダウンロードしてインストールします。Download and install Microsoft SQL Server 2014 Express. 必ず、SQL Server 2014 Express with Tools エディションをインストールしてください。Ensure that you install the SQL Server 2014 Express with Tools edition. 64 ビット サポートを明示的に要求した場合を除き、32 ビット版を使用することで実行時のメモリ使用量が少なくなります。Unless you explicitly require 64-bit support, the 32-bit version consumes less memory when running.

  2. SQL Server 2014 構成マネージャーを実行します。Run SQL Server 2014 Configuration Manager:

    a.a. ツリー メニューの [SQL Server ネットワークの構成] ノードを展開します。Expand the SQL Server Network Configuration node in the tree menu.

    b.b. [SQLEXPRESS のプロトコル] を選択します。Select Protocols for SQLEXPRESS.

    c.c. [TCP/IP] を右クリックし、 [有効化] を選択します。Right-click TCP/IP and select Enable. ポップアップ ダイアログ ボックスで [OK] を選択します。Select OK in the pop-up dialog box.

    d.d. [TCP/IP] を右クリックし、 [プロパティ] を選択します。Right-click TCP/IP and select Properties.

    e.e. [IP アドレス] タブを選択します。Select the IP Addresses tab.

    f.f. [IPAll] ノードを見つけます。Find the IPAll node. [TCP ポート] フィールドに、「1433」と入力します。In the TCP Port field, enter 1433.

    TCP/IP 用に SQL Server Express を構成する

    g.g. [OK] を選択します。Select OK. ポップアップ ダイアログ ボックスで [OK] を選択します。Select OK in the pop-up dialog box.

    h.h. ツリー メニューの [SQL Server のサービス] を選択します。Select SQL Server Services in the tree menu.

    i.i. [SQL Server (SQLEXPRESS)] を右クリックし、 [再起動] を選択します。Right-click SQL Server (SQLEXPRESS) and select Restart.

    j.j. SQL Server 2014 構成マネージャーを閉じます。Close SQL Server 2014 Configuration Manager.

  3. SQL Server 2014 Management Studio を実行して、ローカルの SQL Server Express インスタンスに接続します。Run SQL Server 2014 Management Studio and connect to your local SQL Server Express instance:

    1. オブジェクト エクスプローラーでインスタンスを右クリックし、 [プロパティ] を選択します。Right-click your instance in Object Explorer and select Properties.

    2. [セキュリティ] ページを選択します。Select the Security page.

    3. [SQL Server 認証モードと Windows 認証モード] が選択されていることを確認します。Ensure that SQL Server and Windows Authentication mode is selected.

    4. [OK] を選択します。Select OK.

      SQL Server Express 認証の構成

    5. オブジェクト エクスプローラーで [セキュリティ] > [ログイン] の順に展開します。Expand Security > Logins in Object Explorer.

    6. [ログイン] を右クリックし、 [新しいログイン] を選択します。Right-click Logins and select New Login.

    7. ログイン名を入力します。Enter a login name. [SQL Server 認証] を選択します。Select SQL Server authentication. パスワードを入力し、 [パスワードの確認入力] に同じパスワードを入力します。Enter a password, and then enter the same password in Confirm password. パスワードは、Windows の複雑さの要件を満たしている必要があります。The password must meet Windows complexity requirements.

    8. [OK] を選択します。Select OK.

      SQL Server Express に新しいユーザーを追加する

    9. 新しいログインを右クリックし、 [プロパティ] を選択します。Right-click your new login and select Properties.

    10. [サーバー ロール] ページを選択します。Select the Server Roles page.

    11. dbcreator サーバー ロールのチェック ボックスをオンにします。Select the check box for the dbcreator server role.

    12. [OK] を選択します。Select OK.

    13. SQL Server 2015 Management Studio を閉じます。Close SQL Server 2015 Management Studio.

選択したユーザー名とパスワードは必ずメモしておきます。Be sure to record the username and password that you selected. データベース要件によっては、他のサーバーの役割またはアクセス許可の割り当てが必要になる場合があります。You might need to assign additional server roles or permissions, depending on your database requirements.

Node.js アプリケーションは、SQLCONNSTR_MS_TableConnectionString 環境変数を読み取って、このデータベースの接続文字列を確認します。The Node.js application reads the SQLCONNSTR_MS_TableConnectionString environment variable for the connection string for this database. ご使用の環境にこの変数を設定できます。You can set this variable in your environment. たとえば、PowerShell を使用して、以下のようにこの環境変数を設定することができます。For example, you can use PowerShell to set this environment variable:

$env:SQLCONNSTR_MS_TableConnectionString = "Server=127.0.0.1; Database=mytestdatabase; User Id=azuremobile; Password=T3stPa55word;"

TCP/IP 接続を介してデータベースにアクセスします。Access the database through a TCP/IP connection. 接続に使用するユーザー名とパスワードを入力します。Provide a username and password for the connection.

ローカル開発用のプロジェクトを構成するConfigure your project for local development

Mobile Apps は、ローカル ファイルシステムから azureMobile.js という JavaScript ファイルを読み取ります。Mobile Apps reads a JavaScript file called azureMobile.js from the local file system. 運用環境の Mobile Apps SDK の構成にはこのファイルを使用しないでください。Do not use this file to configure the Mobile Apps SDK in production. 運用環境では、Azure Portal[アプリ設定] を使用してください。Instead, use App settings in the Azure portal.

azureMobile.js ファイルでは構成オブジェクトをエクスポートする必要があります。The azureMobile.js file should export a configuration object. 最も一般的な設定は次のとおりです。The most common settings are:

  • データベース設定Database settings
  • 診断ログ設定Diagnostic logging settings
  • 代替 CORS 設定Alternate CORS settings

前のデータベース設定を実装する azureMobile.js ファイルの例を次に示します。This example azureMobile.js file implements the preceding database settings:

module.exports = {
    cors: {
        origins: [ 'localhost' ]
    },
    data: {
        provider: 'mssql',
        server: '127.0.0.1',
        database: 'mytestdatabase',
        user: 'azuremobile',
        password: 'T3stPa55word'
    },
    logging: {
        level: 'verbose'
    }
};

パスワードがクラウドに保存されないように、azureMobile.js.gitignore ファイル (または他のソース コード管理の無視ファイル) に追加することをお勧めします。We recommend that you add azureMobile.js to your .gitignore file (or other source code control ignore file) to prevent passwords from being stored in the cloud. 運用環境の設定は、必ず Azure Portal[アプリ設定] で構成してください。Always configure production settings in App settings within the Azure portal.

モバイル アプリのアプリ設定を構成するConfigure app settings for your mobile app

azureMobile.js ファイル内のほとんどの設定には、Azure Portal 内に対応するアプリ設定があります。Most settings in the azureMobile.js file have an equivalent app setting in the Azure portal. 次の一覧を参照して、 [アプリ設定] でアプリを構成してください。Use the following list to configure your app in App settings:

アプリ設定App setting azureMobile.js settingazureMobile.js setting 説明Description 有効な値Valid values
MS_MobileAppNameMS_MobileAppName 名前name アプリの名前Name of the app stringstring
MS_MobileLoggingLevelMS_MobileLoggingLevel logging.levellogging.level ログ記録するメッセージの最小ログ レベルMinimum log level of messages to log error、warning、info、verbose、debug、sillyerror, warning, info, verbose, debug, silly
MS_DebugModeMS_DebugMode debugdebug デバッグ モードを有効または無効にしますEnables or disables debug mode true、falsetrue, false
MS_TableSchemaMS_TableSchema data.schemadata.schema SQL テーブルの既定のスキーマ名Default schema name for SQL tables string (既定: dbo)string (default: dbo)
MS_DynamicSchemaMS_DynamicSchema data.dynamicSchemadata.dynamicSchema デバッグ モードを有効または無効にしますEnables or disables debug mode true、falsetrue, false
MS_DisableVersionHeaderMS_DisableVersionHeader version (undefined に設定)version (set to undefined) X-ZUMO-Server-Version ヘッダーの無効化Disables the X-ZUMO-Server-Version header true、falsetrue, false
MS_SkipVersionCheckMS_SkipVersionCheck skipversioncheckskipversioncheck クライアント API バージョン チェックの無効化Disables the client API version check true、falsetrue, false

アプリ設定を設定するには:To set an app setting:

  1. Azure Portal にサインインします。Sign in to the Azure portal.
  2. [すべてのリソース] または [App Services] を選択し、モバイル アプリの名前をクリックします。Select All resources or App Services, and then select the name of your mobile app.
  3. [設定] ウィンドウが既定で開きます。The Settings pane opens by default. 開かない場合は、 [すべての設定] を選択します。If it doesn't, select Settings.
  4. [全般] メニューの [アプリケーション設定] を選択します。On the GENERAL menu, select Application settings.
  5. [アプリ設定] セクションまでスクロールします。Scroll to the App settings section.
  6. アプリ設定が既に存在する場合は、アプリ設定の値を選択して値を編集します。If your app setting already exists, select the value of the app setting to edit the value. アプリ設定が存在しない場合は、 [キー] ボックスにアプリ設定を入力し、 [値] ボックスに値を入力します。If your app setting does not exist, enter the app setting in the Key box and the value in the Value box.
  7. [保存] を選択します。Select Save.

ほとんどのアプリ設定を変更した場合、サービスの再起動が必要になります。Changing most app settings requires a service restart.

SQL Database を運用データ ストアとして使用するUse SQL Database as your production data store

Azure SQL Database をデータ ストアとして使用する方法は、Azure App Service アプリケーションのすべての種類で同じです。Using Azure SQL Database as a data store is identical across all Azure App Service application types. Mobile Apps バックエンドをまだ作成していない場合は、次の手順に従って作成します。If you have not done so already, follow these steps to create a Mobile Apps back end:

  1. Azure Portal にサインインします。Sign in to the Azure portal.

  2. ウィンドウの左上で、 [+ 新規][Web + モバイル] > [モバイル アプリ] の順に選択し、Mobile Apps バックエンドの名前を指定します。In the upper left of the window, select the +NEW button > Web + Mobile > Mobile App, and then provide a name for your Mobile Apps back end.

  3. [リソース グループ] ボックスで、アプリと同じ名前を入力します。In the Resource Group box, enter the same name as your app.

  4. 既定の App Service プランが選択されています。The default App Service plan is selected. App Service プランを変更する場合:If you want to change your App Service plan:

    a.a. [App Service プラン] > [+ 新規作成] の順に選択します。Select App Service Plan > +Create New.

    b.b. 新しい App Service プランの名前を指定し、適切な場所を選択します。Provide a name of the new App Service plan and select an appropriate location.

    c.c. サービスの適切な価格レベルを選択します。Select an appropriate pricing tier for the service. [すべて表示] を選択して、FreeShared などの価格オプションをさらに表示します。Select View all to view more pricing options, such as Free and Shared.

    d.d. [選択] ボタンをクリックします。Click the Select button.

    e.e. [App Service プラン] ウィンドウに戻り、 [OK] を選択します。Back in the App Service plan pane, select OK.

  5. 作成 を選択します。Select Create.

Mobile Apps バックエンドのプロビジョニングには数分かかる場合があります。Provisioning a Mobile Apps back end can take a couple of minutes. Mobile Apps バックエンドのプロビジョニングが完了すると、ポータルで Mobile Apps バックエンドの [設定] ウィンドウが開きます。After the Mobile Apps back end is provisioned, the portal opens the Settings pane for the Mobile Apps back end.

既存の SQL データベースを Mobile Apps バックエンドに接続するか、新しい SQL データベースを作成するかを選択できます。You can choose to either connect an existing SQL database to your Mobile Apps back end or create a new SQL database. このセクションでは、SQL データベースを作成します。In this section, we create a SQL database.

注意

Mobile Apps バックエンドと同じ場所に、既にデータベースがある場合は、 [既存のデータベースを使用する] を選択すると、そのデータベースを選択できます。If you already have a database in the same location as the Mobile Apps back end, you can instead select Use an existing database and then select that database. 別の場所にあるデータベースを使用すると、待機時間が増加するため、これはお勧めできません。We don't recommend the use of a database in a different location because of higher latencies.

  1. 新しい Mobile Apps バックエンドで、 [設定] > [モバイル アプリ] > [データ] > [+ 追加] の順に選択します。In the new Mobile Apps back end, select Settings > Mobile App > Data > +Add.

  2. [データ接続の追加] ウィンドウで、 [SQL Database - 必要な設定の構成] > [新しいデータベースの作成] の順に選択します。In the Add data connection pane, select SQL Database - Configure required settings > Create a new database. [名前] ボックスに新しいデータベースの名前を入力します。Enter the name of the new database in the Name box.

  3. [サーバー] を選択します。Select Server. [新しいサーバー] ウィンドウで、 [サーバー名] ボックスに一意のサーバー名を入力し、サーバー管理ログインとパスワードに適切な内容を指定します。In the New server pane, enter a unique server name in the Server name box, and provide a suitable server admin login and password. [Azure サービスにサーバーへのアクセスを許可する] が選択されていることを確認します。Ensure that Allow azure services to access server is selected. [OK] を選択します。Select OK.

    Azure SQL データベースの作成

  4. [新しいデータベース] ウィンドウで、 [OK] を選択します。In the New database pane, select OK.

  5. [データ接続の追加] ウィンドウに戻り、 [接続文字列] を選択して、データベースの作成時に指定したログイン名とパスワードを入力します。Back in the Add data connection pane, select Connection string, and enter the login and password that you provided when you created the database. 既存のデータベースを使用する場合は、そのデータベースのログイン資格情報を入力します。If you use an existing database, provide the login credentials for that database. [OK] を選択します。Select OK.

  6. もう一度 [データ接続の追加] ウィンドウに戻り、 [OK] を選択してデータベースを作成します。Back in the Add data connection pane again, select OK to create the database.

データベースの作成には数分かかる場合があります。Creation of the database can take a few minutes. [通知] 領域を使用して、デプロイの進行状況を監視します。Use the Notifications area to monitor the progress of the deployment. データベースのデプロイが正常に完了するまで、先に進まないでください。Do not progress until the database is deployed successfully. データベースがデプロイされると、Mobile Apps バックエンドの [アプリ設定] で、SQL データベース インスタンスの接続文字列が作成されます。After the database is deployed, a connection string is created for the SQL Database instance in your Mobile Apps back-end app settings. このアプリ設定を確認するには、 [設定] > [アプリケーション設定] > [接続文字列] を順に選択します。You can see this app setting in Settings > Application settings > Connection strings.

テーブルへのアクセスに認証を要求するRequire authentication for access to tables

tables エンドポイントで App Service 認証を使用する場合は、まず、Azure Portal で App Service 認証を構成する必要があります。If you want to use App Service Authentication with the tables endpoint, you must configure App Service Authentication in the Azure portal first. 詳細については、使用する ID プロバイダーの構成ガイドを参照してください。For more information, see the configuration guide for the identity provider that you intend to use:

各テーブルには、テーブルへのアクセスを制御するために使用できる access プロパティがあります。Each table has an access property that you can use to control access to the table. 次のサンプルでは、認証を必要とする静的に定義されたテーブルを示します。The following sample shows a statically defined table with authentication required.

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

access プロパティには、次の 3 つの値を使用できます。The access property can take one of three values:

  • anonymous は、認証なしでデータを読み取る許可をクライアント アプリケーションに与えることを示します。anonymous indicates that the client application is allowed to read data without authentication.
  • authenticated は、クライアント アプリケーションが要求で有効な認証トークンを送信する必要があることを示します。authenticated indicates that the client application must send a valid authentication token with the request.
  • disabled は、このテーブルが現在無効になっていることを示します。disabled indicates that this table is currently disabled.

access プロパティが定義されていない場合は、非認証アクセスが許可されます。If the access property is undefined, unauthenticated access is allowed.

テーブルで認証要求を使用するUse authentication claims with your tables

認証が設定されている場合、要求されている各種要求を設定できます。You can set up various claims that are requested when authentication is set up. これらの要求は context.user オブジェクトでは通常使用できません。These claims are not normally available through the context.user object. ただし、context.user.getIdentity() メソッドを使用して取得できます。However, you can retrieve them by using the context.user.getIdentity() method. getIdentity() メソッドは、オブジェクトに解決される promise を返します。The getIdentity() method returns a promise that resolves to an object. オブジェクトのキーは、認証方法 (facebookgoogletwittermicrosoftaccountaad) に設定されます。The object is keyed by the authentication method (facebook, google, twitter, microsoftaccount, or aad).

たとえば、Microsoft アカウント認証を設定し、電子メール アドレス要求を要求する場合は、次のテーブル コントローラーを使用してレコードに電子メール アドレスを追加できます。For example, if you set up Microsoft account authentication and request the email addresses claim, you can add the email address to the record with the following table controller:

var azureMobileApps = require('azure-mobile-apps');

// Create a new table definition.
var table = azureMobileApps.table();

table.columns = {
    "emailAddress": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;
table.access = 'authenticated';

/**
* Limit the context query to those records with the authenticated user email address
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function queryContextForEmail(context) {
    return context.user.getIdentity().then((data) => {
        context.query.where({ emailAddress: data.microsoftaccount.claims.emailaddress });
        return context.execute();
    });
}

/**
* Adds the email address from the claims to the context item - used for
* insert operations
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function addEmailToContext(context) {
    return context.user.getIdentity().then((data) => {
        context.item.emailAddress = data.microsoftaccount.claims.emailaddress;
        return context.execute();
    });
}

// Configure specific code when the client does a request.
// READ: only return records that belong to the authenticated user.
table.read(queryContextForEmail);

// CREATE: add or overwrite the userId based on the authenticated user.
table.insert(addEmailToContext);

// UPDATE: only allow updating of records that belong to the authenticated user.
table.update(queryContextForEmail);

// DELETE: only allow deletion of records that belong to the authenticated user.
table.delete(queryContextForEmail);

module.exports = table;

どのような要求が使用できるかを確認するには、Web ブラウザーを使用し、サイトの /.auth/me エンドポイントを表示します。To see what claims are available, use a web browser to view the /.auth/me endpoint of your site.

特定のテーブル操作へのアクセスを無効にするDisable access to specific table operations

テーブルでの表示だけでなく、個々の操作を制御するために access プロパティを使用できます。In addition to appearing on the table, the access property can be used to control individual operations. 操作には以下の 4 つがあります。There are four operations:

  • read は、テーブルに対する RESTful GET 操作です。read is the RESTful GET operation on the table.
  • insert は、テーブルに対する RESTful POST 操作です。insert is the RESTful POST operation on the table.
  • update は、テーブルに対する RESTful PATCH 操作です。update is the RESTful PATCH operation on the table.
  • delete は、テーブルに対する RESTful DELETE 操作です。delete is the RESTful DELETE operation on the table.

たとえば、読み取り専用の認証されていないテーブルを指定できます。For example, you might want to provide a read-only unauthenticated table:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Read-only table. Only allow READ operations.
table.read.access = 'anonymous';
table.insert.access = 'disabled';
table.update.access = 'disabled';
table.delete.access = 'disabled';

module.exports = table;

テーブル操作で使用されるクエリを調整するAdjust the query that is used with table operations

テーブル操作の一般的な要件は、データの制限付きビューを提供することです。A common requirement for table operations is to provide a restricted view of the data. たとえば、ユーザーが独自のレコードの読み取りまたは更新のみを実行できるように、認証済みユーザー ID でタグ付けされているテーブルを提供できます。For example, you can provide a table that is tagged with the authenticated user ID such that you can only read or update your own records. 次のテーブル定義では、この機能を提供しています。The following table definition provides this functionality:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define a static schema for the table.
table.columns = {
    "userId": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;

// Require authentication for this table.
table.access = 'authenticated';

// Ensure that only records for the authenticated user are retrieved.
table.read(function (context) {
    context.query.where({ userId: context.user.id });
    return context.execute();
});

// When adding records, add or overwrite the userId with the authenticated user.
table.insert(function (context) {
    context.item.userId = context.user.id;
    return context.execute();
});

module.exports = table;

通常はクエリを実行する操作には、where 句で調整できる query プロパティがあります。Operations that normally run a query have a query property that you can adjust by using a where clause. query プロパティは QueryJS オブジェクトであり、これを使用して、データ バックエンドで処理できるものに OData クエリを変換します。The query property is a QueryJS object that is used to convert an OData query to something that the data back end can process. (上記のような) 単純な等式の場合は、マップを使用できます。For simple equality cases (like the preceding one), you can use a map. また、特定の SQL 句を追加することもできます。You can also add specific SQL clauses:

context.query.where('myfield eq ?', 'value');

テーブルの論理削除を構成するConfigure a soft delete on a table

論理削除では実際にレコードは削除されません。A soft delete does not actually delete records. 代わりに、削除列を true に設定して、データベース内のレコードを削除済みとしてマークします。Instead it marks them as deleted within the database by setting the deleted column to true. Mobile Client SDK で IncludeDeleted() が使用されない限り、Mobile Apps SDK によって結果から論理削除レコードが自動的に削除されます。The Mobile Apps SDK automatically removes soft-deleted records from results unless the Mobile Client SDK uses IncludeDeleted(). 論理削除のテーブルを構成するには、テーブル定義ファイルで softDelete プロパティを設定します。To configure a table for a soft delete, set the softDelete property in the table definition file:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Turn on soft delete.
table.softDelete = true;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

クライアント アプリケーション、WebJob、Azure 関数、カスタム API など、レコードを削除するためのメカニズムを確立する必要があります。You should establish a mechanism for deleting records: a client application, a WebJob, an Azure function, or a custom API.

データベースに対するデータのシード処理を実行するSeed your database with data

新しいアプリケーションを作成する場合、データでのテーブルのシード処理が必要になることがあります。When you're creating a new application, you might want to seed a table with data. これは、以下のようにテーブル定義 JavaScript ファイル内で行うことができます。You can do this within the table definition JavaScript file as follows:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};
table.seed = [
    { text: 'Example 1', complete: false },
    { text: 'Example 2', complete: true }
];

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

データのシード処理は、Mobile Apps SDK を使用してテーブルを作成した場合にのみ発生します。Seeding of data happens only when you've used the Mobile Apps SDK to create the table. データベースにテーブルが既に存在する場合、テーブルにデータは挿入されません。If the table already exists in the database, no data is injected into the table. 動的スキーマが有効になっている場合、スキーマはシード処理されたデータから推論されます。If the dynamic schema is turned on, the schema is inferred from the seeded data.

tables.initialize() メソッドを明示的に呼び出して、サービスの実行開始時にテーブルを作成することをお勧めします。We recommend that you explicitly call the tables.initialize() method to create the table when the service starts running.

Swagger のサポートを有効にするEnable Swagger support

Mobile Apps には、組み込みの Swagger のサポートが付属しています。Mobile Apps comes with built-in Swagger support. Swagger のサポートを有効にするには、最初に依存関係として swagger ui をインストールします。To enable Swagger support, first install swagger-ui as a dependency:

npm install --save swagger-ui

インストール後は Mobile Apps コンストラクターで Swagger のサポートを有効にすることができます。You can then enable Swagger support in the Mobile Apps constructor:

var mobile = azureMobileApps({ swagger: true });

開発エディションでのみ Swagger サポートを有効にするには、You probably only want to enable Swagger support in development editions. NODE_ENV アプリ設定を使用します。You can do this by using the NODE_ENV app setting:

var mobile = azureMobileApps({ swagger: process.env.NODE_ENV !== 'production' });

swagger エンドポイントは、 http://自分のサイト.azurewebsites.net/swagger にあります。The swagger endpoint is located at http://yoursite.azurewebsites.net/swagger. Swagger UI には、 /swagger/ui エンドポイントからアクセスできます。You can access the Swagger UI via the /swagger/ui endpoint. アプリケーション全体で認証を必要とする場合、エラーが生成されます。If you choose to require authentication across your entire application, Swagger produces an error. 最良の結果を得るには、Azure App Service の [認証/承認] 設定で認証されていない要求を許可し、table.access プロパティを使用して認証を制御します。For best results, choose to allow unauthenticated requests in the Azure App Service Authentication/Authorization settings, and then control authentication by using the table.access property.

また、ローカルで開発する場合にのみ、Swagger のサポートが必要な場合は、azureMobile.js ファイルに Swagger オプションを追加できます。You can also add the Swagger option to your azureMobile.js file if you only want Swagger support for developing locally.

プッシュ通知Push notifications

Mobile Apps と Azure Notification Hubs を統合することで、あらゆる主要なプラットフォーム間で、数百万台のデバイスに対して、対象設定済みのプッシュ通知を送信できます。Mobile Apps integrates with Azure Notification Hubs so you can send targeted push notifications to millions of devices across all major platforms. Notification Hubs を使用して、iOS デバイス、Android デバイス、および Windows デバイスにプッシュ通知を送信できます。By using Notification Hubs, you can send push notifications to iOS, Android, and Windows devices. Notification Hubs で実行可能なすべての操作については、「Azure 通知ハブ」を参照してください。To learn more about all that you can do with Notification Hubs, see the Notification Hubs overview.

プッシュ通知の送信Send push notifications

次のコードに、push オブジェクトを使用して、登録済みの iOS デバイスにブロードキャスト プッシュ通知を送信する方法を示します。The following code shows how to use the push object to send a broadcast push notification to registered iOS devices:

// Create an APNS payload.
var payload = '{"aps": {"alert": "This is an APNS payload."}}';

// Only do the push if configured.
if (context.push) {
    // Send a push notification by using APNS.
    context.push.apns.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

クライアントからテンプレート プッシュ登録を作成することで、代わりに、サポートされるすべてのプラットフォーム上のデバイスにテンプレート プッシュ メッセージを送信できます。By creating a template push registration from the client, you can instead send a template push message to devices on all supported platforms. 次のコードに、テンプレート通知を送信する方法を示します。The following code shows how to send a template notification:

// Define the template payload.
var payload = '{"messageParam": "This is a template payload."}';

// Only do the push if configured.
if (context.push) {
    // Send a template notification.
    context.push.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

タグを使用して認証済みのユーザーにプッシュ通知を送信するSend push notifications to an authenticated user by using tags

認証済みのユーザーがプッシュ通知に登録すると、ユーザー ID タグが登録に自動的に追加されます。When an authenticated user registers for push notifications, a user ID tag is automatically added to the registration. このタグを使用すると、特定のユーザーが登録したすべてのデバイスにプッシュ通知を送信できます。By using this tag, you can send push notifications to all devices registered by a specific user. 次のコードでは、要求を行ったユーザーの SID を取得し、そのユーザーのすべてのデバイス登録にテンプレート プッシュ通知を送信します。The following code gets the SID of user who's making the request and sends a template push notification to every device registration for that user:

// Only do the push if configured.
if (context.push) {
    // Send a notification to the current user.
    context.push.send(context.user.id, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

認証されたクライアントからプッシュ通知を登録する場合は、登録を試みる前に、認証が完了していることを確認します。When you're registering for push notifications from an authenticated client, make sure that authentication is complete before you attempt registration.

カスタム APICustom APIs

カスタム API を定義するDefine a custom API

/tables エンドポイント経由のデータ アクセス API に加え、Mobile Apps ではカスタム API も提供できます。In addition to the Data Access API via the /tables endpoint, Mobile Apps can provide custom API coverage. カスタム API はテーブル定義と同じような方法で定義され、認証を含む、すべての同じ機能にアクセスできます。Custom APIs are defined in a similar way to the table definitions and can access all the same facilities, including authentication.

カスタム API で App Service 認証を使用する場合は、まず、Azure Portal で App Service 認証を構成する必要があります。If you want to use App Service Authentication with a custom API, you must configure App Service Authentication in the Azure portal first. 詳細については、使用する ID プロバイダーの構成ガイドを参照してください。For more information, see the configuration guide for the identity provider that you intend to use:

カスタム API は、テーブル API とほぼ同じ方法で定義されます。Custom APIs are defined in much the same way as the Tables API:

  1. api ディレクトリを作成します。Create an api directory.
  2. api ディレクトリに API 定義 JavaScript ファイルを作成します。Create an API definition JavaScript file in the api directory.
  3. import メソッドを使用して、api ディレクトリをインポートします。Use the import method to import the api directory.

前に使用した basic-app サンプルに基づくプロトタイプの API 定義を以下に示します。Here is the prototype API definition based on the basic-app sample that we used earlier:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP
app.listen(process.env.PORT || 3000);

ここでは、Date.now() メソッドを使用してサーバーの日付を返す API の例を見てみましょう。Let's take an example API that returns the server date by using the Date.now() method. api/date.js ファイルを以下に示します。Here is the api/date.js file:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};

module.exports = api;

各パラメーターは、標準的な RESTful 動詞(GET、POST、PATCH または DELETE) のいずれかです。Each parameter is one of the standard RESTful verbs: GET, POST, PATCH, or DELETE. メソッドは、必要な出力を送信する標準的な ExpressJS ミドルウェア関数です。The method is a standard ExpressJS middleware function that sends the required output.

カスタム API へのアクセスに認証を要求するRequire authentication for access to a custom API

Mobile Apps SDK では、tables エンドポイントとカスタム API の両方に対して同じ方法で認証を実装します。The Mobile Apps SDK implements authentication in the same way for both the tables endpoint and custom APIs. 前のセクションで開発した API に認証を追加するには、access プロパティを追加します。To add authentication to the API developed in the previous section, add an access property:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};
// All methods must be authenticated.
api.access = 'authenticated';

module.exports = api;

以下のように、特定の操作で認証を指定することもできます。You can also specify authentication on specific operations:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    }
};
// The GET methods must be authenticated.
api.get.access = 'authenticated';

module.exports = api;

認証を必要とするカスタム API には、tables エンドポイントで使用されるものと同じトークンを使用する必要があります。The same token that is used for the tables endpoint must be used for custom APIs that require authentication.

大きなファイルのアップロードを処理するHandle large file uploads

Mobile Apps SDK では、body-parser ミドルウェアを使用して、送信された本文のコンテンツを受け入れ、デコードします。The Mobile Apps SDK uses the body-parser middleware to accept and decode body content in your submission. 大きなファイルのアップロードを受け入れるように body-parser を事前構成できます。You can preconfigure body-parser to accept larger file uploads:

var express = require('express'),
    bodyParser = require('body-parser'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Set up large body content handling.
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP.
app.listen(process.env.PORT || 3000);

ファイルは送信前に base 64 でエンコードされます。The file is base-64 encoded before transmission. このエンコードによって実際のアップロードのサイズは増加します (そのため、このサイズを考慮する必要があります)。This encoding increases the size of the actual upload (and the size that you must account for).

カスタム SQL ステートメントを実行するExecute custom SQL statements

Mobile Apps SDK を使用すると、要求オブジェクトを介してコン​​テキスト全体にアクセスできます。The Mobile Apps SDK allows access to the entire context through the request object. 定義されたデータ プロバイダーに対して、パラメーター化された SQL ステートメントを簡単に実行できます。You can easily execute parameterized SQL statements to the defined data provider:

var api = {
    get: function (request, response, next) {
        // Check for parameters. If not there, pass on to a later API call.
        if (typeof request.params.completed === 'undefined')
            return next();

        // Define the query. Anything that the mssql
        // driver can handle is allowed.
        var query = {
            sql: 'UPDATE TodoItem SET complete=@completed',
            parameters: [{
                completed: request.params.completed
            }]
        };

        // Execute the query. The context for Mobile Apps is available through
        // request.azureMobile. The data object contains the configured data provider.
        request.azureMobile.data.execute(query)
        .then(function (results) {
            response.json(results);
        });
    }
};

api.get.access = 'authenticated';
module.exports = api;

デバッグDebugging

Mobile Apps をデバッグ、診断、およびトラブルシューティングするDebug, diagnose, and troubleshoot Mobile Apps

Azure App Service では、Node.js アプリケーションに関するいくつかのデバッグとトラブルシューティングの手法が提供されます。Azure App Service provides several debugging and troubleshooting techniques for Node.js applications. Node.js Mobile Apps バックエンドのトラブルシューティングを開始する場合は、次の記事を参照してください。To get started in troubleshooting your Node.js Mobile Apps back end, see the following articles:

Node.js アプリケーションは、広範囲の診断ログ ツールにアクセスできます。Node.js applications have access to a wide range of diagnostic log tools. Mobile Apps Node.js SDK は、内部で診断ログに Winston を使用します。Internally, the Mobile Apps Node.js SDK uses Winston for diagnostic logging. デバッグ モードを有効にするか、Azure PortalMS_DebugMode アプリ設定を true に設定すると、ログは自動的に有効になります。Logging is automatically enabled when you enable debug mode or set the MS_DebugMode app setting to true in the Azure portal. 生成されたログは、Azure Portal の診断ログに表示されます。Generated logs appear in the diagnostic logs in the Azure portal.