Azure Functions の開発者向けガイドAzure Functions developers guide

Azure Functions の特定の関数は、使用する言語またはバインドに関係なく、いくつかの中核となる技術的な概念とコンポーネントを共有します。In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. 特定の言語またはバインド固有の詳細を学習する前に、それらすべてに当てはまるこの概要をお読みください。Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

この記事では、「Azure Functions の概要」を既に読んでいることを前提としています。This article assumes that you've already read the Azure Functions overview.

関数のコードFunction code

関数 は Azure Functions の主要な概念です。A function is the primary concept in Azure Functions. 関数には 2 つの重要な要素が含まれています。さまざまな言語で記述できるコードと、いくつかの構成、つまり function.json ファイルです。A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. コンパイル式の言語の場合、この構成ファイルはコード内の注釈から自動的に生成されます。For compiled languages, this config file is generated automatically from annotations in your code. スクリプト言語の場合は、構成ファイルを自分で用意する必要があります。For scripting languages, you must provide the config file yourself.

function.json ファイルには、関数のトリガー、バインド、その他の構成設定を定義します。The function.json file defines the function's trigger, bindings, and other configuration settings. すべての関数には、1 つだけトリガーがあります。Every function has one and only one trigger. ランタイムはこの構成ファイルを使用して、監視対象のイベントを特定し、関数の実行との間でデータを渡したりデータを受け取ったりする方法を判断します。The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. 以下に function.json ファイルの例を示します。The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

詳しくは、「Azure Functions でのトリガーとバインドの概念」をご覧ください。For more information, see Azure Functions triggers and bindings concepts.

bindings プロパティで、トリガーとバインドの両方を構成します。The bindings property is where you configure both triggers and bindings. 各バインドは、いくつかの一般的な設定と、バインドの特定の種類に固有の設定を共有します。Each binding shares a few common settings and some settings which are specific to a particular type of binding. すべてのバインドには次の設定が必要です。Every binding requires the following settings:

プロパティProperty 値/型Values/Types 説明Comments
type stringstring バインドの種類。Binding type. たとえば、「 queueTrigger」のように入力します。For example, queueTrigger.
direction "in"、"'out"'in', 'out' バインドが関数への受信データか、関数からの送信データかを示します。Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring 関数のバインドされたデータに使用される名前。The name that is used for the bound data in the function. C# の場合は引数の名前です。JavaScript の場合はキー/値リストのキーです。For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

関数アプリFunction app

関数アプリからは、関数が実行される、Azure における実行コンテキストが提供されます。A function app provides an execution context in Azure in which your functions run. そのため、これが関数のデプロイと管理の単位となります。As such, it is the unit of deployment and management for your functions. 関数アプリは、まとめて管理、デプロイ、およびスケールされる 1 つまたは複数の個々の関数で構成されます。A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. 関数アプリ内のすべての関数は、同じ料金プラン、デプロイ方法、およびランタイム バージョンを共有します。All of the functions in a function app share the same pricing plan, deployment method, and runtime version. 関数を整理し、まとめて管理する方法として関数アプリを考えてください。Think of a function app as a way to organize and collectively manage your functions. 詳しくは、関数アプリの管理方法に関する記事をご覧ください。To learn more, see How to manage a function app.

注意

関数アプリ内のすべての関数は、同じ言語で作成する必要があります。All functions in a function app must be authored in the same language. Azure Functions ランタイムの以前のバージョンでは、これは必須ではありませんでした。In previous versions of the Azure Functions runtime, this wasn't required.

フォルダー構造Folder structure

特定の関数アプリ内のすべての関数のコードは、ホスト構成ファイルと 1 つ以上のサブフォルダーを含むルート プロジェクト フォルダーにあります。The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. 各サブフォルダーには、個別の関数のコードが含まれています。Each subfolder contains the code for a separate function. フォルダー構造は、次の図のように表示されます。The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

Functions ランタイムのバージョン 2.x では、関数アプリ内のすべての関数が同じ言語スタックを共有する必要があります。In version 2.x of the Functions runtime, all functions in the function app must share the same language stack.

host.json ファイルにはランタイム固有の構成が含まれています。このファイルは関数アプリのルート フォルダーにあります。The host.json file contains runtime-specific configurations and is in the root folder of the function app. bin フォルダーには、関数アプリに必要なパッケージやその他のライブラリ ファイルが含まれています。A bin folder contains packages and other library files that the function app requires. 関数アプリ プロジェクトの言語固有の要件を参照してください。See the language-specific requirements for a function app project:

上記は、関数アプリの既定の (そして推奨される) フォルダー構造です。The above is the default (and recommended) folder structure for a Function app. 関数のコードのファイルの場所を変更するには、function.json ファイルの scriptFile セクションを変更します。If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. また、パッケージ デプロイを使用して Azure の関数アプリにプロジェクトをデプロイすることもお勧めします。We also recommend using package deployment to deploy your project to your function app in Azure. 継続的インテグレーションとデプロイや Azure DevOps など、既存のツールを使用することもできます。You can also use existing tools like continuous integration and deployment and Azure DevOps.

注意

パッケージを手動でデプロイする場合は、必ず host.json ファイルと関数フォルダーを直接 wwwroot フォルダーにデプロイします。If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. デプロイに wwwroot フォルダーを含めないでください。Do not include the wwwroot folder in your deployments. そうしないと、wwwroot\wwwroot フォルダーができてしまいます。Otherwise, you end up with wwwroot\wwwroot folders.

ローカル ツールの使用と公開Use local tools and publishing

関数アプリは、Visual StudioVisual Studio CodeIntelliJEclipseAzure Functions Core Tools など、さまざまなツールを利用して作成し、公開できます。Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. 詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。For more information, see Code and test Azure Functions locally.

Azure portal で関数を編集する方法How to edit functions in the Azure portal

Azure portal に組み込まれている関数エディターを使用すると、コードと function.json ファイルを直接インラインで更新できます。The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. これは、軽微な変更や概念実証の場合にのみお勧めします。ベスト プラクティスは、VS Code などのローカル開発ツールを使うことです。This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

並列実行Parallel execution

シングル スレッドの関数ランタイムが処理できるより速く複数のトリガー イベントが発生する場合、ランタイムは関数を並列で複数回呼び出す場合があります。When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. 関数アプリが従量課金ホスティング プランを使用している場合、関数アプリは自動的にスケールアウトできます。If a function app is using the Consumption hosting plan, the function app could scale out automatically. アプリが従量課金ホスティング プランと標準の App Service ホスティング プランのどちらで実行されていても、関数アプリの各インスタンスは、複数の同時関数呼び出しを、複数のスレッドを使用して並列に処理します。Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. 各関数アプリ インスタンスでの同時関数呼び出しの最大数は、使用されるトリガーの種類と、関数アプリ内の他の関数によって使用されるリソースに応じて異なります。The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Functions ランタイムのバージョン管理Functions runtime versioning

FUNCTIONS_EXTENSION_VERSION アプリ設定を使用して、Functions ランタイムのバージョンを構成できます。You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. たとえば、"~2" の値は、Function App がそのメジャー バージョンとして 2.x を使用することを示します。For example, the value "~2" indicates that your Function App will use 2.x as its major version. Function App は、リリースされたときにそれぞれの新しいマイナー バージョンにアップグレードされます。Function Apps are upgraded to each new minor version as they are released. お使いの関数アプリの正確なバージョンを表示する方法など、詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」をご覧ください。For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

リポジトリRepositories

Azure Functions のコードはオープン ソースであり、GitHub リポジトリに保存されています。The code for Azure Functions is open source and stored in GitHub repositories:

バインドBindings

サポートされるすべてのバインドを次の表に示します。Here is a table of all supported bindings.

この表は、Azure Functions の 2 つのメジャー バージョンのランタイムでサポートされているバインディングを示しています。This table shows the bindings that are supported in the two major versions of the Azure Functions runtime:

種類Type 1.x1.x 2.x12.x1 トリガーTrigger 入力Input OutputOutput
Blob StorageBlob storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP と WebhookHTTP & webhooks
IoT HubIoT Hub
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
イベント
Microsoft Graph
events
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table StorageTable storage
TimerTimer
TwilioTwilio

1 2.x では、HTTP と Timer を除くすべてのバインドを登録する必要があります。1 In 2.x, all bindings except HTTP and Timer must be registered. バインディング拡張機能を登録する」を参照してください。See Register binding extensions.

バインドが原因のエラーが発生している場合は、Having issues with errors coming from the bindings? Azure Functions のバインド エラー コードに関するドキュメントを参照してください。Review the Azure Functions Binding Error Codes documentation.

問題の報告Reporting Issues

ItemItem 説明Description LinkLink
ランタイムRuntime スクリプト ホスト、トリガー、バインド、言語のサポートScript Host, Triggers & Bindings, Language Support 問題のファイリングFile an Issue
テンプレートTemplates 作成テンプレートに関するコードの問題Code Issues with Creation Template 問題のファイリングFile an Issue
ポータルPortal ユーザー インターフェイスまたはエクスペリエンスの問題User Interface or Experience Issue 問題のファイリングFile an Issue

次の手順Next steps

詳細については、次のリソースを参照してください。For more information, see the following resources: