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 の概要」を既に読んでいて、トリガー、バインド、JobHost ランタイムなどの WebJobs SDK の概念を熟知していることを前提として書かれています。This article assumes that you've already read the Azure Functions overview and are familiar with WebJobs SDK concepts such as triggers, bindings, and the JobHost runtime. Azure Functions は WebJobs SDK が基になっています。Azure Functions is based on the WebJobs SDK.

関数のコードFunction code

関数 は Azure Functions の主要な概念です。A function is the primary concept in Azure Functions. 好みの言語を選択して関数のコードを記述し、コードと構成ファイルを同じフォルダーに保存します。You write code for a function in a language of your choice and save the code and configuration files in the same folder. 構成の名前は function.json で、JSON 構成データを格納します。The configuration is named function.json, which contains JSON configuration data. さまざまな言語がサポートされており、各言語はその言語での作業向けに最適化された少しずつ異なるエクスペリエンスを備えています。Various languages are supported, and each one has a slightly different experience optimized to work best for that language.

function.json ファイルは、関数バインドとその他の構成設定を定義します。The function.json file defines the function bindings and other configuration settings. ランタイムはこのファイルを使用して、監視対象のイベントを特定し、関数の実行との間でデータを渡したりデータを受け取ったりする方法を判断します。The runtime uses this file to determine the events to monitor and how to pass data into and return data from 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
        }
    ]
}

関数が実行されることを防ぐために、disabled プロパティを true に設定します。Set the disabled property to true to prevent the function from being executed.

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. 関数アプリは、Azure App Service でまとめて管理される 1 つまたは複数の個々の関数で構成されます。A function app is comprised of one or more individual functions that are managed together by Azure App Service. 関数アプリ内のすべての関数は、同じ料金プラン、継続的なデプロイ、およびランタイムのバージョンを共有します。All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. 関数を整理し、まとめて管理する方法として関数アプリを考えてください。Think of a function app as a way to organize and collectively manage your functions.

注意

Azure Functions ランタイムのバージョン 2.x より、関数アプリのすべての関数を同じ言語で作成する必要があります。Starting with version 2.x of the Azure Functions runtime, all functions in a function app must be authored in the same language.

ランタイムRuntime

Azure Functions ランタイム (つまりスクリプト ホスト) は基になるホストであり、イベントを待ち受け、データを収集して送信し、最終的にはコードを実行します。The Azure Functions runtime, or script host, is the underlying host that listens for events, gathers and sends data, and ultimately runs your code. この同じホストが WebJobs SDK によって使用されます。This same host is used by the WebJobs SDK.

ランタイムの HTTP トリガー要求を処理する Web ホストもあります。There is also a web host that handles HTTP trigger requests for the runtime. ホストを 2 つ持つことで、Web ホストによって管理されるフロントエンド トラフィックからランタイムを分離できます。Having two hosts helps to isolate the runtime from the front end traffic managed by the web host.

フォルダー構造Folder structure

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

wwwroot
 | - host.json
 | - mynodefunction
 | | - function.json
 | | - index.js
 | | - node_modules
 | | | - ... packages ...
 | | - package.json
 | - mycsharpfunction
 | | - function.json
 | | - run.csx
 | - bin
 | | - mycompiledcsharp.dll

host.json ファイルにはランタイム固有の構成が含まれています。このファイルは関数アプリのルート フォルダーにあります。The host.json file contains some runtime-specific configurations, and sits in the root folder of the function app. 使用可能な設定の詳細については、host.json のリファレンスに関するページを参照してください。For information about settings that are available, see the host.json reference.

関数にはそれぞれ、1 つ以上のコード ファイル、function.json 構成、およびその他の依存関係を含むフォルダーがあります。Each function has a folder that contains one or more code files, the function.json configuration, and other dependencies. C# クラス ライブラリ プロジェクトの場合、コンパイル済みのクラス ライブラリ (.dll) ファイルは bin サブフォルダーにデプロイされます。For a C# class library project, the compiled class library (.dll) file is deployed to the bin subfolder.

Azure で関数アプリに関数をデプロイするためにプロジェクトをセットアップするときは、このフォルダー構造をサイト コードとして扱うことができます。When setting-up a project for deploying functions to a function app in Azure, you can treat this folder structure as your site code. パッケージ デプロイを使用して Azure の関数アプリにプロジェクトをデプロイすることをお勧めします。We 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 フォルダーにデプロイします。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.

関数アプリ ファイルを更新する方法How to update function app files

Azure ポータルに組み込まれている関数エディターでは、 function.json ファイルと関数のコード ファイルを更新できます。The function editor built into the Azure portal lets you update the function.json file and the code file for a function. package.jsonproject.json などのその他のファイルや依存関係をアップロードまたは更新するには、その他のデプロイ方法を使用する必要があります。To upload or update other files such as package.json or project.json or dependencies, you have to use other deployment methods.

関数アプリは App Service 上で構築されるため、標準 Web アプリで利用できるデプロイ オプション はすべて、関数アプリでも利用できます。Function apps are built on App Service, so all the deployment options available to standard web apps are also available for function apps. ここでは、関数アプリ ファイルをアップロードまたは更新するための方法をいくつか紹介します。Here are some methods you can use to upload or update function app files.

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

関数アプリは、Visual StudioVisual Studio CodeIntelliJEclipseAzure Functions Core Tools など、さまざまなツールを利用して作成し、公開できます。Function apps can be authored and published using various 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.

継続的なデプロイContinuous deployment

Azure Functions の継続的なデプロイ」のトピックの手順に従ってください。Follow the instructions in the topic Continuous deployment for Azure Functions.

並列実行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 つのメジャー バージョンのランタイムでサポートされているバインディングを示します。The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

typeType 1.x1.x 2.x2.x トリガーTrigger 入力Input 出力Output
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
外部ファイル 2External File2
外部テーブル 2External Table2
HTTPHTTP 11
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
Events
Microsoft Graph
Events
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
Table StorageTable storage
TimerTimer 11
TwilioTwilio
WebhookWebhooks

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

2 実験的 — サポート対象外で、将来破棄される可能性があります。2 Experimental — not supported and might be abandoned in the future.

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

問題の報告Reporting Issues

項目Item 説明Description リンクLink
ランタイム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: