Azure Functions における Mobile Apps のバインドMobile Apps bindings for Azure Functions

注意

Azure Mobile Apps のバインドは、Azure Functions 1.x でのみ使用できます。Azure Mobile Apps bindings are only available to Azure Functions 1.x. これらは Azure Functions 2.x ではサポートされていません。They are not supported in Azure Functions 2.x.

この記事では、Azure Functions で Azure Mobile Apps のバインドを操作する方法について説明します。This article explains how to work with Azure Mobile Apps bindings in Azure Functions. Azure Functions は、Mobile Apps の入力および出力バインドをサポートしています。Azure Functions supports input and output bindings for Mobile Apps.

Mobile Apps のバインドを使用すると、モバイル アプリのデータ テーブルの読み取りや更新を行うことができます。The Mobile Apps bindings let you read and update data tables in mobile apps.

これは、Azure Functions の開発者向けリファレンス情報です。This is reference information for Azure Functions developers. Azure Functions を初めて使用する場合は、先に次のリソースを参照してください。If you're new to Azure Functions, start with the following resources:

パッケージ - Functions 1.xPackages - Functions 1.x

Mobile Apps バインディングは Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet パッケージ、バージョン 1.x で提供されます。Mobile Apps bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet package, version 1.x. パッケージのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

次の表に、各開発環境でこのバインディングのサポートを追加する方法を示します。The following table tells how to add support for this binding in each development environment.

開発環境Development environment サポートを追加するバージョン:To add support in
Functions 1.xFunctions 1.x
ローカル開発 - C# クラス ライブラリLocal development - C# class library パッケージをインストールするInstall the package
ローカル開発で - C# スクリプト、JavaScript、F#Local development - C# script, JavaScript, F# 自動Automatic
Portal 開発Portal development 自動Automatic

入力Input

Mobile Apps 入力バインドは、モバイル テーブル エンドポイントからレコードを読み込んで関数に渡します。The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. C# および F# 関数では、レコードに加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。In C# and F# functions, any changes made to the record are automatically sent back to the table when the function exits successfully.

入力 - 例Input - example

言語固有の例をご覧ください。See the language-specific example:

入力 - C# スクリプトの例Input - C# script example

次の例は、function.json ファイルの Mobile Apps 入力バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows a Mobile Apps input binding in a function.json file and a C# script function that uses the binding. この関数は、レコード識別子を含むキュー メッセージによってトリガーされます。The function is triggered by a queue message that has a record identifier. この関数は、指定されたレコードを読み取って、Text プロパティを変更します。The function reads the specified record and modifies its Text property.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
        "name": "record",
        "type": "mobileTable",
        "tableName": "MyTable",
        "id" : "{queueTrigger}",
        "connection": "My_MobileApp_Url",
        "apiKey": "My_MobileApp_Key",
        "direction": "in"
    }
]
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

C# スクリプト コードを次に示します。Here's the C# script code:

#r "Newtonsoft.Json"    
using Newtonsoft.Json.Linq;

public static void Run(string myQueueItem, JObject record)
{
    if (record != null)
    {
        record["Text"] = "This has changed.";
    }    
}

入力 - JavaScriptInput - JavaScript

次の例は、function.json ファイルの Mobile Apps 入力バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows a Mobile Apps input binding in a function.json file and a JavaScript function that uses the binding. この関数は、レコード識別子を含むキュー メッセージによってトリガーされます。The function is triggered by a queue message that has a record identifier. この関数は、指定されたレコードを読み取って、Text プロパティを変更します。The function reads the specified record and modifies its Text property.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
        "name": "record",
        "type": "mobileTable",
        "tableName": "MyTable",
        "id" : "{queueTrigger}",
        "connection": "My_MobileApp_Url",
        "apiKey": "My_MobileApp_Key",
        "direction": "in"
    }
]
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

JavaScript コードを次に示します。Here's the JavaScript code:

module.exports = function (context, myQueueItem) {    
    context.log(context.bindings.record);
    context.done();
};

入力 - 属性Input - attributes

C# クラス ライブラリでは、MobileTable 属性を使用します。In C# class libraries, use the MobileTable attribute.

属性のプロパティについて詳しくは、この後の構成に関するセクションをご覧ください。For information about attribute properties that you can configure, see the following configuration section.

入力 - 構成Input - configuration

次の表は、function.json ファイルと MobileTable 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype "mobileTable" に設定する必要があります。Must be set to "mobileTable"
directiondirection "in" に設定する必要があります。Must be set to "in"
namename 関数シグネチャの入力パラメーターの名前。Name of input parameter in function signature.
tableNametableName TableNameTableName モバイル アプリのデータ テーブルの名前Name of the mobile app's data table
idid IdId 取得するレコードの識別子。The identifier of the record to retrieve. 静的にすることも、関数を呼び出すトリガーに基づいて設定することもできます。Can be static or based on the trigger that invokes the function. たとえば、関数にキュー トリガーを使用した場合、"id": "{queueTrigger}" は、キュー メッセージの文字列値を、取得するレコード ID として使用します。For example, if you use a queue trigger for your function, then "id": "{queueTrigger}" uses the string value of the queue message as the record ID to retrieve.
connectionconnection ConnectionConnection モバイル アプリの URL を含むアプリ設定の名前。The name of an app setting that has the mobile app's URL. この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。The function uses this URL to construct the required REST operations against your mobile app. モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. URL は、http://<appname>.azurewebsites.net のようになります。The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey モバイル アプリの API キーを含むアプリ設定の名前。The name of an app setting that has your mobile app's API key. API キーを Node.js モバイル アプリに実装する場合や、API キーを .NET モバイル アプリに実装する場合は、API キーを指定します。Provide the API key if you implement an API key in your Node.js mobile app, or implement an API key in your .NET mobile app. キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

重要

API キーをモバイル アプリのクライアントと共有しないでください。Don't share the API key with your mobile app clients. この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. これにより、機密情報が保護されます。This safeguards your sensitive information.

入力 - 使用方法Input - usage

C# 関数では、指定の ID を含むレコードが検出されると、指定された JObject パラメーターに渡されます。In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. レコードが検出されなかった場合、パラメーター値は null になります。When the record is not found, the parameter value is null.

JavaScript 関数では、レコードは context.bindings.<name> オブジェクトに渡されます。In JavaScript functions, the record is passed into the context.bindings.<name> object. レコードが検出されなかった場合、パラメーター値は null になります。When the record is not found, the parameter value is null.

C# および F# の関数では、入力レコード (名前付き入力パラメーター) に加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。In C# and F# functions, any changes you make to the input record (input parameter) are automatically sent back to the table when the function exits successfully. JavaScript 関数ではレコードを変更できません。You can't modify a record in JavaScript functions.

OutputOutput

Mobile Apps 出力バインドを使用して、Mobile Apps テーブルにレコードを書き込みます。Use the Mobile Apps output binding to write a new record to a Mobile Apps table.

出力 - 例Output - example

言語固有の例をご覧ください。See the language-specific example:

出力 - C# の例Output - C# example

次の例は、キュー メッセージによってトリガーされ、モバイル アプリ テーブルにレコードを作成する C# 関数を示しています。The following example shows a C# function that is triggered by a queue message and creates a record in a mobile app table.

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    return new { Text = $"I'm running in a C# function! {myQueueItem}" };
}

出力 - C# スクリプトの例Output - C# script example

次の例は、function.json ファイルの Mobile Apps 出力バインドと、そのバインドが使用される C# スクリプト関数を示しています。The following example shows a Mobile Apps output binding in a function.json file and a C# script function that uses the binding. この関数は、キュー メッセージによってトリガーされ、Text プロパティにハードコーディングされた値を使用して新しいレコードを作成します。The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
    "name": "record",
    "type": "mobileTable",
    "tableName": "MyTable",
    "connection": "My_MobileApp_Url",
    "apiKey": "My_MobileApp_Key",
    "direction": "out"
    }
]
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

C# スクリプト コードを次に示します。Here's the C# script code:

public static void Run(string myQueueItem, out object record)
{
    record = new {
        Text = $"I'm running in a C# function! {myQueueItem}"
    };
}

出力 - JavaScript の例Output - JavaScript example

次の例は、function.json ファイルの Mobile Apps 出力バインドと、そのバインドが使用される JavaScript 関数を示しています。The following example shows a Mobile Apps output binding in a function.json file and a JavaScript function that uses the binding. この関数は、キュー メッセージによってトリガーされ、Text プロパティにハードコーディングされた値を使用して新しいレコードを作成します。The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

function.json ファイルのバインディング データを次に示します。Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
    "name": "record",
    "type": "mobileTable",
    "tableName": "MyTable",
    "connection": "My_MobileApp_Url",
    "apiKey": "My_MobileApp_Key",
    "direction": "out"
    }
],
"disabled": false
}

これらのプロパティについては、「構成」セクションを参照してください。The configuration section explains these properties.

JavaScript コードを次に示します。Here's the JavaScript code:

module.exports = function (context, myQueueItem) {

    context.bindings.record = {
        text : "I'm running in a Node function! Data: '" + myQueueItem + "'"
    }   

    context.done();
};

出力 - 属性Output - attributes

C# クラス ライブラリでは、MobileTable 属性を使用します。In C# class libraries, use the MobileTable attribute.

構成可能な属性プロパティについては、「出力 - 構成」を参照してください。For information about attribute properties that you can configure, see Output - configuration. メソッド シグネチャでの MobileTable 属性の例を次に示します。Here's a MobileTable attribute example in a method signature:

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    ...
}

完全な例については、「出力 - C# の例」を参照してください。For a complete example, see Output - C# example.

出力 - 構成Output - configuration

次の表は、function.json ファイルと MobileTable 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype "mobileTable" に設定する必要があります。Must be set to "mobileTable"
directiondirection "out" に設定する必要があります。Must be set to "out"
namename 関数シグネチャの出力パラメーターの名前。Name of output parameter in function signature.
tableNametableName TableNameTableName モバイル アプリのデータ テーブルの名前Name of the mobile app's data table
connectionconnection MobileAppUriSettingMobileAppUriSetting モバイル アプリの URL を含むアプリ設定の名前。The name of an app setting that has the mobile app's URL. この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。The function uses this URL to construct the required REST operations against your mobile app. モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. URL は、http://<appname>.azurewebsites.net のようになります。The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting モバイル アプリの API キーを含むアプリ設定の名前。The name of an app setting that has your mobile app's API key. API キーを Node.js モバイル アプリのバックエンドに実装する場合や API キーを .NET モバイル アプリのバックエンドに実装する場合は、API キーを指定します。Provide the API key if you implement an API key in your Node.js mobile app backend, or implement an API key in your .NET mobile app backend. キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

重要

API キーをモバイル アプリのクライアントと共有しないでください。Don't share the API key with your mobile app clients. この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. これにより、機密情報が保護されます。This safeguards your sensitive information.

出力 - 使用方法Output - usage

C# スクリプト関数では、out object 型の名前付き出力パラメーターを使用して出力レコードにアクセスします。In C# script functions, use a named output parameter of type out object to access the output record. C# クラス ライブラリでは、MobileTable 属性を次のどの型に対しても使用できます。In C# class libraries, the MobileTable attribute can be used with any of the following types:

  • ICollector<T> または IAsyncCollector<T>。このとき、TJObject か、public string Id プロパティを持つ任意の型です。ICollector<T> or IAsyncCollector<T>, where T is either JObject or any type with a public string Id property.
  • out JObject
  • out T または out T[]。このとき、Tpublic string Id プロパティを持つ任意の型です。out T or out T[], where T is any Type with a public string Id property.

Node.js 関数では、context.bindings.<name> を使用して出力レコードにアクセスします。In Node.js functions, use context.bindings.<name> to access the output record.

次の手順Next steps