Azure Functions における Mobile Apps のバインド
Note
Azure Mobile Apps のバインドは、Azure Functions 1.x でのみ使用できます。 これらは Azure Functions 2.x 以降ではサポートされていません。
重要
Azure Functions Runtime のバージョン 1.x のサポートは 2026 年 9 月 14 日に終了します。 完全なサポートのために、アプリをバージョン 4.x に移行することを強くお勧めします。
この記事では、Azure Functions で Azure Mobile Apps のバインドを操作する方法について説明します。 Azure Functions は、Mobile Apps の入力および出力バインドをサポートしています。
Mobile Apps のバインドを使用すると、モバイル アプリのデータ テーブルの読み取りや更新を行うことができます。
パッケージ - Functions 1.x
Mobile Apps バインディングは Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet パッケージ、バージョン 1.x で提供されます。 パッケージのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。
次の表に、各開発環境で出力バインドのサポートを追加する方法を示します。
開発環境 | Functions 1.x でサポートを追加するには |
---|---|
ローカル開発: C# クラス ライブラリ | パッケージをインストールする |
ローカル開発: C# スクリプト、JavaScript、F# | 自動 |
Portal 開発 | 自動 |
入力
Mobile Apps 入力バインドは、モバイル テーブル エンドポイントからレコードを読み込んで関数に渡します。 C# および F# 関数では、レコードに加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。
入力 - 例
言語固有の例をご覧ください。
次の例は、function.json ファイルの Mobile Apps 入力バインドと、そのバインドが使用される C# スクリプト関数を示しています。 この関数は、レコード識別子を含むキュー メッセージによってトリガーされます。 この関数は、指定されたレコードを読み取って、Text
プロパティを変更します。
function.json ファイルのバインディング データを次に示します。
{
"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"
}
]
}
これらのプロパティについては、「構成」セクションを参照してください。
C# スクリプト コードを次に示します。
#r "Newtonsoft.Json"
using Newtonsoft.Json.Linq;
public static void Run(string myQueueItem, JObject record)
{
if (record != null)
{
record["Text"] = "This has changed.";
}
}
入力 - 属性
C# クラス ライブラリでは、MobileTable 属性を使用します。
属性のプロパティについて詳しくは、この後の構成に関するセクションをご覧ください。
入力 - 構成
次の表は、function.json ファイルと MobileTable
属性で設定したバインド構成のプロパティを説明しています。
function.json のプロパティ | 属性のプロパティ | 説明 |
---|---|---|
type | 該当なし | "mobileTable" に設定する必要があります。 |
direction | 該当なし | "in" に設定する必要があります。 |
name | 該当なし | 関数シグネチャの入力パラメーターの名前。 |
tableName | TableName | モバイル アプリのデータ テーブルの名前 |
id | Id | 取得するレコードの識別子。 静的にすることも、関数を呼び出すトリガーに基づいて設定することもできます。 たとえば、関数にキュー トリガーを使用した場合、"id": "{queueTrigger}" は、キュー メッセージの文字列値を、取得するレコード ID として使用します。 |
connection | Connection | モバイル アプリの URL を含むアプリ設定の名前。 この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。 モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。 URL は、https://<appname>.azurewebsites.net のようになります。 |
apiKey | ApiKey | モバイル アプリの API キーを含むアプリ設定の名前。 API キーを Node.js モバイル アプリに実装する場合は API キーを指定します。あるいは、.NET モバイル アプリで API キーを実装することもできます。 キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。 |
ローカルで開発する場合は、Values
コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。
重要
API キーをモバイル アプリのクライアントと共有しないでください。 この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。 Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。 これにより、機密情報が保護されます。
入力 - 使用方法
C# 関数では、指定の ID を含むレコードが検出されると、指定された JObject パラメーターに渡されます。 レコードが検出されなかった場合、パラメーター値は null
になります。
JavaScript 関数では、レコードは context.bindings.<name>
オブジェクトに渡されます。 レコードが検出されなかった場合、パラメーター値は null
になります。
C# および F# の関数では、入力レコード (名前付き入力パラメーター) に加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。 JavaScript 関数ではレコードを変更できません。
出力
Mobile Apps 出力バインドを使用して、Mobile Apps テーブルにレコードを書き込みます。
出力 - 例
次の例は、キュー メッセージによってトリガーされ、モバイル アプリ テーブルにレコードを作成する C# 関数を示しています。
[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# クラス ライブラリでは、MobileTable 属性を使用します。
構成可能な属性プロパティについては、「出力 - 構成」を参照してください。 メソッド シグネチャでの MobileTable
属性の例を次に示します。
[FunctionName("MobileAppsOutput")]
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
[QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
TraceWriter log)
{
...
}
出力 - 構成
次の表は、function.json ファイルと MobileTable
属性で設定したバインド構成のプロパティを説明しています。
function.json のプロパティ | 属性のプロパティ | 説明 |
---|---|---|
type | 該当なし | "mobileTable" に設定する必要があります。 |
direction | 該当なし | "out" に設定する必要があります。 |
name | 該当なし | 関数シグネチャの出力パラメーターの名前。 |
tableName | TableName | モバイル アプリのデータ テーブルの名前 |
connection | MobileAppUriSetting | モバイル アプリの URL を含むアプリ設定の名前。 この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。 モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。 URL は、https://<appname>.azurewebsites.net のようになります。 |
apiKey | ApiKeySetting | モバイル アプリの API キーを含むアプリ設定の名前。 API キーを Node.js モバイル アプリのバックエンドに実装する場合は API キーを指定します。あるいは、.NET モバイル アプリのバックエンドで API キーを実装することもできます。 キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。 |
ローカルで開発する場合は、Values
コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。
重要
API キーをモバイル アプリのクライアントと共有しないでください。 この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。 Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。 これにより、機密情報が保護されます。
出力 - 使用方法
C# スクリプト関数では、out object
型の名前付き出力パラメーターを使用して出力レコードにアクセスします。 C# クラス ライブラリでは、MobileTable
属性を次のどの型に対しても使用できます。
ICollector<T>
またはIAsyncCollector<T>
。このとき、T
はJObject
か、public string Id
プロパティを持つ任意の型です。out JObject
out T
またはout T[]
。このとき、T
はpublic string Id
プロパティを持つ任意の型です。
Node.js 関数では、context.bindings.<name>
を使用して出力レコードにアクセスします。